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 ___________________________________________________________________________________