![Biblatex 标点符号识别](https://linux22.com/image/374860/Biblatex%20%E6%A0%87%E7%82%B9%E7%AC%A6%E5%8F%B7%E8%AF%86%E5%88%AB.png)
我正在尝试切换到 biblatex/biber。我开始使用 authortitle 样式来编写参考书目。对于我的论文,我需要对样式进行大量更改。在此过程中,我将参考书目中输入字段之间的分隔符更改为逗号而不是点。为此,我使用了以下命令:
\renewcommand*{\newunitpunct}{\addcomma\space}
后来,当我添加标题中带有问号的文章时,我意识到我对 的重新定义\newunitpunct
一定破坏了一些自动标点符号识别。或者至少,我认为这是问题所在。因为当我删除重新定义时,我最终以点作为分隔符,但“标点符号识别”仍然有效。
知道如何解决这个问题吗?
谢谢!
PS:我已附加了一个工作样本。
\documentclass{scrartcl}
%
\usepackage[%
backend=biber,%
citestyle=authortitle-comp,%
bibstyle=authortitle,%
]{biblatex}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{lipsum}
\usepackage{filecontents}
\usepackage{verbatim}
\usepackage{csquotes}
%
\addbibresource{\jobname.bib}
\renewbibmacro{in:}{% kein 'in' bei @article
\ifentrytype{article}{}{\printtext{\bibstring{in}\intitlepunct}}}
%
\makeatletter
\DeclareFieldFormat[article]{title}{{#1%\isdot
}}
\makeatother
%
%
% ==== This is the problem, I think...When I delete this line it works.
\renewcommand*{\newunitpunct}{\addcomma\space}
% === BIB
\begin{filecontents}{\jobname.bib}
@article{test,
author ={Test Author},
title ={Interesting Title?},
journal ={Journal},
year ={2018},
}
\end{filecontents}
%
\begin{document}
% ===
\printbibliography[title=Bibliography]
This is an example.\footcite{test}\\
I wanted the separator between entry fields to be a comma not a dot. Thats why I changed it to \verb|\addcomma|.\\ But it seems like \verb|\newunitpunct| was configured to \enquote{know} if there were punctuations in the title. Now because of my changes it \verb|\newunitpunct| doesn't recognise those punctuations anymore. Thus I end up with \enquote{\textbf{?,}}
instead of \enquote{\textbf{?}}.\\
How can I make it work?
\end{document}
答案1
\DeclarePunctuationPairs
是您要查找的命令。该命令是特定于语言的,因此必须存在于 中\DefineBibliographyExtras
。
\DefineBibliographyExtras{german}{\DeclarePunctuationPairs{comma}{*}}
这种设置总是会删除除缩写点之外的所有标点符号后的逗号。
该命令记录在§4.7.5中配置标点和大写参见手册第 246-247biblatex
页
语法是\DeclarePunctuationPairs{<identifier>}{<characters>}
<identifier>
该命令声明了可以跟在后面而不被删除的标点符号。
选择
<identifier>
要配置的命令。标识符对应于 §4.7.3 中不带前缀的标点符号命令的名称\add
,即有效<identifier>
字符串为dot
、comma
、semicolon
、colon
、period
、exclam
。question
参数<characters>
是无分隔符的标点符号列表。有效标点符号<characters>
包括逗号、分号、冒号、句号、感叹号、问号和星号。<characters>
参数中的句号表示句末句号,星号表示缩写后的点。
默认值
\DeclarePunctuationPairs{comma}{*!?}
因为逗号允许组合“!,”、“?,”和“.,”(如果点表示缩写)。您不需要“?,”和“!,”,因此您需要设置
\DeclarePunctuationPairs{comma}{*}