更改 biblatex 参考书目中“系列”+“编号”条目的外观

更改 biblatex 参考书目中“系列”+“编号”条目的外观

根据我正在撰写的文章的样式指南,我需要确保书籍系列的标题以斜体打印,前面是等号加空格,后面是逗号、该系列中的编号和句号,所有这些都括在括号中,并且右括号后没有句号。例如

Girvan,R.(1931 年)。天使手册。 (=远洋手册, 4.) 哈勒姆:HD Tjeenk & Zoon。

请注意,括号内只有系列标题是斜体。各种符号(=,.)和括号本身都是直立字体。

我可以在文件的前言中包含哪些命令.tex来生成这样的参考书目?

梅威瑟:

\documentclass{article}
\usepackage[style=authoryear]{biblatex}
\begin{filecontents}{\jobname.bib}
@BOOK{girvan1931,
    AUTHOR = "R. Girvan",
    TITLE = "Angelsaksisch handboek",
    YEAR = "1931",
    LOCATION = "Haarlem",
    NUMBER = "4",
    PUBLISHER = "H. D. Tjeenk Willink \& Zoon",
    SERIES = "Oudgermaansche handboeken"}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{girvan1931}
\printbibliography
\end{document}

在此处输入图片描述

答案1

您可能喜欢对 的这种重新定义bibmacro series+number。但在这样做之前,我们要确保series(以斜体印刷 [强调]),至少对于books、inbooks、collections 和 incollections。

\DeclareFieldFormat[book,inbook,incollection,collection]{series}{\mkbibemph{#1}}

然后我们定义series+number宏,因此它确实打印格式“(= series,#)”,但前提是系列和数字都已定义,否则使用稍微改变的宏的标准形式。

\renewbibmacro*{series+number}{%
  \ifboolexpr{not test {\iffieldundef{series}} and not test {\iffieldundef{number}}}
    {\printtext[parens]{%
      \printtext{=\addspace}%
      \printfield{series}%
      \setunit*{\addcomma\space}%
      \printfield{number}%
      \printtext{\addperiod}}
      \nopunct}
    {\printfield{series}%
     \setunit*{\addcomma\space}%
     \printfield{number}
     \newunit}}

如果你总是想在“(=系列)”中看到,series即使没有数字,你可能会喜欢这个重新定义

\renewbibmacro*{series+number}{%
  \iffieldundef{series}
    {}
    {\printtext[parens]{%
     \printtext{=\addspace}%
     \printfield{series}%
     \setunit*{\addcomma\space}%
     \printfield{number}%
     \printtext{\addperiod}}
     \nopunct}}

数学家协会

\documentclass{article}
\usepackage[style=authoryear]{biblatex}
\begin{filecontents}{\jobname.bib}
@BOOK{girvan1931,
    AUTHOR = "R. Girvan",
    TITLE = "Angelsaksisch handboek",
    YEAR = "1931",
    LOCATION = "Haarlem",
    NUMBER = "4",
    PUBLISHER = "H. D. Tjeenk Willink \& Zoon",
    SERIES = "Oudgermaansche handboeken"}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\DeclareFieldFormat[book,inbook,incollection,collection]{series}{\mkbibemph{#1}}
\renewbibmacro*{series+number}{%
  \ifboolexpr{not test {\iffieldundef{series}} and not test {\iffieldundef{number}}}
    {\printtext[parens]{%
      \printtext{=\addspace}%
      \printfield{series}%
      \setunit*{\addcomma\space}%
      \printfield{number}%
      \printtext{\addperiod}}
      \nopunct}
    {\printfield{series}%
     \setunit*{\addcomma\space}%
     \printfield{number}
     \newunit}}

\begin{document}
\nocite{girvan1931,wilde,cicero}
\printbibliography
\end{document}

产量 在此处输入图片描述

请注意,seriesforwilde没有括在括号中并以 开头=,它只打印“十九世纪英美戏剧”。通过重新定义,在第二次重新定义中它将打印为“(=十九世纪英美戏剧。)”,这对我来说似乎有点奇怪:如果number存在a =,则表示title在某种程度上等同于number中的第 本书series,但如果没有数字,则符号=似乎表明等同于它出现的title整体,这当然是无稽之谈。series


第三种可能性是按照以下方式重新定义宏。这里,只有当数字可用时才显示等号(以避免某种类别错误)。

\renewbibmacro*{series+number}{%
  \iffieldundef{series}
    {}
    {\printtext[parens]{%
     \iffieldundef{number}
       {}
       {\printtext{=\addspace}}%
     \printfield{series}%
     \iffieldundef{number}
       {}
       {\setunit*{\addcomma\space}%
        \printfield{number}}%
     \printtext{\addperiod}}
     \nopunct}}

相关内容