我想在句号后打印一个冒号,即人力资源(德文版编辑)。如何实现在字符串后面添加冒号{editors}
?
图片
平均能量损失
\documentclass[
a4paper,
12pt,
ngerman
]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usepackage[
language=german,
style=authoryear-ibid,
backend=biber,
hyperref=true,
dashed=false,
isbn=false,
doi=false,
maxcitenames=2,
maxbibnames=99,
sorting=nyt,
firstinits=true,
uniquename=init,
uniquelist=false,
autocite=footnote,
ibidtracker=true,
date=comp,
mincrossrefs=1,
]{biblatex}
\usepackage{xpatch}
\DefineBibliographyStrings{german}{%
byeditor = {Hrsg.},%
byeditor = {Hrsg.},%
andothers={et \addabbrvspace al\adddot},
}
\renewbibmacro*{byeditor+others}{%
\ifnameundef{editor}
{}
{\usebibmacro{byeditor+othersstrg}%
\setunit{\addcolon\addspace}%
\printnames[byeditor]{editor}%
\newunit%
\clearname{editor}%
\newunit}
\usebibmacro{byeditorx}%
\usebibmacro{bytranslator+others}}
\begin{filecontents}{\jobname.bib}
@incollection{abc,
Title = {Stuff},
Author = {Lamp, Jones},
Date = {2011},
Crossref ={ddd}
}
@collection{ddd,
Title= {Words},
Editor={Smith, John and Doe, Jane},
Date={2012},
Location={Towntown}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\nocite{*}
\listfiles
\begin{document}
Words.
\printbibliography
\end{document}
答案1
这种行为是由于biblatex
的标点符号跟踪器造成的。biblatex
它会尽其所能地避免使用“.,”或“:。”等双重标点符号。
“.”字符可以有不同的“含义”,它可以是(1)句号表示句子的结束,或者(2)它可以是缩写点表示缩写。默认情况下,biblatex
的标点符号跟踪器会将遇到的任何“。”视为句号(即句子结尾)。显然,句号后面直接出现冒号是不可取的。
但是在这里,“Hrsg.”中的“.”是一个缩写点,因此(与句号不同)并不特别反对后面跟冒号或逗号。
因此,我们需要做的就是确保“ biblatex
Hrsg.”中的“.”是一个点。这可以通过以下\isdot
命令完成(请参阅biblatex
文档§4.7.3添加标点符号,第 199 页)
\isdot
将先前插入的文字句点转换为缩写点。与 不同\adddot
,如果此命令前面没有句点,则不会插入任何内容。
那就这样吧byeditor = {Hrsg.\isdot}
。
然而,在这种特殊情况下(特别是在定义 bibstring 时),\adddot
更为合适(参见前面提到的章节的第 198 页)。文档)
\adddot
添加句号,除非句号前面没有任何标点符号。此命令的目的是在缩写后插入点。以这种方式插入的任何点都会被其他标点命令识别为点。此命令还可用于将先前插入的文字句号转换为缩写点。
所以我们只需写
byeditor = {Hrsg\adddot}