如何在参考书目中的多个字段周围添加一对括号?
标准的作者年份格式如下:
利奥·弗罗贝尼乌斯(1935年)。帕德马。文化与海洋学的主人。卷3. 一些系列。杜塞尔多夫:Diederichs
我的目标是:
利奥·弗罗贝尼乌斯(1935):帕德马。文化与海洋学的主人(某些系列,第 3 卷)。杜塞尔多夫:Diederichs
用冒号代替点没有问题。
\documentclass{scrartcl}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@BOOK{Frobenius1935,
title = {Paideuma. Umrisse einer Kultur- und Seelenlehre},
publisher = {Diederichs},
year = {1935},
author = {Leo Frobenius},
series = {Some Series},
volume = {3},
address = {Düsseldorf},
}
\end{filecontents}
\usepackage[backend=bibtex,style=authoryear]{biblatex}
\addbibresource{\jobname.bib}
\renewcommand*{\labelnamepunct}{\addcolon\addspace}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
答案1
每个书目驱动程序的书目字段的顺序由命令声明DeclareBibliographyDriver{<eg. book>}
。对于示例书,我想展示使用卷 + 编号 + 系列的部分代码:
\DeclareBibliographyDriver{book}{%
....
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\usebibmacro{series+number}%
....
}
要设置多个字段的括号,您必须选择:
- 重新定义每一个书目驱动程序
- 使用包
regexpatch
修补书目驱动程序
这两个选项都使用在命令内部执行输入字符串以获取括号的方法\printtext[parens]{...}
。在下面的 MWE 中,我使用第二种方法:
% arara: pdflatex
% arara: biber
% arara: pdflatex
% arara: pdflatex
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@BOOK{Frobenius1935,
title = {Paideuma. Umrisse einer Kultur- und Seelenlehre},
publisher = {Diederichs},
year = {1935},
author = {Leo Frobenius},
address = {Düsseldorf},
}
series = {Some Series},
volume = {3},
\end{filecontents}
\usepackage[style=authoryear]{biblatex}
\addbibresource{\jobname.bib}
\renewcommand*{\labelnamepunct}{\addcolon\addspace}
\usepackage{regexpatch}
% Print ISSN
\xpatchbibdriver{book}
{\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\usebibmacro{series+number}%
}%
{%
\ifboolexpr{%
test {\iffieldundef{volume}} and
test {\iffieldundef{part}} and
test {\iffieldundef{series}} and
test {\iffieldundef{number}}
}{}{%
\printtext[parens]{%
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}%
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\usebibmacro{series+number}}%
}%
}
{\typeout{******WORKS******}}{\typeout{*******FAILS********}}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
顺便问一下:您为什么要使用bibtex
而不是的优点biber
?