使用 BibLaTeX,我希望用冒号分隔标题和副标题,就像某些引用样式一样。但是,我希望有一种机制可以检测标题是否以引号结尾,如果以引号结尾,则省略subtitlepunct
。
§4.7.3 中的文档指出:
\addcolon
添加冒号,除非其前面有逗号、分号、另一个冒号或句号。
我可以在该列表中添加“引号”吗?即,是否有解决方案可以避免这种情况\isdot
?
\documentclass{article}
\begin{filecontents}{test.bib}
@book{testbook,
author = {A. U. Thor},
year = {2020},
title = {An example title?},
subtitle = {An example subtitle}
}
\end{filecontents}
\usepackage{biblatex}
\addbibresource{test.bib}
\renewcommand*{\subtitlepunct}{\addcolon\space}
\begin{document}
\nocite{testbook}
\printbibliography
\end{document}
答案1
您可以\addcolon
在之前声明可接受的标点符号\DeclarePunctuationPairs
。默认设置
\DeclarePunctuationPairs{colon}{*!?}
允许在冒号前使用缩写点、感叹号和问号。在所有其他标点符号之后,冒号将被隐藏。
你可能想要
\documentclass{article}
\usepackage{biblatex}
\renewcommand*{\subtitlepunct}{\addcolon\space}
\DeclarePunctuationPairs{colon}{*}
\begin{filecontents}{\jobname.bib}
@book{testbook,
author = {A. U. Thor},
year = {2020},
title = {An example title?},
subtitle = {An example subtitle}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{testbook}
\printbibliography
\end{document}
笔记这\DeclarePunctuationPairs
通常是特定于语言的,因此通常需要存在于 中\DefineBibliographyExtras
。这在 MWE 中不是必需的(它既不加载babel
也不加载polyglossia
),但可能与你的实际应用程序非常相关。请参阅Biblatex 标点符号识别更多细节。