summaryrefslogtreecommitdiff
path: root/doc/context/sources/general/manuals/publications/publications-customize.tex
blob: 1a2ab70400979ff92c3c39b7f4cb71b9e04f1c81 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
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