Biblatex 标点符号识别

Biblatex 标点符号识别

我正在尝试切换到 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>字符串为dotcommasemicoloncolonperiodexclamquestion参数<characters>是无分隔符的标点符号列表。有效标点符号<characters>包括逗号、分号、冒号、句号、感叹号、问号和星号。<characters>参数中的句号表示句末句号,星号表示缩写后的点。

默认值

\DeclarePunctuationPairs{comma}{*!?}

因为逗号允许组合“!,”、“?,”和“.,”(如果点表示缩写)。您不需要“?,”和“!,”,因此您需要设置

\DeclarePunctuationPairs{comma}{*}

相关内容