Alternate Versification

From CrossWire Bible Society

Jump to: navigation, search

Disclaimer: Alternate versification support, though preliminarily implemented, is not yet complete in SWORD.



Alternate versification is abbreviated as av11n and covers both canon and versification different from KJV canon and versification previously default and only option in CrossWire applications.

As of SWORD 1.5.11, there was only one supported canon and versification: The KJV Old and New Testaments. This is represented in canon.h as a fixed, hard-coded system.

Alternate versifications mean ultimately to allow Bible texts with arbitrary canon or versification schemes to coexist peacefully on the same SWORD installation and (ultimately) to map cleanly between each other via cross references or parallel display.

There are technically 2 routes to support this under development:

  1. ripping out the hardcoded KJV canon.h offsets and replacing them with VerseMgr, which allows registration of canon.h-like v11n systems.
  2. genbook Bibles

Both these routes have been under development and 2 requires 1.

  1. has been completed and included from Sword 1.6.0.
  2. is partially supported by Sword 1.6.x.


Up until 1.5.11, the canon and the versification were hard coded into the engine in the form of the file canon.h, which offered book names and chapter + verse offsets to the engine. The new approach is that:

  1. Each Bible module will carry a .conf entry identifying its versification from an supported list of versification systems. Without this identification, the versification system will default to "KJV" for backward compatibility.
  2. The engine will have, for each major canon and versification variety, a new header file similar to the previous canon.h.
  3. On system start, the engine will load, for each open KJV-divergent module, the relevant data presented in the relevant canon_{Versification].h into a table held in memory.
  4. Subsequently, the relevant module will be accessible via the usual methods - which have not changed from 1.5.11.
  5. What does not work anymore is to assume that a book or chapter has a set (fixed) number of verses. Instead, 1.6.0 introduces new methods VerseKey::getChapterMax() and VerseKey::getVerseMax() to provide the relevant information for a given module--replacing VerseKey::books[testament][book].chapmax and .versemax members.
  6. Similarly VerseKey::getBookName() and VerseKey::getBookAbbrev() replace the previous const char *name and const char *prefAbbrev respectively.
  7. At a later stage (>1.6.0) the engine will allow for GenBook Bibles to automatically create arbitrary versification tables on the fly.
  8. The final step (in >1.6.0) will be to allow mappings between versification schemes to allow cross-referencing and parallel display of corresponding passages.

GenBook Bibles

GenBook Bibles are Bibles stored in GenBook format. They are accessed via VerseKey, which in turn calls TreeKey.

The role of GenBook Bibles will mainly be to allow alternative versifications and canons over and above those provided by alternative canon header files.

SWORD Versification Tools

The primary versification tools are:

A secondary but relevant diagnostic tool is:

How to Create Modules with Alternative Versifications

  1. Set the relevant entries in the configuration file
  2. If your module uses a versification or canon not yet present in SWORD you might have to create a canon header file. Sword tools contain relevant scripts. Please be aware that we will not hard code every versification under the sun but only select and important ones. If your scheme is not one of those you will need either accept the limitations of any chosen existing one or go down the route of a GenBook Bible. Discuss on sword-devel what you are planning to do and you will get appropriate advice.
  3. The importers work as usual. You specify a versification for the text to the import utility (imp2vs or osis2mod). It will pass the v11n value to the SWText constructor, which will instruct it to use the specified v11n.
  4. Append works as usual. Append pertains to whether a text is overwritten or appended to, so its use can affect the stored order of verses, but won't affect where the engine thinks they belong for access/display purposes.
  5. Each v11nspecify a book order, so different traditions that vary with respect to book order would have to be represented by different v11n definitions.

What happens to verses that fall outside the specified v11n?

During module making, what happens to verses in the source text that fall outside the specified v11n?

There are a variety of v11n schemes which can be specified when you import a module. Based on your selection, the tool will append extra verses to the previous canonical verse that has already been assigned content. Extra verses in a canonical chapter will be assigned to the last canonical verse that has been assigned content. Extra chapters in a canonical book will be assigned to the last canonical verse of the previous chapter that has been assigned content. Non-canonical books will be ignored or cause an error. The content for extra chapters and/or extra verses is appended as text only, without references.

What about v11ns in which the canonical Psalm title is verse 1 ?

Although this is common in some traditions (e.g. many French Bibles), the SWORD engine does not yet have a suitable av11n for such French Bibles.

Supported versification systems







Placeholder for planned additions in next release. See French versifications.

JSword support of av11n

The latest release of JSword now supports av11n. The latest version of And Bible (v1.9.0) has been released to exercise this capability.

Front-end support for av11n ?

In theory, there are several aspects to consider when looking at front-end application support for alternate versification:

  1. Can the module be installed at all, without causing the application to crash?
  2. Can an installed module with av11n be properly displayed with all of its content? Or with only some of its content?
  3. Can the application readily navigate to books and chapters that are outside the default v11n?
  4. For av11ns with a different book order, can the module be scrolled in the defined av11n book order?
  5. Can the application display two or more modules with different versifications in parallel mode (or as an interlinear view) with proper alignment of the text content?

Front-end support for av11n is at various stages of development. The av11n support status of some of the more popular front-ends is tabled here.

See also


Personal tools