使“biblatex-sbl”的收集行为更像 CMS 和 Turabian,第 2 部分

使“biblatex-sbl”的收集行为更像 CMS 和 Turabian,第 2 部分

这是这个问题。正如@david-purton 在他的回答中指出的那样,我的问题中遗漏了一个事实,即书名后面是一个逗号,后面跟着编辑,而不是句号。

我尝试修补@incollection驱动程序biblatex-sbl,但所有宏\newunit中都插入了一个句点。因此,我认为必须重新定义宏,正如@david-purton 在上述问题的答案的评论中所证实的那样。

此外,我认为页码不能像那个答案那样放在注释后面。MWE 没有系列和编号。在给出的答案中,系列和编号打印在书目驱动程序中的注释之前。然而,在 Turabian 中,页码应该放在书名之后,然后是句号。然后是系列和编号,后面跟着句号。然后是出版详情。

这是与上面答案相同的 MWE,但添加了系列和编号:

\documentclass{article}
\usepackage[style=sbl]{biblatex}
\begin{filecontents}[overwrite]{\jobname.bib}
@collection{EFIMI1986,
  title = {Early Judaism and Its Modern Interpreters},
  editor = {Kraft, Robert A. and Nickelsburg, George W. E.},
  series = {Series Name},
  number = {2},
  location = {Philadelphia and Atlanta},
  publisher = {Fortress and Scholars Press},
  date = {1986}
}
@incollection{attridge:EFIMI1986,
  crossref = {EFIMI1986},
  author = {Attridge, Harold W.},
  title = {Jewish Historiography},
  pages = {311-343},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\usepackage{xpatch}
\xpatchbibdriver{incollection}
  {\usebibmacro{chapter+pagesin}}
  {\usebibmacro{in}}
  {}
  {}
\xpatchbibdriver{incollection}
  {\printfield{note}}
  {\printfield{note}%
   \setunit{\addcomma\space}%
   \printfield{pages}}
  {}
  {}
\begin{document}
\null\vfill
An entry in an edited work.\autocite{attridge:EFIMI1986}
\printbibliography
\end{document}

它看起来是这样的:

在此处输入图片描述

参考书目应改为:

Attridge, Harold W.“犹太史学”。早期犹太教及其现代诠释者,由 Robert A. Kraft 和 George WE Nickelsburg 编辑,311-43。丛书名称 2。费城:Fortress,1986 年。

脚注是正确的,不需要更改。

我知道 biblatex 有芝加哥风格。我用了biblatex-chicago好几年,但它更难修改。几乎不可能biblateax-sbl轻易得到像字典和词典这样的东西,所以我想继续用biblatex-sbl

答案1

事情并不困难,但是你需要做的改变越多,你需要修补的东西就越多。

您需要进行两项更改:

  1. 调整第二个补丁,将页码放在版本之前而不是注释之后:

    \xpatchbibdriver{incollection}
      {\newunit
       \printfield{edition}}
      {\setunit{\addcomma\space}%
       \printfield{pages}%
       \newunit
       \printfield{edition}}
      {}
      {}
    
  2. 使用类似于@moewe(现已删除)的答案的方法来添加逗号:

    \renewbibmacro*{bybookauthor/bybookeditor+others/bybooktranslator+others}{%
      \iffieldundef{booktitle}
        {}
        {\setunit{\addcomma\space}%
         \usebibmacro{bybookauthor}%
         \setunit{\addcomma\space}%
         \iffieldundef{maintitle}
           {\usebibmacro{bybookeditor+others}%
            \setunit{\addcomma\space}%
            \usebibmacro{bybooktranslator+others}}
           {\usebibmacro{bybookeditor/bybooktranslator}}}}
    

    你可能还需要一个类似的

    \renewbibmacro*{bymainauthor/bymaineditor+others/bymaintranslator+others}{…}
    

平均能量损失

\documentclass{article}
\usepackage[style=sbl]{biblatex}
\begin{filecontents}[overwrite]{\jobname.bib}
@collection{EFIMI1986,
  title = {Early Judaism and Its Modern Interpreters},
  editor = {Kraft, Robert A. and Nickelsburg, George W. E.},
  series = {Series Name},
  number = {2},
  location = {Philadelphia and Atlanta},
  publisher = {Fortress and Scholars Press},
  date = {1986}
}
@incollection{attridge:EFIMI1986,
  crossref = {EFIMI1986},
  author = {Attridge, Harold W.},
  title = {Jewish Historiography},
  pages = {311-343},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\usepackage{xpatch}
\xpatchbibdriver{incollection}
  {\usebibmacro{chapter+pagesin}}
  {\usebibmacro{in}}
  {}
  {}
\xpatchbibdriver{incollection}
  {\newunit
   \printfield{edition}}
  {\setunit{\addcomma\space}%
   \printfield{pages}%
   \newunit
   \printfield{edition}}
  {}
  {}
\renewbibmacro*{bybookauthor/bybookeditor+others/bybooktranslator+others}{%
  \iffieldundef{booktitle}
    {}
    {\setunit{\addcomma\space}%
     \usebibmacro{bybookauthor}%
     \setunit{\addcomma\space}%
     \iffieldundef{maintitle}
       {\usebibmacro{bybookeditor+others}%
        \setunit{\addcomma\space}%
        \usebibmacro{bybooktranslator+others}}
       {\usebibmacro{bybookeditor/bybooktranslator}}}}
\begin{document}
\null\vfill
An entry in an edited work.\autocite{attridge:EFIMI1986}
\printbibliography
\end{document}

输出

相关内容