* Initial release of SBL bibliographic rendering and biblio wishlist
@ 2021-12-08 23:47 Joey McCollum via ntg-context
2021-12-10 13:33 ` J Huisman via ntg-context
0 siblings, 1 reply; 2+ messages in thread
From: Joey McCollum via ntg-context @ 2021-12-08 23:47 UTC (permalink / raw)
To: mailing list for ConTeXt users; +Cc: Joey McCollum
[-- Attachment #1.1: Type: text/plain, Size: 8808 bytes --]
A while ago, I mentioned in a thread on the mailing list that I was working
on a new bibliographic rendering for the SBL citation style. After
additional testing and implementation of various features (e.g., an
authorconversion that inverts the first author and prints all subsequent
authors in normal order, an author-title sort order for bibliographic
entries, support for shorthands/abbreviations, support for Citation Style
Language locators, and support for biblatex-style citation macros that
intelligently move punctuation that follows them). While optimizations for
performance, simplifications of the code, and new feature additions are
still desirable, the module is in working condition and can now be
incorporated in a future ConTeXt update. The new .lua and .mkvi files for
the SBL rendering, updated publ-aut.lua and publ-imp-author.mkvi files, and
some new code intended to be incorporated into publ-ini.lua and
publ-ini.mkiv can all be found in project GitHub repo at the
https://github.com/jjmccollum/context-sbl.
While I worked on this module, Denis Maier (who provided valuable feedback
and suggestions throughout) and I put together a wish list of new features
we would like to see implemented in the publications support core modules.
We put together the list with Hans and Alan in mind, but any help is
appreciated! The list follows:
- Probably the most urgent need is for field inheritance mappings
through crossrefs to be fixed. These should be customizable in
bibliographic specification .lua files (e.g., publ-imp-sbl.lua), or at the
very least, they should follow the pattern of biblatex. As it is currently
implemented, field inheritance seems to map any field from the
cross-referenced entry to a field *of the same name* in the current
entry if it doesn't have a field of this name already. But this causes
serious problems when one needs to check if an entry has a given field
(such as "shorthand") at all; specifically, the \btxdoif macro will execute
its argument if the current entry *or any entry it cross-references*
contains a field with that name. What we want is a more disambiguated
mapping of inherited fields: for many common entry types (such as @book,
@collection, @reference, @proceedings, and @inbook, @incollection,
@inreference, and @inproceedings), biblatex maps the title field of the
cross-referenced entry to a different-named field in the lower-level entry
(e.g., maintitle -> booktitle -> title, maineditor -> bookeditor -> editor,
etc.).
- A mechanism for setting default field values (e.g., "pagination",
"options") by category in the .lua file for a given specification. (In the
SBL spec, for instance, an entry of category @ancienttext or @classictext
should have options={skipbib=true} by default.) If the user actually
specifies this field in an entry, then the default value would be
overwritten.
- If it hasn't been done already, the \btxdoifelsecitedone macro defined
in the cont-new.mkiv file in https://github.com/jjmccollum/context-sbl
should be implemented in publ-ini.lua and publ-ini.mkiv.
- Related to the previous entry, the ability to remove existing entry
tags from the "collected" or "tobesaved" lists defined in publ-ini.lua.
This would allow us to override the usual list registry rules of \cite
based on the values of, say, an entry's category, "type" field or "options"
field.
- General support for the useauthor, useeditor, usetranslator, skipbib,
and skipbiblist entry options from biblatex. These could be implemented as
citation-level btx options (currently, useauthor already is implemented for
the SBL style).
- Support for disambiguation in "author" citations made with the "name"
authorconversion. Publications support already allows us to map different
versions of the same name (e.g., "John Doe" and "J. Doe" to a single value.
But ideally, the publications support module should also check if surnames
are shared by distinct authors, and if so, it should then check for
distinct first and middle initials, and then distinct full names, until it
finds a difference. The shortest distinct renderings should then be used
for the "name" authorconversion. Different bibliographic renderings have
different rules for this, so implementations of these different rules
(detailed at
https://docs.citationstyles.org/en/stable/specification.html#disambiguation)
would be ideal.
- General support for *ibidem* (same entry), *idem* (same author), and *op.
cit.* (same title) tracking in the publ-ini module. These could be
implemented with default settings that could be overridden as needed in
individual specifications. Following biblatex, the user should be able to
specify yes/no "ibidtracker", "idemtracker", and "opcittracker" options via
\setupbtx. The publ-ini.mkiv file already defines macros like
\btxdoifsameaspreviouscheckedelse, \btxdoifsameaspreviouselse, and
\btxdoifcombiinlistelse to help with this sort of thing in the
bibliographic list, but we'd like something analogous for inline citations.
Specifically, we'd like a way to retrieve (or compare) the tag, author, and
title of the last entry cited in the current mode (where the mode may be in
the main document or a footnote/endnote). A further \btxsetup option could
control how locally the tracking should be done (i.e., if the trackers
should reset at the start of a new chapter, new section, new page, etc.).
In addition, it would also be good to copy the \mancite command from
biblatex, which manually resets these trackers when it is invoked.
- General support for CSL locator macros, whose basic usage is described
in https://pandoc.org/MANUAL.html#citation-syntax. The citation style
locales defined at https://github.com/citation-style-language/locales
have been defined for various languages already, and their
printed renderings can be implemented according to individual
specifications (perhaps using the language-dependent \setupbtxlabeltext
macro). A template for this can be found in the SBL rendering at
https://github.com/jjmccollum/context-sbl.
- ConTeXt might benefit from a predefined parenthetical delimitedtext
environment similar to "quotation" and "quote". Currently, I define such an
environment in publ-imp-sbl.mkvi as follows:
```
% Nested parentheses (used for things like publisher and institution
blocks) should alternate between proper parentheses and brackets
\definedelimitedtext[paren][quotation][location=text,left={(},right={)}]
\setupdelimitedtext[paren:1][left={(},right={)}]
\setupdelimitedtext[paren:2][left={[}, right={]}]
\setupdelimitedtext[paren:3][left={(},right={)}]
\setupdelimitedtext[paren:4][left={[}, right={]}]
```
But a general environment of this nature (perhaps supporting alternating
parentheses/brackets to arbitrary depth?) may be useful for other citations
styles and more general typesetting purposes, as well.
- Per a discussion I had earlier with Hans, a language-specific
mechanism for moving trailing punctuation after a \quotation or \quote
block so that it is inside that block (in accordance with "American"
punctuation rules) would be helpful.
- The ConTeXt distribution should be updated to include the authortitle
sort method in publ-aut.lua and the invertedfirst authorconversion setups
in publ-imp-author.mkvi. These are already defined in the copies of these
files in the sbl-context GitHub repo.
- Optimized implementations in the ConTeXt core for the following
macros, some unoptimized versions of which are defined in publ-imp-sbl.mkvi
(at https://github.com/jjmccollum/context-sbl):
- \doifprefix, \doifprefixelse, and \doifnotprefix
- \doifsuffix, \doifsuffixelse, and \doifnotsuffix (the
\btx_sbl_doifendswithpunct macro is a more specific template for this; if
you think the punctuation-specific macros would also be useful
in general,
then they could be implemented in the core, as well)
- The "\clf_" macros mentioned in the "NOTE FOR HANS" near the start
of publ-imp-sbl.mkvi should be accessible through exposed helper functions.
Many of these features (and some others that are specific to the SBL
rendering) are marked with "TODO" notes in publ-imp-sbl.mkvi.
I'm getting ready to start my PhD research in a few months, so I don't
expect to have as much time to develop the SBL rendering in the near
future, but I can try to patch things up as needed if anyone runs into any
problems in the near-term.
Thanks to everyone on the mailing list who answered my questions throughout
this process and for your continuing help in the future!
Joey
[-- Attachment #1.2: Type: text/html, Size: 9494 bytes --]
[-- Attachment #2: Type: text/plain, Size: 493 bytes --]
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage : http://www.pragma-ade.nl / http://context.aanhet.net
archive : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: Initial release of SBL bibliographic rendering and biblio wishlist
2021-12-08 23:47 Initial release of SBL bibliographic rendering and biblio wishlist Joey McCollum via ntg-context
@ 2021-12-10 13:33 ` J Huisman via ntg-context
0 siblings, 0 replies; 2+ messages in thread
From: J Huisman via ntg-context @ 2021-12-10 13:33 UTC (permalink / raw)
To: mailing list for ConTeXt users; +Cc: J Huisman
Hello Joey,
Just a quick note to thank you for your work on this. I use Chicago
which is close enough to SBL that I can use it. I'll test it for a
while and report any issues I encounter.
Jelle
On Thu, Dec 9, 2021 at 12:47 AM Joey McCollum via ntg-context
<ntg-context@ntg.nl> wrote:
>
> A while ago, I mentioned in a thread on the mailing list that I was working on a new bibliographic rendering for the SBL citation style. After additional testing and implementation of various features (e.g., an authorconversion that inverts the first author and prints all subsequent authors in normal order, an author-title sort order for bibliographic entries, support for shorthands/abbreviations, support for Citation Style Language locators, and support for biblatex-style citation macros that intelligently move punctuation that follows them). While optimizations for performance, simplifications of the code, and new feature additions are still desirable, the module is in working condition and can now be incorporated in a future ConTeXt update. The new .lua and .mkvi files for the SBL rendering, updated publ-aut.lua and publ-imp-author.mkvi files, and some new code intended to be incorporated into publ-ini.lua and publ-ini.mkiv can all be found in project GitHub repo at the https://github.com/jjmccollum/context-sbl.
>
> While I worked on this module, Denis Maier (who provided valuable feedback and suggestions throughout) and I put together a wish list of new features we would like to see implemented in the publications support core modules. We put together the list with Hans and Alan in mind, but any help is appreciated! The list follows:
>
> Probably the most urgent need is for field inheritance mappings through crossrefs to be fixed. These should be customizable in bibliographic specification .lua files (e.g., publ-imp-sbl.lua), or at the very least, they should follow the pattern of biblatex. As it is currently implemented, field inheritance seems to map any field from the cross-referenced entry to a field of the same name in the current entry if it doesn't have a field of this name already. But this causes serious problems when one needs to check if an entry has a given field (such as "shorthand") at all; specifically, the \btxdoif macro will execute its argument if the current entry or any entry it cross-references contains a field with that name. What we want is a more disambiguated mapping of inherited fields: for many common entry types (such as @book, @collection, @reference, @proceedings, and @inbook, @incollection, @inreference, and @inproceedings), biblatex maps the title field of the cross-referenced entry to a different-named field in the lower-level entry (e.g., maintitle -> booktitle -> title, maineditor -> bookeditor -> editor, etc.).
> A mechanism for setting default field values (e.g., "pagination", "options") by category in the .lua file for a given specification. (In the SBL spec, for instance, an entry of category @ancienttext or @classictext should have options={skipbib=true} by default.) If the user actually specifies this field in an entry, then the default value would be overwritten.
> If it hasn't been done already, the \btxdoifelsecitedone macro defined in the cont-new.mkiv file in https://github.com/jjmccollum/context-sbl should be implemented in publ-ini.lua and publ-ini.mkiv.
> Related to the previous entry, the ability to remove existing entry tags from the "collected" or "tobesaved" lists defined in publ-ini.lua. This would allow us to override the usual list registry rules of \cite based on the values of, say, an entry's category, "type" field or "options" field.
> General support for the useauthor, useeditor, usetranslator, skipbib, and skipbiblist entry options from biblatex. These could be implemented as citation-level btx options (currently, useauthor already is implemented for the SBL style).
> Support for disambiguation in "author" citations made with the "name" authorconversion. Publications support already allows us to map different versions of the same name (e.g., "John Doe" and "J. Doe" to a single value. But ideally, the publications support module should also check if surnames are shared by distinct authors, and if so, it should then check for distinct first and middle initials, and then distinct full names, until it finds a difference. The shortest distinct renderings should then be used for the "name" authorconversion. Different bibliographic renderings have different rules for this, so implementations of these different rules (detailed at https://docs.citationstyles.org/en/stable/specification.html#disambiguation) would be ideal.
> General support for ibidem (same entry), idem (same author), and op. cit. (same title) tracking in the publ-ini module. These could be implemented with default settings that could be overridden as needed in individual specifications. Following biblatex, the user should be able to specify yes/no "ibidtracker", "idemtracker", and "opcittracker" options via \setupbtx. The publ-ini.mkiv file already defines macros like \btxdoifsameaspreviouscheckedelse, \btxdoifsameaspreviouselse, and \btxdoifcombiinlistelse to help with this sort of thing in the bibliographic list, but we'd like something analogous for inline citations. Specifically, we'd like a way to retrieve (or compare) the tag, author, and title of the last entry cited in the current mode (where the mode may be in the main document or a footnote/endnote). A further \btxsetup option could control how locally the tracking should be done (i.e., if the trackers should reset at the start of a new chapter, new section, new page, etc.). In addition, it would also be good to copy the \mancite command from biblatex, which manually resets these trackers when it is invoked.
> General support for CSL locator macros, whose basic usage is described in https://pandoc.org/MANUAL.html#citation-syntax. The citation style locales defined at https://github.com/citation-style-language/locales have been defined for various languages already, and their printed renderings can be implemented according to individual specifications (perhaps using the language-dependent \setupbtxlabeltext macro). A template for this can be found in the SBL rendering at https://github.com/jjmccollum/context-sbl.
> ConTeXt might benefit from a predefined parenthetical delimitedtext environment similar to "quotation" and "quote". Currently, I define such an environment in publ-imp-sbl.mkvi as follows:
>
> ```
> % Nested parentheses (used for things like publisher and institution blocks) should alternate between proper parentheses and brackets
> \definedelimitedtext[paren][quotation][location=text,left={(},right={)}]
> \setupdelimitedtext[paren:1][left={(},right={)}]
> \setupdelimitedtext[paren:2][left={[}, right={]}]
> \setupdelimitedtext[paren:3][left={(},right={)}]
> \setupdelimitedtext[paren:4][left={[}, right={]}]
> ```
>
> But a general environment of this nature (perhaps supporting alternating parentheses/brackets to arbitrary depth?) may be useful for other citations styles and more general typesetting purposes, as well.
> Per a discussion I had earlier with Hans, a language-specific mechanism for moving trailing punctuation after a \quotation or \quote block so that it is inside that block (in accordance with "American" punctuation rules) would be helpful.
> The ConTeXt distribution should be updated to include the authortitle sort method in publ-aut.lua and the invertedfirst authorconversion setups in publ-imp-author.mkvi. These are already defined in the copies of these files in the sbl-context GitHub repo.
> Optimized implementations in the ConTeXt core for the following macros, some unoptimized versions of which are defined in publ-imp-sbl.mkvi (at https://github.com/jjmccollum/context-sbl):
>
> \doifprefix, \doifprefixelse, and \doifnotprefix
> \doifsuffix, \doifsuffixelse, and \doifnotsuffix (the \btx_sbl_doifendswithpunct macro is a more specific template for this; if you think the punctuation-specific macros would also be useful in general, then they could be implemented in the core, as well)
>
> The "\clf_" macros mentioned in the "NOTE FOR HANS" near the start of publ-imp-sbl.mkvi should be accessible through exposed helper functions.
>
> Many of these features (and some others that are specific to the SBL rendering) are marked with "TODO" notes in publ-imp-sbl.mkvi.
>
> I'm getting ready to start my PhD research in a few months, so I don't expect to have as much time to develop the SBL rendering in the near future, but I can try to patch things up as needed if anyone runs into any problems in the near-term.
>
> Thanks to everyone on the mailing list who answered my questions throughout this process and for your continuing help in the future!
>
> Joey
>
> ___________________________________________________________________________________
> If your question is of interest to others as well, please add an entry to the Wiki!
>
> maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
> webpage : http://www.pragma-ade.nl / http://context.aanhet.net
> archive : https://bitbucket.org/phg/context-mirror/commits/
> wiki : http://contextgarden.net
> ___________________________________________________________________________________
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage : http://www.pragma-ade.nl / http://context.aanhet.net
archive : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-12-10 13:33 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-08 23:47 Initial release of SBL bibliographic rendering and biblio wishlist Joey McCollum via ntg-context
2021-12-10 13:33 ` J Huisman via ntg-context
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).