dcpurton / biblatex-sbl

Society of Biblical Literature (SBL) style files for biblatex
24 stars 5 forks source link

classictext as incollection #133

Open folofjc opened 1 year ago

folofjc commented 1 year ago

In the biblatex-sbl manual here on pages 10 and 11, it says that if the option skipbib=false is given for a classictext, then it will act as an incollection in the bibliography.

Based upon @dcpurton's comment here, a classictext with a subtype of churchfather for entries in ANF should use related for ANF so that it is cited in the footnote. However, when I use related for ANF and then also use skipbib=false, the bibliography entry does not look like an incollection. All the things from ANF are missing. Here is an MWE with the results:

\documentclass[letterpaper,12pt]{book}
\usepackage{polyglossia}
\setmainlanguage[variant=us]{english}
\usepackage[english=american]{csquotes} 

\begin{filecontents}[overwrite]{customstyles.dbx}
  \DeclareDatamodelEntrytypes{tdict}
\end{filecontents}

\usepackage[style=sbl,fullbibrefs=true,sblfootnotes=false]{biblatex}

\begin{filecontents}[overwrite]{temp.bib}

@mvcollection{ANF,
   title       = {The Ante-Nicene Fathers},
   subtitle    = {The Writings of the Fathers Down to A.D. 325},
   shorthand   = {ANF},
   shorttitle  = {ANF},
   editor      = {Alexander Roberts and James Donaldson},
   publisher   = {Hendrickson},
   address     = {Peabody, MA},
   date        = {2004},
   origpublisher = {Christian Literature},
   origdate    = {1885/1887},
   volumes     = {10},
   origlocation= {Buffalo, NY},
}

@classictext{ANF:Papias:Frag,
   entrysubtype = {churchfather},
   author       = {Papias},
   title        = {Fragments from the Exposition of the Oracles of the Lord},
   volume       = {1},
   options      = {skipbib=false},
   related      = {ANF},
   relatedoptions = {skipbib=false},
}

classictext{ANF:Irenaeus:TFC,
   entrysubtype = {churchfather},
   author       = {Irenaeus},
   title        = {A Treatise on Faith and the Creed},
   volume       = {1},
   options      = {skipbib=false},
   related      = {ANF},
   relatedoptions = {skipbib=false},
}

@classictext{ANF:Irenaeus:AH,
   entrysubtype = {churchfather},
   author       = {Irenaeus},
   title        = {Against Heresies},
   shorttitle   = {Haer\adddot},
   volume       = {1},
   options      = {skipbiblist=false},
   related      = {ANF},
   relatedoptions = {useeditor=false,skipbib,skipbiblist}, 
}  

@classictext{ANF:Irenaeus:AH:LoA,
   author       = {Irenaeus},
   title        = {Against Heresies},
   shorttitle   = {Haer\adddot},
}  

\end{filecontents}

\addbibresource{temp.bib}

\usepackage{xparse}

\begin{document}

\null\vfill
\printbiblist{abbreviations}
\nocite{ANF:Irenaeus:AH:LoA}
Test.\footcite[45]{ANF:Papias:Frag} Test.\footcite[50]{ANF:Irenaeus:TFC} Test.\footcite[55]{ANF:Irenaeus:AH}

\clearpage
\printbibliography%
\end{document}

I have an entry for the list of abbreviations due to #120. Here is what it looks like:

Screenshot 2022-11-04 153612 Screenshot 2022-11-04 153621 Screenshot 2022-11-04 153634

As you can see, only the info from the classictext is there, not from ANF. Do I need to put ANF in both related as well as crossref?

folofjc commented 1 year ago

Okay, I think I found the answer in section 6.4.5 of the biblatex-sbl-examples file on page 45. There, the augustine:letters has both a crossref and a related. So I think this is what I need to do.

As you can see from my MWE above, I am a bit confused about the relatedoptions. The last one is copied from this example file and has relatedoptions = {useeditor=false,skipbiblist,skipbib}. I need to remove the useeditor=false and skipbib=false, but can you explain why you have skipbiblist for the related NPNF? NPNF1 still shows up in the list of abbreivations in your example file even though you have skipbiblist.

dcpurton commented 1 year ago

Ugh. Those Church Fathers really are a disaster.

Let me see if I can walk you through the logic.

Indeed if a @classictext has options = {skipbib=false} it will appear in the bibliography and will act like an @incollection with one important (and possibly undocumented difference). Any related entry will not be added. This is because of this code in sbl.bbx:

\DeclareBibliographyDriver{classictext}{%
  \usebibmacro{begentry}%
  \DeclareFieldFormat[classictext]{title}{\mkbibemph{##1}}%
  \clearfield{related}%
  \usedriver{}{incollection}%
  \usebibmacro{finentry}%
}

Notice that the related field is cleared before the incollection driver is called. Any related entry prints in a completely different way by the incollection driver, but we really want the details to be part of the main entry (hence the crossref).

So, your analysis is correct that you need both the related and crossref field in your @classictext. This will not affect the printing of the citation, since almost all fields are ignored when citing @classictext.

Now for the related options. The weirdness was to try and cover the hopeless inconsistency in the SBL Handbook. My understanding of the Blog is that they probably want the full details of ANF in the list of abbreviations (as your above code produces). But in the SBL Handbook they had a short form, like on page 45 of biblatex-sbl-examples. In order to do this I had to have two NPNF1 entries. One with full details (for the bibliography) and one with minimal details (for the list of abbreviations). But then I had to remove the entry that wasn't supposed to be present from each list manually. Hopefully that makes sense… According to the Blog you should not use NPNF1:abbreviation at all, so that part of the problem goes away.

The relatedoptions = {useeditor=false} was to format the bibliography starting with the Title. I have a feeling that the Blog no longer does this, so you should leave it out.

There's one more quirk. You'll get duplicate ANF entries in your bibliography because of https://github.com/dcpurton/biblatex-sbl/issues/119. We can work around this by adding options = {skipbib} to the main entry. (Or alternatively relatedoptions = {skipbib} in every work from ANF you cite from, but the former method is simpler.)

Putting this all together, I think your example above should look like this:

\documentclass{article}
\usepackage[style=sbl,fullbibrefs=true,sblfootnotes=false]{biblatex}

\begin{filecontents}[overwrite]{\jobname.bib}

@mvcollection{ANF,
   title       = {The Ante-Nicene Fathers},
   subtitle    = {The Writings of the Fathers Down to A.D. 325},
   shorthand   = {ANF},
   shorttitle  = {ANF},
   editor      = {Alexander Roberts and James Donaldson},
   publisher   = {Hendrickson},
   address     = {Peabody, MA},
   date        = {2004},
   origpublisher = {Christian Literature},
   origdate    = {1885/1887},
   volumes     = {10},
   origlocation= {Buffalo, NY},
   options     = {skipbib},
}

@classictext{ANF:Papias:Frag,
   entrysubtype = {churchfather},
   author       = {Papias},
   title        = {Fragments from the Exposition of the Oracles of the Lord},
   volume       = {1},
   options      = {skipbib=false},
   related      = {ANF},
   crossref     = {ANF},
}

@classictext{ANF:Irenaeus:TFC,
   entrysubtype = {churchfather},
   author       = {Irenaeus},
   title        = {A Treatise on Faith and the Creed},
   volume       = {1},
   options      = {skipbib=false},
   related      = {ANF},
   crossref     = {ANF},
}

@classictext{ANF:Irenaeus:AH,
   entrysubtype = {churchfather},
   author       = {Irenaeus},
   title        = {Against Heresies},
   shorttitle   = {Haer\adddot},
   volume       = {1},
   related      = {ANF},
   crossref     = {ANF},
}  

@classictext{ANF:Irenaeus:AH:LoA,
   author       = {Irenaeus},
   title        = {Against Heresies},
   shorttitle   = {Haer\adddot},
}  

\end{filecontents}

\addbibresource{\jobname.bib}

\usepackage{xpatch}
\xpatchbibdriver{abbreviations}
  {\toggletrue{blx@abbrevcite}}
  {}
  {}
  {}

\begin{document}

\null\vfill
\printbiblist{abbreviations}
\nocite{ANF:Irenaeus:AH:LoA}
Test.\footcite[45]{ANF:Papias:Frag} Test.\footcite[50]{ANF:Irenaeus:TFC} Test.\footcite[55]{ANF:Irenaeus:AH}

\printbibliography
\end{document}

tex373

folofjc commented 1 year ago

Thanks! I see now. I had misunderstood #119. I thought the solution was not to use both related and crossref, which is why I was having problems here. But I do need both, so the problem is that they are both printed, which then needs to be solved by the skipbib. So these two issues were more related than I thought. Thanks again!