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
___________________________________________________________________________________

Reply via email to