summaryrefslogtreecommitdiff
path: root/doc/context/sources/general/manuals/publications/publications-customize.tex
diff options
context:
space:
mode:
Diffstat (limited to 'doc/context/sources/general/manuals/publications/publications-customize.tex')
-rw-r--r--doc/context/sources/general/manuals/publications/publications-customize.tex659
1 files changed, 659 insertions, 0 deletions
diff --git a/doc/context/sources/general/manuals/publications/publications-customize.tex b/doc/context/sources/general/manuals/publications/publications-customize.tex
new file mode 100644
index 000000000..1a2ab7040
--- /dev/null
+++ b/doc/context/sources/general/manuals/publications/publications-customize.tex
@@ -0,0 +1,659 @@
+\environment publications-style
+
+\startcomponent publications-customize
+
+\startchapter[title=Custom renderings,reference=ch:custom]
+
+\startsection[title=Introduction]
+
+The rendering of citations and bibliography lists is highly configurable and
+custom rendering schemes can be added. The details can get quite complicated so
+we will begin with a description of how citation variations can be used in the
+running text, followed by a description on how to control the rending of the
+associated bibliography list.
+
+\startaside
+Loading the specification file defines a \Index {namespace}, say \TEXcode {apa},
+containing subspaces \TEXcode {apa:list} and \TEXcode {apa:cite} as well as
+variants, for example \TEXcode {apa:cite:authoryear}, allowing \emphasis
+{parameters} to be tuned independently for each form. This insures independence
+but can get somewhat confusing. Most users will not encounter any problems as all
+of this setup work is taken care of in the specification file; only those needing
+to fine|-|tune specific settings need to better understand the underlying
+mechanism.
+
+The rendering of the variants can be adjusted through \Cindex {setupbtx} in the
+appropriate \Index {namespace}, for example modifying (or suppressing)
+parenthesis or activating or deactivating interaction \Index {hyperlink}s. Beyond
+the settings of parameters in the appropriate \Index {namespace},
+\emphasis{setups} are used to perform the actual renderings of citations as well
+as of lists. One must be aware of \Index {namespace} \Index {isolation} and
+\Index {inheritance} as well as fall|-|back when attempting to make changes.
+
+When small modifications on one of the pre|-|defined specifications are desired,
+we suggest loading the specification and then adjusting certain parameters and
+overloading the appropriate setups. Eventually, a new specification might be
+necessary.
+\stopaside
+
+A common setup will enable or disable interaction:
+
+\startbuffer
+\setupbtx [interaction=start]
+\stopbuffer
+
+\cindex{setupbtx}
+
+\typeTEXbuffer
+
+Notice that this is applied to the root \Index {namespace}.
+
+Other root|-|\Index {namespace} parameters that have been used are \TEXcode
+{specification}, \TEXcode {dataset} and \TEXcode {numbering}.
+
+Associated with \TEXcode {specification} is an additional parameter \TEXcode
+{default=} that defines a fall|-|back specification to be used to complete a
+derived specification. \startfootnote For example, a variant on a specification
+can be defined by only addressing specific differences, for example \index
+{style+RMP}\TEXcode {specification=rmp} would be associated with \index
+{style+APS}\TEXcode {default=aps}, as this describes a style used by the journal:
+The Review of Modern Physics, mostly based on the style of the American Physical
+Society. \stopfootnote
+
+Further \quote {low|-|level} formatting parameters, mostly dealing with the
+formatting of names, are also defined by default in the root namespace. These are
+listed in \in {table} [tab:setupbtx]. Some might eventually be redefined by the
+specification in other namespaces, and may with good reason differ by context:
+between the \TEXcode {[cite]} and \TEXcode {[list]} namespaces, for example.
+
+In order to insure the independence of specifications, each one defines its own
+root namespace, for example \TEXcode {[default]}, \TEXcode {[apa]} or \TEXcode
+{[aps]}, inheriting its settings from root, upon which are built the other
+namespaces.
+
+\startplacetable
+ [reference=tab:setupbtx,
+ list={\TEXcode {\setupbtx} low|-|level formatting parameters},
+ title={\Cindex {setupbtx} low|-|level formatting parameters. Some may be
+ redefined differently in the \TEXcode {cite} and \TEXcode {list} namespaces.}]
+\starttabulate [|Tr|Tl|p|]
+ \NC specification \NC default \NC default style \NC \NR
+ \NC default \NC <null> \NC fall|-|back style \NC \NR
+ \NC interaction \NC start \NC active hyperlinks \NC \NR
+ \NC separator \NC \Cindex{btxsemicolon} \NC between multiple references \NC \NR
+ \NC separator:firstnames \NC \Cindex{btxspace} \NC between first names \NC \NR
+ \NC separator:juniors \NC \Cindex{btxspace} \NC before \quote{juniors} \NC \NR
+ \NC separator:vons \NC \Cindex{btxspace} \NC before \quote{vons} \NC \NR
+ \NC separator:initials \NC \Cindex{btxspace} \NC between initials \NC \NR
+ \NC stopper:initials \NC . \NC initialization truncation symbol \NC \NR
+ \NC separator:invertedinitials \NC \Cindex{btxcomma} \NC before initials, inverted form \NC \NR
+ \NC separator:invertedfirstnames \NC \Cindex{btxcomma} \NC before first names, inverted form \NC \NR
+ \NC authorconversion \NC normal \NC normal, normalshort, inverted, invertedshort, name (see \in{table}[tab:authorconversion]) \NC \NR
+ \NC monthconversion \NC number \NC month, month:mnen (see \TEXcode {\convertnumber}) \NC \NR
+ \NC journalconversion \NC normal \NC normal, abbreviated(short?) \NC \NR
+ \NC etallimit \NC 3 \NC length of author list \NC \NR
+ \NC etaldisplay \NC 3 \NC length of truncated author list \NC \NR
+ \NC \tindex{others}otherstext \NC et al. \NC author list truncation text \NC \NR
+ \NC separator:names:2 \NC \Cindex{btxcomma} \NC separates multiple names \NC \NR
+ \NC separator:names:3 \NC \Cindex{btxcomma} \NC before last name in a list \NC \NR
+ \NC separator:names:4 \NC \Cindex{btxcomma} \NC between only two names \NC \NR
+ \NC separator:2 \NC \Cindex{btxsemicolon} \NC separates multiple objects \NC \NR
+ \NC separator:3 \NC \Cindex{btxsemicolon} \NC before last object in a list \NC \NR
+ \NC separator:4 \NC \Cindex{btxsemicolon} \NC between only two objects \NC \NR
+\stoptabulate
+\stopplacetable
+
+\cindex {setupbtx}
+\showsetup[setupbtx]
+
+\stopsection
+
+\startsection
+ [reference=sec:customcite,
+ title=Custom citation renderings]
+
+\startsubsubject [title=Parameters]
+
+Citation variants are mostly controlled though adjustment of their parameters
+within the appropriate \Index {namespace}. For example, the cite variant \cindex
+{cite}\TEXcode {\cite[num]} would be addressed through
+
+
+\cindex {setupbtx}
+
+\startTEX
+\setupbtx[default:cite:num]
+\stopTEX
+
+for the \TEXcode {default} specification, or alternately, through
+
+\cindex {setupbtx}
+
+\startTEX
+\setupbtx[apa:cite:num]
+\stopTEX
+
+for the \index {style+APA}\TEXcode {apa} specification. For example, superscript
+numbered citations in the \index {style+APS}\TEXcode {aps} specification could be
+obtained through
+
+\cindex{setupbtx}
+
+\startTEX
+\setupbtx[aps:cite:num][command=\high]
+\stopTEX
+
+Typical parameters (in addition to those listed in \in {table} [tab:setupbtx])
+are presented in \in {table} [tab:setupbtxcite].
+
+\startplacetable
+ [reference=tab:setupbtxcite,
+ location=force,
+ list= {\TEXcode{\setupbtx [cite]} parameters},
+ title={\cindex{setupbtx}\TEXcode{\setupbtx[cite]} parameters}]
+\starttabulate [|Tr|l|l|]
+\NC alternative \NC num \NC default cite form \NC \NR
+\NC left \NC \NC opening string \NC \NR
+\NC right \NC \NC closing string \NC \NR
+\NC inbetween \NC \Cindex{btxspace} \NC \NC \NR
+\NC range \NC \TEXcode{\endash} \NC \NC \NR
+\NC command \NC \NC \NC \NR
+\NC style \NC \NC \NC \NR
+\NC sorttype \NC normal \NC \NC \NR
+\NC compress \NC yes \NC \NC \NR
+\stoptabulate
+\stopplacetable
+
+A demonstration of how these parameters can be manipulated in an individual
+\TEXcode {\cite} call is shown in \in{table} [tab:authorconversion], which also
+illustrates the different ways of formatting names.
+
+\startplacetable
+ [title={\TEXcode{authorconversion}},
+ reference=tab:authorconversion]
+\starttabulate [|Tl|p|]
+\NC ac \NC \TEXcode{\cite[alternative=author,etallimit=,authorconversion=ac][article]} \NC \NR
+\HL
+\NC name \NC \cite[alternative=author,etallimit=,authorconversion=name] [article] \NC \NR
+\NC normal \NC \cite[alternative=author,etallimit=,authorconversion=normal] [article] \NC \NR
+\NC normalshort \NC \cite[alternative=author,etallimit=,authorconversion=normalshort] [article] \NC \NR
+\NC inverted \NC \cite[alternative=author,etallimit=,authorconversion=inverted] [article] \NC \NR
+\NC invertedshort \NC \cite[alternative=author,etallimit=,authorconversion=invertedshort][article] \NC \NR
+\stoptabulate
+\stopplacetable
+
+\stopsubsubject
+
+\startsubsubject [title=Setups]
+
+The next step in the customization of citation variants is through the overlaying
+of setups that handle the actual rendering of the citation. These rarely will
+need to be changed as most tuning can be done through the adjustment of
+parameters such as those given above. \startfootnote An exception is for special
+features, such as in the \index {style+APA}\TEXcode {apa} specification where a
+missing date is replaced by the notation \quotation {n..d.}. \stopfootnote
+
+It is to be pointed|-|out that original citation variants can be easily added. As
+an example, imagine that one might like to access the field \TEXcode {abstract}
+that is normally not rendered (like many other unused dataset fields). One would
+start by defining a parameter \Index {namespace} inheriting from the \TEXcode
+{cite} \Index {namespace}, followed by a simple setup (remember that the \TEXcode
+{apa} specification is currently active):
+
+\startbuffer
+\definebtx[apa:cite:abstract][apa:cite]
+\startsetups btx:apa:cite:abstract
+ \btxcitereference
+ \btxflush{abstract}
+\stopsetups
+
+\startparagraph [style=slanted]
+\cite[abstract][boekplan::Hagen2010metafun]
+\stopparagraph
+\stopbuffer
+
+\cindex{definebtx}
+\cindex{btxcitereference}
+\cindex{btxflush}
+\cindex{cite}
+\cindex{startsetups}
+\cindex{stopsetups}
+\tindex{::}
+
+\typeTEXbuffer
+
+\getbuffer
+
+If no special manipulation is known, the field with the same name (if found) will
+be simply flushed. This will only work, however, if the field is identified as
+either required or optional, that is not flagged as ignored in \in {table}
+[tab:fields] (see also \in {Appendix} [ch:datasetfields]). For the sake of the
+present manual, the field \BTXcode{abstract} has been defined as optional for the
+\BTXcode{book} entry in the specification's lua file.
+
+But don't expect too much support for such low|-|level rendering control.
+
+\stopsubsubject
+
+\stopsection
+
+\startsection[title=Custom list renderings,reference=sec:list]
+
+The rendering of lists is much more flexible and configurable than the rendering
+of citation markers. This is because the nature of data to be rendered requires
+many tools and helpers to deal with all of the eventual contingencies inherent in
+describing bibliographical references.
+
+The same \quote {low|-|level} formatting parameters used for citations also apply
+for \TEXcode {list} \Index {namespace}s, although their settings may differ from
+those of the citations. Consider the \index {style+APA}\TEXcode {apa} style that
+specifies the use of \tindex {others} \quotation {et al.} in citations but
+\quotation {\textellipsis} in the bibliography list, \quotation {and} in
+citations but \quotation {\textampersand} in lists, last names only in \TEXcode
+{authoryear} citations, etc.
+
+\startsubsubject[title=Bibliographies as lists]
+
+At another level of detail, the bibliography list is rendered in a standard
+\CONTEXT\ list environment that can be setup using the command \Cindex
+{setupbtxlist} (which is only \Cindex {setuplist} working in the protected
+bibliography environment: \TEXcode {btx}). The root settings, appropriate for a
+numbered bibliography list, are:
+
+\cindex{setuplist}
+
+\startTEX
+\setuplist
+ [btx]
+ [prefixstopper=:,
+ state=start,
+ alternative=a,
+ before=\blank,
+ after=\blank]
+\stopTEX
+
+whereas an unnumbered, author|-|year sorted list might have:
+
+\cindex{setupbtxlist}
+
+\startTEX
+\setupbtxlist
+ [apa]
+ [alternative=paragraph,
+ margin=3\emwidth]
+\stopTEX
+
+as already seen in \in {Chapter} [ch:renderings]. The above demonstrate that
+\cindex {setupbtxlist}\TEXcode {\setupbtxlist[name]} is just a synonym for
+\cindex {setuplist}\TEXcode {\setuplist[btx:name]}.
+
+\cindex {setupbtxlist}
+\showsetup[setupbtxlist]
+
+\cindex {setuplist}
+\showsetup[setuplist] % too big for the page!
+
+Each specification will have its own list \Index {namespace} (\TEXcode
+{btx:specification}) that inherits from the root \TEXcode {btx} \Index
+{namespace}. This model of inheritance holds true for the citation and list
+details as described earlier.
+
+\stopsubsubject
+
+\startsubsubject[title=Setups]
+
+The layout of the information presented in the list is entirely controlled
+through setups, with the help of some underlying \LUA\ code organizing the data
+stored in the dataset. These setups rely on further setups as well as some
+convenient helpers or defined special commands. To understand this, consider as
+an illustration the setups defined for the \TEXcode {default} specification
+(taken from the source file \type {publ-imp-default.mkvi}):
+
+\cindex{startsetups}
+\cindex{stopsetups}
+\cindex{texdefinition}
+\cindex{btxperiod}
+
+\startTEX
+\startsetups btx:default:list:book
+ \texdefinition{btx:default:author}
+ \texdefinition{btx:default:title}
+ \texdefinition{btx:default:editionset}
+ \texdefinition{btx:default:publisher}
+ \texdefinition{btx:default:year}
+ \btxperiod
+\stopsetups
+\stopTEX
+
+\cindex{startsetups}
+\cindex{stopsetups}
+\cindex{texdefinition}
+\cindex{btxperiod}
+
+\startTEX
+\startsetups btx:default:list:article
+ \texdefinition{btx:default:author}
+ \texdefinition{btx:default:title}
+ \texdefinition{btx:default:journal}
+ \texdefinition{btx:default:year}
+ \btxperiod
+\stopsetups
+\stopTEX
+
+This specification could be extended to handle publication categories other than
+\TEXcode {book} and \TEXcode {article} simply by defining an additional setup,
+\emphasis {almost} (see the following).
+
+\stopsubsubject
+
+\startsubsubject[title=\LUA\ tables]
+
+The qualification above is to bring attention to an important \LUA\ component
+that is defined in a companion source file: \TEXcode {publ-imp-default.lua}. This
+file defines a hierarchical \LUA\ table containing an element \TEXcode
+{categories} that itself contains the entries \TEXcode {book}, \TEXcode
+{article}, etc. The entries for each \Index {category} themselves contain the
+entries \index {field+required}\TEXcode {required} and \index
+{field+optional}\TEXcode {optional} listing the dataset fields that are to be
+used. Any field that is not declared either \index {field+required}required or
+\index {field+optional}optional will be \index {field+ignored}\emphasis
+{ignored}. \startfootnote The difference between \index {field+required}\quote
+{required} and \index {field+optional}\quote {optional} is only a question of
+diagnostics as described in the Appendices. Their functional meaning is rather
+\quote {handled} in contrast to \index {field+ignored}\quote {ignored}.
+\stopfootnote Note that if a category is \emphasis {not} declared in this \LUA\
+table, than \emphasis {all} of its fields will be considered \index
+{field+optional}\quote {optional}. Thus, ignoring this level of control and
+simply defining additional setups might be sufficient for most use.
+
+The advantage of the \LUA\ table is a great simplification of the logic of the
+helper setups. Fields that might be irrelevant for one category yet used in
+another can be tested; if the field is to be \index {field+ignored}\quote
+{ignored}, than a fetch will return nothing. Indeed, the above two setups could
+be replaced by a single setup as \TEXcode {journal} is irrelevant and thus
+ignored for the \Index {category} \TEXcode {book} but not for the \Index
+{category} \TEXcode {journal}. However, an oversimplification such as just
+described would be rather confusing and would not extend well to a more complete
+specification (such as \index {style+APA}\TEXcode {apa}) handling many different
+categories.
+
+Note, as well, that fields \index {field+ignored}\quote {ignored} for certain
+\index {category}categories in the bibliography list will also be ignored in
+citations. For example, choosing to ignore \TEXcode {title} in some \Index
+{category}, say \TEXcode {article}, will cause \TEXcode {\cite[title]} to fail
+(return nothing) when referring to an entry of that category. In the example
+shown in \in {section} [sec:customcite], the abstract field would not return
+anything if it did not appear in the \LUA\ table.
+
+This \LUA\ table also defines (as \index {type}\quote {types}, outside of \index
+{category}\quote {categories}) what fields are to be interpreted as names, what
+fields are to eventually be interpreted as a number or range of numbers, and what
+fields are to be interpreted specially as a (semi|-|colon) separated list (for
+example, \TEXcode {keywords}).
+
+A more subtle feature of the \LUA\ level is the notion of \index {set}\quote
+{sets}. Related fields can be grouped into sets, for example.
+
+\startLUA
+book = {
+ sets = {
+ author = { "author", "editor", },
+ editionset = { "edition", "volume", "number" },
+ },
+},
+\stopLUA
+
+A fetch of the set \text {author} (i.e. \cindex {btxflush}\TEXcode
+{\btxflush{author}}, to be described below) will return the \text {author} field
+if this is present, otherwise it will return the \TEXcode {editor} field, for an
+edited book, for example. Testing for the presence of a set in a data entry is
+equivalent to a logical \emphasis{or} in testing for the presence of each element
+of the set. This mechanism can appear confusing yet it has served to greatly
+simplify the logic of the various setups. \startfootnote Sometimes a \Index {set}
+will be defined using the same name as its first element, sometimes it can be
+given a unique name (typically ending in \quote {set}). \stopfootnote
+
+The \TEXcode {author} set is a bit special given its use in the \TEXcode
+{authoryear(s)}, \TEXcode {authornum}, and \TEXcode {short} citation variants.
+This \Index {set} determines what fields are to enter into the citation \Index
+{tag}s, a generalization of the notion of author. For example, in the \index
+{style+APA}APA style, this set would include the author, editor, or title fields
+or an article and the author, editor, publisher, or title fields for a book and
+still other sequences of fields for other categories of publications.
+
+\stopsubsubject
+
+\startsubsubject[title=Defined helpers]
+
+Fetching data from the dataset is performed using the command encountered above:
+\TEXcode {\btxflush}. If the field (or no elements of the set) is not found, then
+this command will return nothing.
+
+\cindex {btxflush}
+\showsetup[btxflush]
+
+Alternately, one might need to explicitly test for the presence or absence of the
+field, in order to conditionally include punctuation or not to trigger
+separators, for example. Three test macros have been defined:
+
+\startplacetable [title=Conditional macros]
+\cindex{btxdoifelse}
+\cindex{btxdoif}
+\cindex{btxdoifnot}
+\startTEX
+\btxdoifelse{fieldname}{action when found}{action when not found}
+\btxdoif {fieldname}{action when found}
+\btxdoifnot {fieldname} {action when not found}
+\stopTEX
+\stopplacetable
+
+In many cases, the readability can be improved by using further setups, for
+instance:
+
+\cindex{btxdoifelse}
+\cindex{fastsetup}
+
+\startTEX
+\btxdoifelse {author} {
+ \fastsetup{btx:apa:author:yes}
+} {
+ \fastsetup{btx:apa:author:nop}
+}
+\stopTEX
+
+Note that the choice between using setups (defined through \Cindex {startsetups}
+\unknown\ \Cindex {stopsetups} and recalled through \Cindex {fastsetup}) versus
+textdefinitions without arguments (defined through \Cindex {starttexdefinition}
+\unknown\ \Cindex {stoptexdefinition} and recalled through \Cindex
+{texdefinition}) is a question of taste and opportunity. One should keep in mind
+not get carried away abusing setups and texdefinitions for simple code fragments
+that are to be used uniquely.
+
+An extra conditional is available for testing interactivity:
+
+\cindex{btxdoifelseinteraction}
+
+\startTEX
+\btxdoifelseinteraction{action when true}{action when false}
+\stopTEX
+
+There is also a conditional \Cindex {btxinteractive} which is more efficient,
+although in practice efficiency is not so important here.
+
+\blank
+
+In addition to \Index {set}s, there are derived or special fields such as
+\TEXcode {num} (for the reference number), \TEXcode {suffix} (to be appended in
+some cases to \TEXcode {year}), \TEXcode {short} (for names), etc. These all can
+be retrieved using \Cindex {btxflush}. Sometimes one might want to force access
+to a particular data field (such as \TEXcode {author}) rather than eventually an
+element of a \Index {set} having the same name. There are three basic commands to
+flush data and a few others to flush associated information:
+
+\startplacetable [title=Field access macros]
+\starttabulate[|l|l|]
+\NC \Cindex{btxflush} \NC fetch a derived or explicit field \NC \NR
+\NC \Cindex{btxdetail} \NC fetch a derived field (e.g.\ \TEXcode {short}) \NC \NR
+\NC \Cindex{btxfield} \NC fetch a explicit field (e.g.\ \TEXcode {year}) \NC \NR
+\NR
+\NC \Cindex{btxfieldname} \NC fetch the field name \NC \NR
+\NC \Cindex{btxfieldtype} \NC fetch the field type (e.g.\ \TEXcode{author}, \TEXcode{range}, \unknown \NC \NR
+\NC \Cindex{btxfoundname} \NC fetch the field name of a set (or field) \NC \NR
+\NC \Cindex{btxfoundtype} \NC fetch the field type of a set (or field) \NC \NR
+\stoptabulate
+\stopplacetable
+
+A few helpers are provided to inject symbols but also take care of leading and
+trailing spaces: \startfootnote These make use of the \CONTEXT\ command \Cindex
+{removeunwantedspaces}. There is also a \quote {secret} command \TEXcode
+{\removepunctuation} that can be quite useful, but also lead to undesired
+consequences when wielded blindly! \stopfootnote
+
+\startplacetable [title=Punctuation macros]
+\starttabulate[|||]
+\NC \Cindex{btxspace} \NC before \btxspace after \NC \NR
+\NC \Cindex{btxnbsp} \NC before \btxnbsp after \NC \NR
+\NC \Cindex{btxnobreakspace} \NC before \btxnobreakspace after (same as \Cindex {btxnbsp}) \NC \NR
+\NC \Cindex{btxperiod} \NC before \btxperiod after \NC \NR
+\NC \Cindex{btxcomma} \NC before \btxcomma after \NC \NR
+\NC \Cindex{btxcommabreak} \NC before \btxcommabreak after (allows a line break) \NC \NR
+\NC \Cindex{btxleftparenthesis} \NC before \btxleftparenthesis after \NC \NR
+\NC \Cindex{btxrightparenthesis} \NC before \btxrightparenthesis after \NC \NR
+\NC \Cindex{btxrightparenthesiscomma} \NC before \btxrightparenthesiscomma after \NC \NR
+\NC \Cindex{btxrightparenthesisperiod} \NC before \btxrightparenthesisperiod after \NC \NR
+\NC \Cindex{btxleftbracket} \NC before \btxleftbracket after \NC \NR
+\NC \Cindex{btxrightbracket} \NC before \btxrightbracket after \NC \NR
+\NC \Cindex{btxrightbracketcomma} \NC before \btxrightbracketcomma after \NC \NR
+\NC \Cindex{btxrightbracketperiod} \NC before \btxrightbracketperiod after \NC \NR
+\stoptabulate
+\stopplacetable
+
+\stopsubsubject
+
+\starthiding
+
+Normally you can use \TEXcode {\btxfield} or \TEXcode {\btxflush} as derived
+fields just like analyzed author fields are flushed in a special way. There is
+experimental support for so called manipulators. You can for instance say this:
+
+\starttyping
+\btxflush{lowercase->title}
+\stoptyping
+
+A sequence of manipulators is applied to fetched field, where a sequence is one
+or more manipulators:
+
+\starttyping
+\btxflush{stripperiod->uppercase->title}
+\stoptyping
+
+Some actions are recognized (built|-|in) but you can also use actions from other
+namespaces, like in:
+
+\starttyping
+\btxflush{converters.Word -> title}
+\stoptyping
+
+Watch how we can use spaces around the \TEXcode {->} which is nicer for wrapped
+around usage. Eventually, we might put some more function in the default
+namespace.
+
+So, the previous example setup can be rewritten as:
+
+\starttyping
+\btxdoif {title} {
+ \bold{\btxfield{title}}
+ \btxcomma
+}
+\stoptyping
+
+There is a special command for rendering a (combination) of authors:
+
+\starttyping
+\btxflushauthor{author}
+\btxflushauthor{editor}
+\btxflushauthor[inverted]{editor}
+\stoptyping
+
+Instead of the last one you can also use:
+
+\starttyping
+\btxflushauthorinverted{editor}
+\stoptyping
+
+You can use a (configurable) default or pass directives: Valid directives are
+
+\starttabulate
+\NC \bf conversion \NC \bf rendering \NC \NR
+\HL
+\NC \TEXcode{inverted} \NC the Frog jr, Kermit \NC \NR
+\NC \TEXcode{invertedshort} \NC the Frog jr, K \NC \NR
+\NC \TEXcode{normal} \NC Kermit, the Frog, jr \NC \NR
+\NC \TEXcode{normalshort} \NC K, the Frog, jr \NC \NR
+\stoptabulate
+
+The list itself is not a list in the sense of a regular \CONTEXT\ structure
+related list. We do use the list mechanism to keep track of used entries but that
+is mostly because we can then reuse filtering mechanisms. The actual rendering of
+a reference and entry runs on top of so called constructions (other examples of
+constructions are descriptions, enumerations and notes).
+
+\showsetup[setupbtxlist]
+
+You need to be aware what command is used to achieve the desired result. For
+instance, in order to put parentheses around a number reference you say:
+
+\starttyping
+\setupbtxlistvariant
+ [num]
+ [left=(,
+ right=)]
+\stoptyping
+
+If you want automated width calculations, the following does the trick:
+
+\starttyping
+\setupbtxrendering
+ [default]
+ [width=auto]
+\stoptyping
+
+but if you want to control it yourself you say something:
+
+\starttyping
+\setupbtxrendering
+ [width=none]
+
+\setupbtxlist
+ [default]
+ [width=3cm,
+ distance=\emwidth,
+ color=red,
+ headcolor=blue,
+ headalign=flushright]
+\stoptyping
+
+In most cases the defaults will work out fine.
+
+Normally the references are numbered using one counter for the whole document. If
+you want each list to have its own number, then you can set the \TEXcode
+{continue} parameter:
+
+\starttyping
+\setupbtxrendering[continue=no]
+\stoptyping
+
+In a similar fashion you can influence if references are included only once of in
+each list:
+
+\starttyping
+\setupbtxrendering[repeat=yes]
+\stoptyping
+
+\stophiding
+
+\stopsection
+
+\stopchapter
+
+\stopcomponent