标题和版本之间的逗号

标题和版本之间的逗号

按照另一个问题的答案我删除了书名末尾的标点符号,如下所示:

\DeclareFieldFormat[article]{title}{#1\addcomma}
\DeclareFieldFormat[book]{title}{\textit{#1}\nopunct}

这也会删除书名和版本之间的逗号,但我需要书名和版本之间的逗号。有没有办法在特定情况下恢复逗号?

梅威瑟:

\documentclass{article}
\usepackage[style=authoryear]{biblatex}
\addbibresource{\jobname.bib}
\begin{filecontents}{\jobname.bib}
@book{crut1997,
    Address = {Cambridge},
    Author = {Alan Cruttenden},
    Edition = {2},
    Publisher = {Cambridge University Press},
    Title = {Intonation},
    Year = 1997}
\end{filecontents}
\DeclareFieldFormat[article]{title}{#1\addcomma}
\DeclareFieldFormat[book]{title}{\textit{#1}\nopunct}
\begin{document}
\nocite{*}
\printbibliography
\end{document}

答案1

在我看来,你只需要在出版商、地点和日期周围的括号前删除标点符号即可。可以使用

\renewbibmacro*{publisher+location+date}{%
  \setunit{\addspace}%
  \printtext[parens]{%
    \printlist{location}%
    \iflistundef{publisher}
      {\setunit*{\addcomma\space}}
      {\setunit*{\addcolon\space}}%
    \printlist{publisher}%
    \setunit*{\addcomma\space}%
    \usebibmacro{date}}%
    \newunit}

其中\setunit{\addspace}\printtext[parens]{是该宏标准版本的补充。

由于biblatex标点符号跟踪器的工作方式,它\setunit{\addspace}会覆盖它之前的任何其他标点符号,并且我们在括号前留下一个很好的单个空格。

答案2

我将书目信息移至单独的文件。我编辑了我的答案。基本上添加了一个测试来查看版本字段是否已定义。基于此,我们使用句号或逗号。现在它可以在有和没有版本字段的情况下工作。

PS. 当然,如果您在标题和版本之间添加其他字段,则可能会失败。此更改会影响书籍、合集和论文集类型。可以仅限于书籍。

\documentclass{article}
\usepackage[style=authoryear,backend=biber]{biblatex}
\addbibresource{input.bib}
\DeclareFieldFormat[article]{title}{#1\addcomma}

\renewbibmacro*{maintitle+title}{%
  \iffieldsequal{maintitle}{title}
    {\clearfield{maintitle}%
     \clearfield{mainsubtitle}%
     \clearfield{maintitleaddon}}
    {\iffieldundef{maintitle}
       {}
       {\usebibmacro{maintitle}%
    \newunit\newblock
    \iffieldundef{volume}
      {}
      {\printfield{volume}%
           \printfield{part}%
           \setunit{\addcolon\space}}}}%
  \usebibmacro{title}%
  \iffieldundef{edition}% <----- Added this test and next 2 lines
    {\nopunct}%
    {\addcomma}%
  \newunit}


\begin{document}
\cite{crut1997}
\printbibliography
\end{document}

相关内容