Issues using publications subsystem for non-bibliographic database
![](https://secure.gravatar.com/avatar/e07e15a8be3c4c1723f5a0397bc17424.jpg?s=120&d=mm&r=g)
List, I am trying to use the publications subsystem to support a non-bibliographic database, as chapter 10 of mkiv-publications suggests one can. My example is a database of quotations. I have been partially successful, which is another way of saying there are some issues I have not been able to resolve. First, what goes into a specification lua file (I think that is what the document suggests I need) that says my author field should be handled as a bibliographic author field? There is some processing: {Schopenhauer, Arthur} gets displayed as ArthurSchopenhauer (with no space). Specifying an authorconversion in \setupbtx has no effect, so it looks like I have to do something else. Second, how can I link one entry to another. The example shows my almost-working attempt, adding a linking key (translation in the example) and recursively using it in processing. This fails, but when I use the literal equivalent, it works. (And the recursion does not seem to be the problem.) I know that this description is not clear, but the example should demonstrate the issue. Finally, the document loses all data from the quotation database when \placebtxrendering for that database is omitted. I apologize for the larger-than-usual example size. %{[( \startbuffer[quotesources] @book{Schopenhauer1862v2, title = {Parerga und Paralipomena}, subtitle = {Kleine Philosophische Schriften}, publisher = {A. W. Hahn}, year = {1862}, volume = {2}, volumes = {2}, author = {Arthur Schopenhauer}, editor = {Julius Frauenstädt}, address = {Berlin}, language = {german}, } @book{SchopenhauerPayne2000, title = {Parerga and Paralipomena}, subtitle = {Short Philosophical Essays}, publisher = {Oxford University Press Clarendon Press}, address = {New York and Oxford}, year = {2000}, author = {Arthur Schopenhauer}, volumes = {2}, origyear = {1974}, origlanguage= {german}, translator = {Eric F. J. Payne}, } \stopbuffer \startbuffer[quotedatabase] @quote{qSchopA02, extract = {Es wäre gut Bücher kaufen, wenn man die Zeit, sie zu lesen, mitkaufen könnte, aber man verweschelt meistens den Ankauf der Bücher mit dem Aneignen ihres Inhalts.}, author = {Schopenhauer, Arthur}, born = {1788}, died = {1860}, work = {\cite[title][sources::Schopenhauer1862v2]}, year = {1862}, location = {chapter\btxnbsp24}, translation = {\cite[tag][qPayneE01]}, attribnote = {The selection was inserted posthumously into the work, probably based on notes Schopenhauer left, by Julius Frauenstädt, his literary executor, and has appeared in different locations in various editions.}, } @quote{qPayneE01, extract = {Buying books would be a good thing if one could also buy the time to read them in: but as a rule the purchase of books is mistaken for the appropriation of their contents.}, author = {Eric F. J. Payne}, born = {1895}, died = {1983}, year = {1974/2000}, work = {\cite[title][sources::SchopenhauerPayne2000]}, page = {559}, } \stopbuffer \loadbtxdefinitionfile [apa] \usebtxdefinitions [apa] \usebtxdataset [sources] [quotesources.buffer] \definebtxrendering [sources] [apa] [group=bib, dataset=sources] \setupbtx [sources] [specification=apa, dataset=sources] \usebtxdataset [quotedb] [quotedatabase.buffer] \definebtxrendering [quotedb] [group=quotes, sorttype=cite, numbering=no, dataset=quotedb] \setupbtx [specification=quotedb, authorconversion=normalshort, dataset=quotedb] \startsetups btx:quotedb:cite:attribnote {\rm\btxfield{attribnote}} \stopsetups \startsetups btx:quotedb:cite:born {\rm\btxfield{born}} \stopsetups \startsetups btx:quotedb:cite:died {\rm\btxfield{died}} \stopsetups \startsetups btx:quotedb:cite:location {\rm\btxfield{location}} \stopsetups \startsetups btx:quotedb:cite:page {\rm\btxfield{page}} \stopsetups \startsetups btx:quotedb:cite:work {\rm\btxfield{work}} \stopsetups \startsetups btx:quotedb:cite:extract {\rm\btxfield{extract}} \stopsetups \startsetups btx:quotedb:cite:title {\rm\it\btxfield{title}} \stopsetups \startsetups btx:quotedb:list:quote \limitatetext{\btxfield{extract}}{\textwidth}{\unknown} \blank[none] -\btxspace\btxflush{author} \btxcomma\btxfield{year} \stopsetups \starttexdefinition Quotation #QUOTE \startnarrower \blank[halfline] \startparagraph \cite[extract][#QUOTE] \stopparagraph \startparagraph\noindentation \blank[halfline] \dontleavehmode\llap{– }\cite[author][#QUOTE] \btxspace \doifnotempty{\cite[born][#QUOTE]} {(\cite[born][#QUOTE]|–|\doiftext{\cite[died][#QUOTE]} {\cite[died][#QUOTE]})} \btxspace in \cite[work][#QUOTE] \doiftextelse{\cite[page][#QUOTE]} {\btxcomma p\btxperiod\btxnbsp\cite[page][#QUOTE]} {\doiftext{\cite[location][#QUOTE]} {\btxcomma \cite[location][#QUOTE]}} \btxcomma \cite[year][#QUOTE] \btxperiod \cite[attribnote][#QUOTE] \doiftext{\cite[translation][#QUOTE]} {\btxspace A translation is:} \stopparagraph \doiftext{\cite[translation][#QUOTE]} {\stopnarrower %%---------------------------------------------------------------------- %% When this form is used, the compilation fails. % % \Quotation{\cite[translation][#QUOTE]} % %% When this form is used, the compilation works, but of course, this %% form is not what is wanted. % \Quotation{qPayneE01} % %%---------------------------------------------------------------------- \startnarrower } \blank[3*halfline] \stopnarrower \stoptexdefinition \starttext \Quotation{qSchopA02} %%---------------------------------------------------------------------- %% When this form is used, the compilation fails as well, so it isn't %% the recursion that is the problem. % % \Quotation{\cite[translation][qSchopA02]} % %%---------------------------------------------------------------------- \hrule\blank %%---------------------------------------------------------------------- %% When \placebtxrendering for the quotation database is removed, %% none of the text from the database is printed, even though the %% dataset completeness shows the data % \placebtxrendering [quotedb][method=dataset] % %%---------------------------------------------------------------------- \hrule\blank \placebtxrendering [sources][method=dataset] \page \showbtxdatasetcompleteness[dataset=quotedb] \page \showbtxdatasetcompleteness[dataset=sources,specification=apa] \stoptext %)]} -- Rik
![](https://secure.gravatar.com/avatar/e07e15a8be3c4c1723f5a0397bc17424.jpg?s=120&d=mm&r=g)
List, As a followup, here is a close-to-minimal example which demonstrates the failure when \placebtxrendering is omitted. When run as given, the extract field content is not displayed. When the commented line is uncommented, the result includes the content. \startbuffer[quotedatabase] @quote{qSchopA02, extract = {Es wäre gut Bücher kaufen, wenn man die Zeit, sie zu lesen, mitkaufen könnte, aber man verweschelt meistens den Ankauf der Bücher mit dem Aneignen ihres Inhalts.}, author = {Schopenhauer, Arthur}, } \stopbuffer \usebtxdataset [quotedb] [quotedatabase.buffer] \definebtxrendering [quotedb] [dataset=quotedb] \setupbtx [dataset=quotedb] \starttext Extract:\par \cite[extract][qSchopA02] Rendering:\par % \placebtxrendering [quotedb][method=dataset] Completeness:\par \showbtxdatasetcompleteness[dataset=quotedb] \stoptext The log does not indicate any issues. Is this expected? Is \placebtxrendering required? -- Rik
![](https://secure.gravatar.com/avatar/6e50a7aa57f5569d881f204f124d96ef.jpg?s=120&d=mm&r=g)
On Fri, 7 Dec 2018 17:19:35 -0500
Rik Kabel
As a followup, here is a close-to-minimal example which demonstrates the failure when \placebtxrendering is omitted.
It is not a failure. The whole intent is to place an appropriate rendering that you can tailor to your specific needs. There is little sense in a cross-reference (link) or reference number if there is not sort of list. Alan
![](https://secure.gravatar.com/avatar/e07e15a8be3c4c1723f5a0397bc17424.jpg?s=120&d=mm&r=g)
On 12/7/2018 18:01, Alan Braslau wrote:
On Fri, 7 Dec 2018 17:19:35 -0500 Rik Kabel
wrote: As a followup, here is a close-to-minimal example which demonstrates the failure when \placebtxrendering is omitted. It is not a failure. The whole intent is to place an appropriate rendering that you can tailor to your specific needs. There is little sense in a cross-reference (link) or reference number if there is not sort of list.
Alan
That makes absolutely no sense. That means that an informal paper that puts all references in footnotes and has no bibliography and does not need cross-referencing or reference numbering cannot take advantage of a bibliographic database. And in fact, that is the case shown below. The footnotes appear only when the comment line is uncommented. (I also tried \nocite[*] together with \placebtxrendering[method=none] and also with \placebtxrendering[criterium=none] for the rendering, but that does not help. It seems that the entries only display when something gets added to the rendering list.) \startbuffer[quotesources] @book{Schopenhauer1862v2, title = {Parerga und Paralipomena}, subtitle = {Kleine Philosophische Schriften}, publisher = {A. W. Hahn}, year = {1862}, volume = {2}, volumes = {2}, author = {Arthur Schopenhauer}, editor = {Julius Frauenstädt}, address = {Berlin}, language = {german}, } @book{SchopenhauerPayne2000, title = {Parerga and Paralipomena}, subtitle = {Short Philosophical Essays}, publisher = {Oxford University Press Clarendon Press}, address = {New York and Oxford}, year = {2000}, author = {Arthur Schopenhauer}, volumes = {2}, origyear = {1974}, origlanguage= {german}, translator = {Eric F. J. Payne}, } \stopbuffer \loadbtxdefinitionfile [apa] \usebtxdefinitions [apa] \usebtxdataset [quotesources.buffer] \starttext As Artie said:\footnote{\placecitation[Schopenhauer1862v2]} Es wäre gut Bücher kaufen, wenn man die Zeit, sie zu lesen, mitkaufen könnte, aber man verweschelt meistens den Ankauf der Bücher mit dem Aneignen ihres Inhalts. Payne translates this as:\footnote{\cite[entry][SchopenhauerPayne2000]} Buying books would be a good thing if one could also buy the time to read them in: but as a rule the purchase of books is mistaken for the appropriation of their contents. % \placebtxrendering [method=dataset] \stoptext I understood §5.4 of the manual to mean that rendering definitions (created by \definebtxrendering and related setups) do not have an effect on \placecitation (and \cite[field][tag]) commands. Rereading it, I wonder if the meaning is supposed to be more than that, and to cover this situation? Surely this can be changed! -- Rik
![](https://secure.gravatar.com/avatar/6e50a7aa57f5569d881f204f124d96ef.jpg?s=120&d=mm&r=g)
You can place references rendered as you need, not necessarily in one
single bibliography list, but they must be rendered somewhere,
otherwise numbering and cross-referencing is meaningless. In the case
of footnote references, each footnote contains a rendering (not a
citation) of a fragment of the list.
You are thinking too much in a standard frame, and I'm not sure what
you want to accomplish.
One "other use" case that I make is a catalog of hundreds of
mesophases. I "cite" them and their various properties throughout the
text, an my "list rendering" has become an index.
Alan
On Fri, 7 Dec 2018 22:36:02 -0500
Rik Kabel
On 12/7/2018 18:01, Alan Braslau wrote:
On Fri, 7 Dec 2018 17:19:35 -0500 Rik Kabel
wrote: As a followup, here is a close-to-minimal example which demonstrates the failure when \placebtxrendering is omitted. It is not a failure. The whole intent is to place an appropriate rendering that you can tailor to your specific needs. There is little sense in a cross-reference (link) or reference number if there is not sort of list.
Alan
That makes absolutely no sense. That means that an informal paper that puts all references in footnotes and has no bibliography and does not need cross-referencing or reference numbering cannot take advantage of a bibliographic database. And in fact, that is the case shown below. The footnotes appear only when the comment line is uncommented.
(I also tried \nocite[*] together with \placebtxrendering[method=none] and also with \placebtxrendering[criterium=none] for the rendering, but that does not help. It seems that the entries only display when something gets added to the rendering list.)
\startbuffer[quotesources] @book{Schopenhauer1862v2, title = {Parerga und Paralipomena}, subtitle = {Kleine Philosophische Schriften}, publisher = {A. W. Hahn}, year = {1862}, volume = {2}, volumes = {2}, author = {Arthur Schopenhauer}, editor = {Julius Frauenstädt}, address = {Berlin}, language = {german}, } @book{SchopenhauerPayne2000, title = {Parerga and Paralipomena}, subtitle = {Short Philosophical Essays}, publisher = {Oxford University Press Clarendon Press}, address = {New York and Oxford}, year = {2000}, author = {Arthur Schopenhauer}, volumes = {2}, origyear = {1974}, origlanguage= {german}, translator = {Eric F. J. Payne}, } \stopbuffer
\loadbtxdefinitionfile [apa] \usebtxdefinitions [apa] \usebtxdataset [quotesources.buffer]
\starttext
As Artie said:\footnote{\placecitation[Schopenhauer1862v2]}
Es wäre gut Bücher kaufen, wenn man die Zeit, sie zu lesen, mitkaufen könnte, aber man verweschelt meistens den Ankauf der Bücher mit dem Aneignen ihres Inhalts.
Payne translates this as:\footnote{\cite[entry][SchopenhauerPayne2000]}
Buying books would be a good thing if one could also buy the time to read them in: but as a rule the purchase of books is mistaken for the appropriation of their contents.
% \placebtxrendering [method=dataset] \stoptext
I understood §5.4 of the manual to mean that rendering definitions (created by \definebtxrendering and related setups) do not have an effect on \placecitation (and \cite[field][tag]) commands. Rereading it, I wonder if the meaning is supposed to be more than that, and to cover this situation?
Surely this can be changed!
![](https://secure.gravatar.com/avatar/e07e15a8be3c4c1723f5a0397bc17424.jpg?s=120&d=mm&r=g)
On 12/7/2018 22:51, Alan Braslau wrote:
You can place references rendered as you need, not necessarily in one single bibliography list, but they must be rendered somewhere, otherwise numbering and cross-referencing is meaningless. In the case of footnote references, each footnote contains a rendering (not a citation) of a fragment of the list.
You are thinking too much in a standard frame, and I'm not sure what you want to accomplish.
One "other use" case that I make is a catalog of hundreds of mesophases. I "cite" them and their various properties throughout the text, an my "list rendering" has become an index.
Alan
I would like simply to prepare a paper structured like the one found at https://tannerlectures.utah.edu/Greenblatt%20Lecture.pdf. There is no biblography; there are bibliographic references in footnotes. There is no interaction. The only cross-references are the footnote indices. If I could in addition pull in blocks of text from a secondary database, that is lagniappe. Neither function requires rendering in a separate list or lists. Certainly ConTeXt's bibliographic subsystem should be capable of supporting such a basic format as that, but I can see no way to get it to do so. -- Rik
![](https://secure.gravatar.com/avatar/6e50a7aa57f5569d881f204f124d96ef.jpg?s=120&d=mm&r=g)
On Fri, 7 Dec 2018 23:34:58 -0500
Rik Kabel
On 12/7/2018 22:51, Alan Braslau wrote:
You can place references rendered as you need, not necessarily in one single bibliography list, but they must be rendered somewhere, otherwise numbering and cross-referencing is meaningless. In the case of footnote references, each footnote contains a rendering (not a citation) of a fragment of the list.
You are thinking too much in a standard frame, and I'm not sure what you want to accomplish.
One "other use" case that I make is a catalog of hundreds of mesophases. I "cite" them and their various properties throughout the text, an my "list rendering" has become an index.
Alan
I would like simply to prepare a paper structured like the one found at https://tannerlectures.utah.edu/Greenblatt%20Lecture.pdf. There is no biblography; there are bibliographic references in footnotes. There is no interaction. The only cross-references are the footnote indices.
If I could in addition pull in blocks of text from a secondary database, that is lagniappe. Neither function requires rendering in a separate list or lists.
Certainly ConTeXt's bibliographic subsystem should be capable of supporting such a basic format as that, but I can see no way to get it to do so.
As I wrote, "rendering" to footnotes as elements of a "list" can be done, and your cross-reference *is* the footnote index. We have not written setups that do this already as I have never needed this format myself, although it is rather common in certain fields. "Pulling-in" blocks of text in general (without a basis) is not the aim. Again, the entire point is to associate fields to an entry, and the notion of a "list" is more general than a traditional bibliography list.
![](https://secure.gravatar.com/avatar/e07e15a8be3c4c1723f5a0397bc17424.jpg?s=120&d=mm&r=g)
On 12/8/2018 00:03, Alan Braslau wrote:
As I wrote, "rendering" to footnotes as elements of a "list" can be done, and your cross-reference *is* the footnote index. We have not written setups that do this already as I have never needed this format myself, although it is rather common in certain fields. "Pulling-in" blocks of text in general (without a basis) is not the aim. Again, the entire point is to associate fields to an entry, and the notion of a "list" is more general than a traditional bibliography list.
Well, you have my vote for moving it up the priority list. I would request that the implementation allow additional text beyond the rendered entry, as demonstrated in the cited example document, in the footnote (or endnote, or marginnote). As you note, it is a common requirement in some fields. It is also quite useful in earlier stages of larger projects where it is important to document sources (for circulation copies) but one is not ready to tackle the design and generation of more formal backmatter. -- Rik
![](https://secure.gravatar.com/avatar/6e50a7aa57f5569d881f204f124d96ef.jpg?s=120&d=mm&r=g)
On Sat, 8 Dec 2018 12:43:34 -0500
Rik Kabel
It is also quite useful in earlier stages of larger projects where it is important to document sources (for circulation copies) but one is not ready to tackle the design and generation of more formal backmatter.
In my incremental development, I place a bibliography at the end of a chapter, part, or even section - there is no need for this to be backmatter. Using modes, these then can remain or not be rendered as design advances. Again, what is the point of pulling references if they do not refer to anything? In the Latex/bibtex workflow, the list is generated by bibtex, and this can, and does, lead to de-synchronization in a partial development process as you describe. Here, the list is generated and exists in lua, and we take great pains to insure that it remains synchronized. Alan
![](https://secure.gravatar.com/avatar/d0e94fb08d4620cfbd2f8f59a7868637.jpg?s=120&d=mm&r=g)
On 08.12.18 20:50, Alan Braslau wrote:
In my incremental development, I place a bibliography at the end of a chapter, part, or even section - there is no need for this to be backmatter. Using modes, these then can remain or not be rendered as design advances.
I've been following this thread somewhat distractedly... From a systematic point of view, Alan is of course right: a reference should refer to something, which is normally a list. However, I find myself in situations where I want a reference, but this list should not be included in the document. Example: you distribute a bibliographical list on your handout and want your slides to display the numeric reference, but not the list itself. So I wonder if one possible solution would be to provide the possibility to have the list calculated but not typeset (hidden). In a naive way, I tried something like \hbox to width 0cm{\placelistofpublications} but that doesn't work. But I'm sure this should be easily doable? As for something like full citation information in the footnote, with crossreference (something like "above, n. XXX"): the format seems obsolete, I agree, but at least in the humanities, it is still often used and would be very handy to have. All best Thomas
![](https://secure.gravatar.com/avatar/6e50a7aa57f5569d881f204f124d96ef.jpg?s=120&d=mm&r=g)
On Sat, 8 Dec 2018 21:11:17 +0100
"Thomas A. Schmitz"
I find myself in situations where I want a reference, but this list should not be included in the document. Example: you distribute a bibliographical list on your handout and want your slides to display the numeric reference, but not the list itself.
I used to think like Rik is suggesting, and had long debates with Hans (with Mojca contributing) about preparing drafts... Typesetting a single chapter (of a thesis, for example) led to problems of references. The solution, of course, as I wrote is to use partial bibliographies and modes. In the case of slides + handout, I always typeset them together as one "document" which I then split, as a sort of body and back matter. There likely is a better way. Finally, footnote style references is indeed obsolete, or becoming obsolete, yet they are still very much used in many disciplines. It's just a question of time getting to implement this (and Hans quite often, rightfully, criticizes my *abuse* of footnotes in general, not simply due to their typesetting complication and interference with an *abuse* of floats). Alan
![](https://secure.gravatar.com/avatar/e07e15a8be3c4c1723f5a0397bc17424.jpg?s=120&d=mm&r=g)
On 12/8/2018 14:50, Alan Braslau wrote:
On Sat, 8 Dec 2018 12:43:34 -0500 Rik Kabel
wrote: It is also quite useful in earlier stages of larger projects where it is important to document sources (for circulation copies) but one is not ready to tackle the design and generation of more formal backmatter. In my incremental development, I place a bibliography at the end of a chapter, part, or even section - there is no need for this to be backmatter. Using modes, these then can remain or not be rendered as design advances.
Again, what is the point of pulling references if they do not refer to anything? In the Latex/bibtex workflow, the list is generated by bibtex, and this can, and does, lead to de-synchronization in a partial development process as you describe. Here, the list is generated and exists in lua, and we take great pains to insure that it remains synchronized.
Alan
The purpose is to reduce entry effort, prevent simple errors, ensure consistency across instances in the same and additional documents, and encourage reuse. Or are you suggesting that a document like the paper I cited does not benefit from a bibliographic support subsystem? -- Rik
participants (3)
-
Alan Braslau
-
Rik Kabel
-
Thomas A. Schmitz