Biblatex-sbl 首次引用除页码(脚注)以外的内容(文章类型)

Biblatex-sbl 首次引用除页码(脚注)以外的内容(文章类型)

在某些领域,引用另一部作品的脚注时,最好将页码与脚注编号一起引用。在 中biblatex-sbl,如果这是对一篇文章的第一次引用,那么它会将 视为prenote页码以外的内容,并将整个页面范围放在脚注中,然后将 放在postnote括号中,这是不正确的。

以下是 MWE:

\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,citepages=omit,fullbibrefs=true,sblfootnotes=false,citereset=chapter]{biblatex}

\begin{filecontents}[overwrite]{temp.bib}
@article{article1,
   title     = {First Article Title},
   author    = {John Smith},
   journal   = {Journal Title},
   volume    = {3},
   number    = {2},
   year      = {2020},
   pages     = {15-30},
}

@article{article2,
   title     = {Second Article Title},
   author    = {John Denver},
   journal   = {Journal Title},
   volume    = {3},
   number    = {2},
   year      = {2020},
   pages     = {31-45},
}

\end{filecontents}

\addbibresource{temp.bib}

\usepackage{xparse}

\begin{document}

\null\vfill
Cite a normal page.\footcite[18]{article1} Cite a footnote.\footcite[20fn2]{article1}
Now cite a footnote first.\footcite[35fn3]{article2}

\clearpage
\printbibliography%
\end{document}

它看起来是这样的:

截屏

如果第一个引用是页码,然后第二个引用包含页码以外的内容,则简短引用是正确的。

但是,如果第一个引用包含对脚注的引用(因此postnote包含除了数字之外的其他内容),则完整引用是错误的。

有没有办法biblatex-sbl将其视为页码?

我确实找到了这个问题,但我不确定具体该怎么做。我需要手动定义吗passifpages?这个命令似乎不是在 中本机定义的biblatex。关于 定义的注释PagesCheckSetup。而且关于具有简单定义的在 中有一个定义biblatex

答案1

你可以使用以下方法\passifpages(定义在https://github.com/plk/biblatex/issues/918#issuecomment-581051609)。该命令未在核心中定义biblatex,因此您必须自带定义。这个想法是,这个命令通常不执行任何操作(\@firstofone定义一个返回其单个参数的宏),但定义为在biblatex检查某项是否为有效页面范围时隐藏其参数(这就是所做的\PagesCheckSetup)。

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

\usepackage[style=sbl,citepages=omit]{biblatex}

\makeatletter
\let\passifpages\@firstofone
\PagesCheckSetup{\let\passifpages\@gobble}
\makeatother

\addbibresource{biblatex-examples.bib}

\begin{document}
\null\vfill
Cite a normal page.\footcite[18]{sigfridsson}
Cite a footnote.\footcite[\passifpages{20fn2}]{sigfridsson}
Now cite a footnote first.\footcite[\passifpages{35fn3}]{aksin}

\clearpage
\printbibliography
\end{document}

Özge Aksın 等人,“固定化对饱和 Pd-N-杂环卡宾在 Mizoroki-Heck 反应中催化特性的影响”,J. Organomet. Chem. 691.13(2006):35fn3。

如果您引用很多脚注,那么每次添加都会变得很乏味\passifpages。有两种方法可以让您的生活更轻松。

  1. 您可以允许fn作为数字的一部分

    \documentclass[letterpaper,12pt]{book}
    \usepackage{polyglossia}
    \setmainlanguage[variant=us]{english}
    \usepackage[english=american]{csquotes}
    
    \usepackage[style=sbl,citepages=omit]{biblatex}
    
    \DeclareNumChars{nf}
    
    \addbibresource{biblatex-examples.bib}
    
    \begin{document}
    \null\vfill
    Cite a normal page.\footcite[18]{sigfridsson}
    Cite a footnote.\footcite[20fn2]{sigfridsson}
    Now cite a footnote first.\footcite[35fn3]{aksin}
    
    \clearpage
    \printbibliography
    \end{document}
    

    从技术上讲,这意味着诸如nfffnnfnfn现在将“算作”数字的参数,这可能还不错。

  2. 你可以为 定义一个特殊的命令fn<number>,比如说\fn可以从页面隐藏检查代码中再次隐藏。

    \documentclass[letterpaper,12pt]{book}
    \usepackage{polyglossia}
    \setmainlanguage[variant=us]{english}
    \usepackage[english=american]{csquotes}
    
    \usepackage[style=sbl,citepages=omit]{biblatex}
    
    \makeatletter
    \newcommand*{\fn}[1]{fn#1}
    \PagesCheckSetup{\let\fn\@gobble}
    \makeatother
    
    \addbibresource{biblatex-examples.bib}
    
    \begin{document}
    \null\vfill
    Cite a normal page.\footcite[18]{sigfridsson}
    Cite a footnote.\footcite[20\fn{2}]{sigfridsson}
    Now cite a footnote first.\footcite[35\fn{3}]{aksin}
    
    \clearpage
    \printbibliography
    \end{document}
    

相关内容