如何使用 biblatex 在特定数据库条目的括号中输入缩写点?

如何使用 biblatex 在特定数据库条目的括号中输入缩写点?

我想引用一篇出现在已编辑卷中的论文,该论文的标题以缩写结尾。我如何判断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}

两种情况下的输出都是期望的

Thor, AU (2020)。“abc”。收录于:*xyz 的发展(18-20 世纪)*。E. di Tor 编。出版地:出版商。

一个非常类似的问题在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}

产生这个:

相关内容