我的文档(LuaLaTeX):
\documentclass[a4paper,oneside,12pt]{scrreprt}
\usepackage{fontspec}
\usepackage[backend=biber,firstinits=true,sorting=nyt,maxbibnames=3]{biblatex}
\usepackage[ngerman]{babel}
\addbibresource{lit.bib}
\begin{document}
\cite{schmidt14}
\printbibliography
\end{document}
文件“lit.bib”:
@phdthesis{schmidt14,
author = {Schmidt, Johannes},
title = {Testtest},
school = {Test Univ.},
year = {2014},
}
但是“Diss.”(德语中博士论文的缩写)和学校之间没有逗号:
我该怎么办?如何修改默认样式?其他样式会在那里放一个逗号。
(顺便说一句,这
\usepackage[ngerman]{babel}
没关系,英语也有同样的问题。尽管如此,我还是把它包括进去作为最小的例子。该文档是用德语写的。)
谢谢你的帮助!
答案1
不幸的是,该type
字段不是在宏中打印的,而是直接在驱动程序中打印的,所以我们必须修改@thesis
驱动程序。我们可以使用xpatch
包裹。
\xpatchbibdriver{thesis}
{\printfield{type}%
\newunit}
{\printfield{type}%
\setunit{\addcomma\space}}
{}{}
我们只需\setunit{\addcomma\space}
在类型字段后面添加一个显式的,而不是正常的\newunit
。
\documentclass{article}
\usepackage{filecontents}
\usepackage[backend=biber,firstinits=true,sorting=nyt,maxbibnames=3]{biblatex}
\usepackage[ngerman]{babel}
\begin{filecontents*}{\jobname.bib}
@phdthesis{schmidt14,
author = {Schmidt, Johannes},
title = {Testtest},
school = {Test Univ.},
year = {2014},
}
\end{filecontents*}
\usepackage{xpatch}
\xpatchbibdriver{thesis}
{\printfield{type}%
\newunit}
{\printfield{type}%
\setunit{\addcomma\space}}
{}{}
\addbibresource{\jobname.bib}
\begin{document}
\cite{schmidt14}
\printbibliography
\end{document}
答案2
将这些行添加到你的序言中:
\usepackage{xpatch}
\xpatchbibdriver{thesis}{%
\printfield{type}%
\newunit
}
{%
\printfield{type}%
\setunit{\addcomma\space}
}{}{}