在 biblatex 中将冒号后的单词大写

在 biblatex 中将冒号后的单词大写

我正在尝试使用 biblatex 和 biber 尽可能地模拟 bibtex 普通样式的默认大写。(我之所以改用 biber/biblatex,是因为它有更好的格式选项和不相关的优势)。

考虑以下 bibtex 条目:

@ARTICLE{some-ref,
  AUTHOR      = "John Doe",
  TITLE       = "How to Count: Easy as One, Two, Three",
  JOURNAL     = "Letters on Numbers",
  VOLUME      = 15,
  MONTH       = jan,
  YEAR        = 2000,
  PAGES       = "123-456"
}

在 bibtex 纯文本样式中,我们可以得到我想要的,即标题大写,如下所示(注意冒号后的大写):

Doe,John。“如何数数:简单如一、二、三。”《数字上的字母》。2000 年。

在 biber 中,我们得到了我们输入的精确的标题大写字母:

Doe,John。“如何数数:简单如一、二、三。”《数字上的字母》。2000 年。

或者,使用 \MakeSentenceCase 宏,我们可以得到:

Doe,John。“如何数数:简单如一、二、三。”《数字上的字母》。2000 年。

我已经可以决定对哪些标题应用句子大小写(使用biblatex 中标题的句子大小写),但是如何使用类似于 MakeSentenceCase 的宏将冒号后面的字母立即大写?我可以创建一个自定义宏来调用吗?像这样 (将 biblatex 中每个单词的首字母大写)?

答案1

这可以使用以下代码来实现biblatex-ieee

\begin{filecontents*}{\jobname.bib}
@ARTICLE{some-ref,
  AUTHOR      = "John Doe",
  TITLE       = "How to Count: Easy as One, Two, Three",
  JOURNAL     = "Letters on Numbers",
  VOLUME      = 15,
  MONTH       = jan,
  YEAR        = 2000,
  PAGES       = "123-456"
}
\end{filecontents*}
\documentclass{article}
\usepackage[style = numeric]{biblatex}
\addbibresource{\jobname.bib}
\makeatletter
\newcommand*\bbx@colon@search[2]{%
  \bbx@colon@search@aux#1#2: \stop
}
\long\def\bbx@colon@search@aux#1#2: #3\stop{%
  #1{#2}%
  \ifblank{#3}
    {}
    {%
      : %
      \bbx@colon@search@aux#1#3\stop
    }%
}
\DeclareFieldFormat{titlecase}{\bbx@colon@search\MakeSentenceCase{#1}}
\makeatother
\begin{document}
\nocite{*}
\printbibliography
\end{document}

相关内容