\environment publications-style \startcomponent publications-rendering \startchapter[title=Renderings,reference=ch:renderings] \startsection [reference=sec:styles, title={Generating lists of publications}] A list of publications can be rendered at any place in the document, and multiple renderings can appear under certain limitations (according to \Index {scope}). The specification introduced previously defines the style of the rendering as well as what data it will contain. If you want to see what publications are in the database, the easiest way is to ask for a complete list: \startbuffer \usebtxdataset % illustrated again here [example] % although already loaded [mkiv-publications.bib] % in the previous chapter \definebtxrendering [example] % named rendering [apa] % parent namespace [dataset=example, group=examples] % group will be presented later \placelistofpublications % aka \placebtxrendering [example] % rendering defined above [method=dataset] % i.e. all entries \stopbuffer \cindex{definebtxrendering} \cindex{placelistofpublications} \cindex{placebtxrendering} \typeTEXbuffer The commands \Cindex {placelistofpublications} (that is just a synonym for \Cindex {placebtxrendering}) refer to a named rendering and accept a list of options (inherited from \Cindex {setupbtxrendering}). When applied to a named dataset (other than \TEXcode {default}), a named rendering needs to be associated through \Cindex {definebtxrendering} as is done here. Note that the define shown above explicitly inherits from a rendering named \TEXcode {apa} that was itself defined when loading the specification file. \startfootnote The rendering parent \index {style+APA}\TEXcode {[apa]} sets the parameters: \TEXcode {specification=apa,} \TEXcode {sorttype=authoryear,} and \TEXcode {numbering=no,} described below. It also sets various list parameters in a protected \TEXcode {apa} namespace to produce a \quote {hanging} bibliography list. \stopfootnote Had this inheritance not been specified, the new rendering would inherit default, minimal settings. This notion of inheritance will be further illustrated later. The bibliography list rendering of our example dataset, following the \index {style+APA}APA style, is: \getbuffer The rendering is a list whose appearance can be tuned, as any list in \CONTEXT. It is somewhat more complex to manage, though, because we can have not only many different standards but also many fields that can be set up. This means that there are several commands involved. As we saw demonstrated above, a rendering is defined and setup using the commands: \cindex{definebtxrendering} \showsetup{definebtxrendering} \cindex{setupbtxrendering} \showsetup{setupbtxrendering} A rendering is then placed using \Cindex {placebtxrendering}, a \CONTEXT\ command that accepts the same arguments as for its setup. Using \TEXcode {method=dataset}, as above, one renders the entire contents of the dataset. Normally, however, one would not use this \TEXcode {method} and place only a selection of entries that are to be used in the document, whereas the dataset may very well contain many other, unused references. The \TEXcode {method=global} or \TEXcode {method=local} option can be used to specify if this use is to be global for the entire document or else local to a structure element such as a part or a chapter. \cindex{placebtxrendering} \showsetup{placebtxrendering} \cindex{placelistofpublications} \showsetup{placelistofpublications} The rendering is a \TEXcode {list} and this reference list is numbered. These numbers can be displayed, or not, depending on the bibliography style specification through the use of the \index {numbering}\TEXcode {numbering=yes} or \TEXcode {no} parameter values. The \index {style+APA}APA style, illustrated above, normally does not number the bibliography list. The reference list is also \index {sorting}sorted, controlled by the parameter \TEXcode {sorttype}; here \TEXcode {sorttype=authoryear}, appropriate for the \index {style+APA}APA style, \Index {sorting} first by author list, then by publication year, then by title, finally by page. One can sort the list in many ways: for example \TEXcode {sorttype=index} will render the list in the order in which it was loaded into the dataset (see \in {table} [tab:sorttype] for an explanation of list sorting schemes). \startplacetable [location=force, title={\TEXcode {sorttype=}}, reference=tab:sorttype] \index{sorting} \starttabulate [|Tp(5.5em)|p(.75\textwidth)|] \HL \NC default\\none\\cite\\list \NC render the list in the order in which it was built, that is, in the order that references were selected from the dataset for inclusion in the list. \NC \NR \HL \NC dataset\\index \NC sort the list according to the dataset index, that is, in the order in that references were added to the dataset. \NC \NR \HL \NC reference \NC sort the list in alphabetical order of the citation \Index{tag}s of the dataset. Note that all entries missing tags get assigned the dataset index as their tag. \NC \NR \HL \NC key \NC sort the list in alphabetical order of the entry field \TEXcode {key} (traditionally used in \BIBTEX\ as an alternate sorting key). Falls back on the dataset index if no such field is present. \NC \NR \HL \NC short \NC sort the list in alphabetical order of the short tag (first three letters of the author name or first letter of the first three authors followed by the last two digits of the year). \NC \NR \HL \NC authoryear \NC sort the list in alphabetical order of the authors (or editors or publisher), then by publication year, then by title (or by journal and volume) and finally by page. \NC \NR \stoptabulate \stopplacetable As a concrete example, the rendering named \TEXcode {example} above inherits from the rendering instance named \TEXcode {apa} that is defined in the specification file as: \cindex{definebtxrendering} \startTEX \definebtxrendering [apa] [specification=apa, sorttype=authoryear, numbering=no] \stopTEX \startaside A more subtle characteristic of renderings is that one generally would not want a bibliography list to appear redundantly in a document as that would be confusing, unless of course it is desired that elements of the list reappear in later lists, for example when placing partial bibliographies at the end of each chapter and a complete bibliography list at the end of a book. One must specify \TEXcode {repeat=yes} in order to get multiple renderings of a bibliography list; otherwise, as they appear, entries get marked as placed and will be inhibited from being placed again elsewhere. \stopaside All renderings of bibliography lists such as the one shown earlier in this section also depend on a set of general list parameters that apply to each individual entry (a cited publication), as for any list item in \CONTEXT. These can be adjusted through the command \Cindex {setupbtxlist} (further described in \in {section} [sec:list], below). As an example, the \TEXcode {apa} specification file includes: \cindex{setupbtxlist} \startTEX \setupbtxlist [apa] [alternative=paragraph, width=fit, distance=.5em, margin=3em] \stopTEX Such settings (yielding a hanging list that would be inappropriate with a numbered bibliography list) get inherited from the \TEXcode {apa} namespace in the rendering that we named \TEXcode {example} above. Let's try a new example (using a file taken from the \index {TUG bibliography archive}\goto {TUG bibliography archive} [url(http://ftp.math.utah.edu/pub/tex/bib/index.html)]): \startfootnote \index {template.bib} The file \TEXcode {template-clean.bib} is simply a copy of \TEXcode {template.bib} that has been cleaned|-|up to remove the empty entries. \stopfootnote \startbuffer \definebtxdataset[template] \usebtxdataset [template][template-clean.bib] \loadbtxdefinitionfile[aps] \definebtxrendering [template] [aps] [dataset=template, group=examples] \placelistofpublications [template] [method=dataset] \stopbuffer \cindex{definebtxdataset} \cindex{usebtxdataset} \cindex{loadbtxdefinitionfile} \cindex{definebtxrendering} \cindex{placelistofpublications} \typeTEXbuffer Here, the new rendering is defined to inherit explicitly from a rendering named \index {style+APS}\TEXcode {aps} (whose specification is loaded but not activated here). Notice, in particular, compared to the previous rendering example, that the list is numbered and that there is no hanging margin (it uses the standard list \TEXcode {alternative=b}): \getbuffer The \Index {numbering} of the references are unique and pick|-|up from where the previous numbering stops (the first example contains 33 references, although this numbering is not displayed). This behavior can be \TEXcode {method=global} for the entire document, or else \TEXcode {method=local}, limited to a structural element such as a chapter or a part. Furthermore, one can associate renderings into particular number groups, effectively isolating them from any other renderings. For example, as seen above in the rendering definitions, the present manual uses: \cindex{setupbtxrendering} \startTEX \setupbtxrendering[example] [group=examples] \setupbtxrendering[template][group=examples] \stopTEX thus setting the numbering of the group \TEXcode {examples} apart from the numbering of the dataset \TEXcode {default} and its named rendering (which contains this manual's own bibliography, to be placed later, on \at {page} [ch:biblio]). \stopsection \startsection [reference=sec:styles, title={Rendering styles, or more on specifications}] The default rendering style implemented in the \MKII\ module was loosely based on the \index {style+APA}APA standard. In contrast, we made a design choice in the present \MKIV\ system to provide a very minimal \TEXcode {default} style, and one should not expect much from this default: in fact, it only recognizes \type {article} and \type {book} entries (see the bibliography on \at {page} [ch:biblio]). A user requiring a more complete rendering will want to explicitly load and activate another style file. One such complete specification, illustrated above and appropriately named \index {style+APA}\TEXcode {apa}, is described in the \cite [title] [default::APA2010]. \cite [num] [default::APA2010] \startaside \emphasis {A note on the \index {style+APA}APA style:} We get the strong impression that the APA bibliography style standard was made with the implicit assumption that manual intervention would be involved in the editing and production process; It has been an arduous task to create a system capable of fully conforming to these specifications. Furthermore, we note that it has sometimes been argued that a numbered citation system and bibliography list is supposedly superior to the author|-|year scheme as is employed in the \index {style+APA}APA style (amongst others); indeed, handling numbered citations is certainly much easier from the point of view of the programmer of an automated typesetting system such as \TEX. Yet many find that the longer author|-|year citations can be of great use to the reader (as well as the writer) so we take no stand in this debate and provide both possibilities. We have made (and continue to make) a great effort to scrupulously respect the \index {style+APA}APA style in the so|-|named rendering. Yet be warned that very few editors and publishers in fact follow this style exactly so some customization will always be required. \stopaside In addition to the APA specification, there are many prescribed styles to render bibliographic descriptions that can be programmed as standards. Alternatives to \index {style+APA}\TEXcode {specification=apa} might be \index {style+MLA}\TEXcode {mla}, \index {style+Chicago}\TEXcode {chicago}, \index {style+Harvard}\TEXcode {harvard}, \index {style+IEEE}\TEXcode {ieee}, \index {style+APS}\TEXcode {aps} (commonly used in the physical sciences), \index {style+Vancouver}\TEXcode {vancouver} (used in the biological sciences), or many others. At this time, we only provide two description files, with \index {style+APS}\TEXcode {aps} being an example\startfootnote The \index {style+APS}APS style attempts to be very compact, providing complete yet minimal information, in contrast to the \index {style+APA}APA style which is rather verbose. \stopfootnote of a number|-|based rather than an authoryear|-|based scheme; more style schemes may be added in the future and the customization of a rendering style will be described in a later chapter. The rendering style usually also implies a particular bibliography list \Index {sorting} scheme as well as the use of a particular citation style. Indeed, the rendering of bibliography lists and references to it are intimately coupled. This question will be explained a bit later. The \index {style+APA}APA style, for example, specifies that the bibliography list be sorted by author and then by year, then by title. The list is not numbered (references are cited by author and year). Note, however, as can be seen from the two examples shown above that the references were indeed assigned numbers even though they are not displayed in the \index {style+APA}\TEXcode {apa} rendering (the user can easily choose to display these numbers, if desired). \stopsection \startsection [list={Bibliography list scope}, title={Bibliography list \Index{scope}}] A single dataset can by used with multiple renderings. Although these renderings may illustrate different styles (as here for the purpose of demonstration in a manual on bibliographies), this would not be a coherent choice for a document that would normally employ a single bibliography style. The most obvious use of multiple renderings (employing a single specification) is the placement of bibliography lists localized by structure elements: parts, chapters in a book, sections, etc. through the option \TEXcode {criterium=chapter}, for example. This can be setup using: \cindex{setupbtxrendering} \startTEX \setupbtxrendering [default] [repeat=yes, continue=yes, method=global] \stopTEX followed at the end of each chapter by \cindex{placelistofpublications} \startTEX \placelistofpublications [criterium=chapter] \stopTEX The numbering might alternately be made local through the option \TEXcode {method=local}. If desired, the reference numbers can also get prefixed: \cindex{setupbtxlist} \startTEX \setupbtxlist [default] [prefix=yes, width=1cm] \stopTEX A bibliography list rendering placed at a single location, at the end of a book, for example, can also be easily split into structural parts. The following code (given without any explanation) illustrates this idea nicely: \cindex{placelistofpublications} \startTEX \startbackmatter \startchapter [title=Bibliography,number=no,incrementnumber=no] \startsubject [title=Introduction] \placelistofpublications [criterium=reference,reference=introduction] \stopsubject \dorecurse{12} { \startsubject [title={Chapter #1}] \placelistofpublications [criterium=bodypart:chapter,reference=#1] \stopsubject } \stopchapter \stopbackmatter \stopTEX Note, as the above demonstrates, that the list of bibliography citations for \emphasis {any} referenced structural element can be placed \emphasis {anywhere} in the document, not simply within the structural element itself. \stopsection \startsection[title=Language] Bibliography lists (and citations in the text, see below) are rendered in the language of the document (\Cindex {mainlanguage}). However, a bibliography entry can contain a \TEXcode {language=} field and this can be used (if present), depending on the specification, in the rendering and hyphenation of the \TEXcode {title}, for example. One might choose to override this behavior and impose a single language for all bibliography entries (as well as for all other \CONTEXT\ constructs) using \Cindex {setupdelimitedtext} \TEXcode {[language=global]}. Since this directive is general for all delimited text in \CONTEXT\ and is not specific to bibliographies, one can apply it to force a particular language within a unique section, as in: \cindex{setupdelimitedtext} \cindex{placelistofpublications} \startTEX \startsection[title=Bibliografía] \setupdelimitedtext[language=es] \placelistofpublications \stopsection \stopTEX % to Hans: This currently does not work! % to Alan: I need an example! The language setting also influences the sorting of \UTF\ strings, in particular authors and titles. \cindex {setupdelimitedtext} \showsetup[setupdelimitedtext] \startplacetable [title={\cindex{setupdelimitedtext}\TEXcode{\setupdelimitedtext[language=…]}}] \starttabulate [|Tl|p(.7\textwidth)|] \NC language= \NC \NC \NR \HL \NC {\it} \NC (the default) use the current active language; \NC \NR \NC local \NC respect local language directives (such as the entry's \TEXcode {language={…},} field, if present and managed by the rendering specification) \NC \NR \NC global \NC impose the main document language; \NC \NR \NC en, de, nl, \unknown \NC impose the specified language. \NC \NR \HL \stoptabulate \stopplacetable \startsubsubject[title=Translated titles] Going beyond this handling of punctuation, labels and sorting, we have also introduced an entirely new feature, allowing for dataset entries to contain fields describing translated titles, for example. This is particularly useful when including citations to references published in languages other than the document language. Below is an example including \emphasis{three} languages: \startfootnote In this reference, the \TEXcode {title} and the \TEXcode {booktitle} are in different languages and the \TEXcode {language = {french},} field refers to the cited text. Both titles would have been rendered using French hyphenation rules had this not been overridden by including the switch \TEXcode {\de} that otherwise should be avoided in a database. The solution used here is sloppy, but fortunately, a complicated situation such as this is not very common. \stopfootnote % We could have % booktitle:de = {Die ...}, % % but what simple logic could be used to indicate choosing this title? % The present case could, perhaps should, have language = {german}, but this % would simply switch the problem to title = {\fr Principes ...}, \startbuffer \startbuffer[leibniz] @INCOLLECTION{Leibniz1885, author = {Leibniz, G. W.}, title = {Principes de la nature et de la grâce fondés en raison, 1714}, title:en = {Principles of Nature and Grace Founded in Reason}, booktitle = {\de Die Philosophischen Schriften von Gottfried Wilhelm Leibniz}, booktitle:en = {The Philosophical Writings of Gottfried Wilhelm Leibniz}, editor = {Gerhardt, C. G.}, publisher = {Weidmann}, year = {1885}, volume = {6}, chapter = {8}, pages = {598–606}, address = {Berlin}, language = {french}, } \stopbuffer \stopbuffer \typeTEXbuffer \getbuffer \startbuffer \usebtxdataset [leibniz][leibniz.buffer] \definebtxrendering[leibniz][apa][group=examples,dataset=leibniz] \placebtxrendering [leibniz][method=dataset] \stopbuffer with \typeTEXbuffer that gets rendered as: \getbuffer In the \index {style+APA}APA bibliography style, the original reference title is listed followed by the translated title (within square brackets), the translation chosen being that of the \Cindex {mainlanguage} of the document (if present in the entry, of course). In other bibliography styles, this feature might not be implemented or may be ignored. \stopsubsubject \startsubsubject [title=Multilingual bibliographies] The present handling of languages is only the beginning, and these features will be developed further in the future: multilingual typesetting being one of the great strengths behind \CONTEXT. \stopsubsubject \stopsection \startsection [title=Page index] The list renderings can also include a page index of citations to each entry. This can be enabled using the parameter \TEXcode {pagestate}: \cindex{setupbtxrendering} \startTEX \setupbtxrendering [pagestate=start] \stopTEX As this is more of a subject related to the citation mechanism, it will be described in the following chapter (see \in {section} [sec:index], \at {p.} [sec:index]). \stopsection \stopchapter \stopcomponent