注释中第二次引用会导致额外的句号

注释中第二次引用会导致额外的句号

如果我有一个 note=,它本身包含一个 \cite,那么第二个 \cite 就会有一个前导句点“。”

例如,在下面的输出中,我得到了Another sentence.[. 2],但我期望Another sentence.[2]

[1]
References
[1] A sentence.[2] Another sentence.[. 2] Yet another sentence[2]
[2] An Author. “A Title”. In: ().

以下是屏幕截图:

输出显示“.2”而不是“2”

以下是 MWE:

\documentclass{article}
\usepackage{biblatex}
\addbibresource{\jobname.bib}

\begin{filecontents}{\jobname.bib}
@misc{AFootnote,
  note={A sentence.\cite{AnArticle}
    Another sentence.\cite{AnArticle}
    Yet another sentence.\cite{AnArticle}\nopunct}
}

@article{AnArticle,
author={An Author},
title={A Title},
}
\end{filecontents}

\begin{document}

\cite{AFootnote}

\printbibliography

\end{document}

为了编译该示例,我使用:

        pdflatex book
        biber book
        pdflatex book
        biber book
        pdflatex book
        pdflatex book

我在 macOS 下运行这些版本的 biber 和 pdflatex:

bash-3.2$ biber --version
biber version: 2.19
bash-3.2$ pdflatex --version
pdfTeX 3.141592653-2.6-1.40.25 (TeX Live 2023)
kpathsea version 6.3.5
Copyright 2023 Han The Thanh (pdfTeX) et al.
There is NO warranty.  Redistribution of this software is
covered by the terms of both the pdfTeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the pdfTeX source.
Primary author of pdfTeX: Han The Thanh (pdfTeX) et al.
Compiled with libpng 1.6.39; using libpng 1.6.39
Compiled with zlib 1.2.13; using zlib 1.2.13
Compiled with xpdf version 4.04
bash-3.2$ 

是的,我知道这很奇怪。潜在的出版商喜欢在每章末尾混合使用脚注和参考文献,因此对于脚注,我使用带有注释的杂项。一些脚注本身引用了其他来源。奇怪的是,第二个引用有前导句号。使用 \supercite 会产生类似的结果,并以“。”开头。

答案1

这基本上是同一个问题https://github.com/plk/biblatex/issues/988biblatex:\parencite 在注释字段中打印虚假的;带有 authoryear-icomp 样式(也biblatex:\DeclareCiteCommand 在 \printfield 和 \printnames 之间添加分号,但只是有时): 在参考书目上下文中,biblatex不会自动重置\...cite命令的标点符号缓冲区。这允许\...cite命令直接与参考书目宏和其他在参考书目中生成文本的代码一起工作,但是当存在不是由其自身生成的文本和标点符号(如字段的实际内容)biblatex时,它的效果不是特别好。biblatex

链接中讨论了一些其他解决方案,但对于您的用例,@misc本质上始终是一个正常的脚注,我可能会告诉biblatex不要假设note这样的条目在参考书目中。

\documentclass{article}
\usepackage{biblatex}

\DeclareFieldFormat[misc]{note}{%
  \togglefalse{blx@bibliography}%
  #1%
}

\begin{filecontents}{\jobname.bib}
@misc{AFootnote,
  note = {A sentence.\cite{AnArticle}
          Another sentence.\cite{AnArticle}
          Yet another sentence.\cite{AnArticle}\nopunct},
}
@article{AnArticle,
  author = {An Author},
  title  = {A Title},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
\cite{AFootnote}

\printbibliography
\end{document}

[1] 一个句子。[2] 另一个句子。[2] 又一个句子。[2] [2] 一位作者。“一个标题”。在:()。


请注意notes2bib包裹它允许您使用更像普通\footnote命令的界面将脚注发送到参考书目。特别是,您不必手动将脚注写入文件.bib(让我们面对现实,它们实际上并不属于语义 - 在内部,该包执行的操作与您相同,但它向最终用户隐藏了它)。在大多数“正常”情况下,此包不会遇到同样的问题,因为它为“脚注”定义了一个专用驱动程序,该驱动程序在打印注释之前不使用标点符号缓冲区。

\documentclass{article}
\usepackage[backend=biber, style=numeric, sorting=none,]{biblatex}
\usepackage{notes2bib}

\begin{filecontents}{\jobname.bib}
@article{AnArticle,
  author = {An Author},
  title  = {A Title},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
\bibnote{A sentence.\cite{AnArticle}
          Another sentence.\cite{AnArticle}
          Yet another sentence.\cite{AnArticle}}

\printbibliography
\end{document}

[1] 一个句子。[2] 另一个句子。[2] 又一个句子。[2]。[2] 一位作者。“一个标题”。在:()。

如果你确实需要类似的修复notes2bib,你可以使用

\DeclareFieldFormat[bibnote]{note}{%
  \togglefalse{blx@bibliography}%
  #1%
}

相关内容