如何选择性地删除 biblatex 中两个输入字段之间的标点符号

如何选择性地删除 biblatex 中两个输入字段之间的标点符号

@thesis我想更改输入字段的输出。目前,我使用的是biblatex样式chem-acs

使用条目:

@thesis{ABC2019,
author = {LastName, A.},
school = {University of example},
title = {Title of fancy science stuff},
type = {PhD thesis},
year = {2019}
}

我得到:

姓氏,A. 花哨的科学东西的标题。,博士论文,例如大学,2019 年。

但是,我想遵循一些期刊引用规则,这些规则要求删除标题后的逗号分隔符。所以我的目标是:

姓氏,A。花哨科学内容的标题。博士论文,埃德蒙顿大学,2019 年。

有什么想法如何实现这一点吗?

答案1

无论您实际想要的输出是什么,您目前获得的输出看起来都不太正确。

吉尔,伯爵 I.,圣人、主教、吟游诗人和音乐,《十二世纪的奥克尼伯爵领地。音乐学研究》,博士论文,乌普萨拉:乌普萨拉大学,1985 年。

大多数人会认为双标点符号“。”是个错误。我已向https://github.com/josephwright/biblatex-chem/issues/16

如果你想在标题后加逗号,解决方法很简单

\DeclareFieldFormat*{title}{#1}

但是您想要一个时期,因此还需要做更多的工作。

有几种可能的方法来解决这个问题,它们都有各自的优点和缺点。

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

\usepackage[style=chem-acs, backend=biber]{biblatex}

\renewbibmacro*{title}{%
  \ifboolexpr{
    test {\iffieldundef{title}}
    and
    test {\iffieldundef{subtitle}}
  }
    {}
    {\printtext[title]{%
       \printfield[titlecase]{title}%
       \setunit{\subtitlepunct}%
       \printfield[titlecase]{subtitle}}%
     \newunit}%
  \printfield{titleaddon}%
  \printunit{\addperiod\space}}

\addbibresource{biblatex-examples.bib}

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

吉尔,伯爵 I.,圣人、主教、吟游诗人和音乐,《十二世纪的奥克尼伯爵领地》。音乐学研究。博士论文,乌普萨拉:乌普萨拉大学,1985 年。

相关内容