我想引用一篇出现在已编辑卷中的论文,该论文的标题以缩写结尾。我如何判断biblatex
该末尾的点booktitle
是缩写点?
手册指出\isdot
,但我似乎使用错误。MWE:
\documentclass{article}
\usepackage{filecontents}
\usepackage[style=authoryear]{biblatex}
\begin{filecontents}{bib.bib}
@incollection{VanRooyFca,
address = {Place},
title = {abc},
booktitle = {Development of xyz (18--20th cent.\isdot)},
publisher = {Publisher},
year = {2020},
author = {A. U. Thor},
editor = {E. di Tor},
}
\end{filecontents}
\addbibresource{bib.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
(是的,原始出版物的标题中有一个缩写,这很奇怪)
答案1
这是一个非常有趣的问题。biblatex
的标点符号跟踪器的设置方式意味着它会忽略所有类型的括号。 这意味着对于标点符号跟踪器来说,标题可能已经是
booktitle = {Development of xyz 18--20th cent.\isdot},
在这种情况下,很明显标点符号跟踪器应该发挥作用并抑制双重标点符号(即缩写点和之后的句末句号):
*Thor, AU (2020)。“abc”。在:xyz 18 至 20 世纪的发展。编辑作者:E. di Tor。地点: 出版商。
看起来不对。你会想要
Thor, AU (2020)。“abc”。在:xyz 18 至 20 世纪的发展编辑作者:E. di Tor。地点: 出版商。
有两种方法可以解决这个问题。
第一种方法是使用 手动重置括号后的标点符号跟踪器\@
。
\documentclass{article}
\usepackage[style=authoryear]{biblatex}
\begin{filecontents}{\jobname.bib}
@incollection{VanRooyFca,
address = {Place},
title = {abc},
booktitle = {Development of xyz (18--20th cent.\isdot)\@},
publisher = {Publisher},
year = {2020},
author = {A. U. Thor},
editor = {E. di Tor},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
第二种方法确保括号对于biblatex
标点符号跟踪器不再不可见。
\documentclass{article}
\usepackage[style=authoryear]{biblatex}
\makeatletter
\def\blx@setsfcodes{%
\let\blx@setsfcodes\relax
\let\frenchspacing\blx@setfrcodes
\let\nonfrenchspacing\blx@setencodes
\ifnum\sfcode`\.>2000
\blx@setencodes
\else
\blx@setfrcodes
\fi
\@setquotesfcodes
\sfcode`\(=\@m
\sfcode`\)=\@m
\sfcode`\[=\@m
\sfcode`\]=\@m
\sfcode`\<=\@m
\sfcode`\>=\@m}
\makeatother
\begin{filecontents}{\jobname.bib}
@incollection{VanRooyFca,
address = {Place},
title = {abc},
booktitle = {Development of xyz (18--20th cent.\isdot)},
publisher = {Publisher},
year = {2020},
author = {A. U. Thor},
editor = {E. di Tor},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
两种情况下的输出都是期望的
一个非常类似的问题在BibLaTeX 括号后的标点符号,但这\isdot
已经足够了,因为.,
缩写点和逗号是一个有效的组合。
答案2
一个解决方案是在标题中添加另一个句号。然后 biblatex 将使用它作为最终标点。
所以这:
\documentclass{article}
\usepackage{filecontents}
\usepackage[style=authoryear]{biblatex}
\begin{filecontents}{bib.bib}
@incollection{VanRooyFca,
address = {Place},
title = {abc},
booktitle = {Development of xyz (18--20th cent.).},
publisher = {Publisher},
year = {2020},
author = {A. U. Thor},
editor = {E. di Tor},
}
\end{filecontents}
\addbibresource{bib.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}