在 biblatex 中的最后一位作者后添加逗号

在 biblatex 中的最后一位作者后添加逗号

如何在参考书目中的最后一位作者后添加逗号?(基本上所有部分都需要用逗号分隔)我使用以下内容:

\usepackage[backend=biber, style=chem-acs, articletitle=false, natbib=true]{biblatex}
\DeclareNameAlias{default}{first-last}                          %puts firstname first
\DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{#1}}       %changes numbers in reference list to square brackets
\DeclareFieldFormat{journaltitle}{\mkbibemph{#1},}              %italic journal title with comma

在此处输入图片描述

答案1

chem-acs实现了特定的期刊样式,并非完全可定制。因此,样式中的许多分隔符都是硬编码的。虽然可以简单地更改它们,但将所有分隔符修改为逗号所需的代码很容易在序言中积累数百行代码。因此,最简单的方法可能是只取,重命名它,然后将每个实例chem-acs.bbx中的标点符号更改为。\setunit\addcomma\space

所以这是一个非常危险解决方法。我们告诉\setunit它忽略它的参数并始终打印\addcomma\space而不管样式实际上说什么。只要你真的想要,这就会起作用全部标点符号为逗号,但如果有地方需要其他符号,则会分解。

在以下 MWE 中它运行得相当好,但一般来说并不能保证。

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[backend=biber, style=chem-acs, articletitle=false, natbib=true]{biblatex}
\DeclareNameAlias{default}{given-family}
\DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{#1}}

\renewcommand*{\labelnamepunct}{\addcomma\space}

\makeatletter
\AtBeginBibliography{%
  \long\def\blx@setunit#1{%
    \iftoggle{blx@keepunit}
      {}
      {\long\gdef\blx@unitpunct{\addcomma\space}%
       \global\toggletrue{blx@unit}}}}
\makeatother

\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem \autocite{sigfridsson,aksin}

\printbibliography
\end{document}

E. Sigfridsson, U. Ryde,计算化学杂志,1998,19,377-395。

相关内容