参考书目中的多个字段同时用括号括起来

参考书目中的多个字段同时用括号括起来

如何在参考书目中的多个字段周围添加一对括号?

标准的作者年份格式如下:

利奥·弗罗贝尼乌斯(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}%
  ....
}

要设置多个字段的括号,您必须选择:

  1. 重新定义每一个书目驱动程序
  2. 使用包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

相关内容