如何選擇性地刪除 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. 奇特科學內容的標題。

但是,我想遵循一些期刊引用規則,要求刪除標題後面的逗號分隔符號。所以我的目標是:

姓氏,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 年。

相關內容