Re: [NTG-context] Initial release of SBL bibliographic rendering and biblio wishlist

2021-12-10 Thread J Huisman via ntg-context
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
 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 

[NTG-context] Initial release of SBL bibliographic rendering and biblio wishlist

2021-12-08 Thread Joey McCollum via ntg-context
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,