我正在尝试使用 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}