将 biblatex 中每个单词的首字母大写

将 biblatex 中每个单词的首字母大写

我试图将参考列表中每篇文章标题中的每个单词都大写(因此每个标题都类似这样)。但是,无论\MakeSentenceCase我做什么,它都会保持活动状态。这就是我尝试完成此操作的方法:

\usepackage[english]{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=authoryear]{biblatex}
\DeclareFieldFormat[article]{title}{\MakeCapital{#1}}

手册还提到了\MakeUppercase,我也试过了,也没有任何变化。当我使用\textbf(仅用于测试目的)时,标题变成粗体标题。DeclareFieldFormat工作也是如此,只是没有MakeCapital

答案1

\MakeCapital仅适用于完整参数的第一个字母。据我所知,biblatex没有特殊的宏可以将单词的每个首字母转换为大写。

以下是一个可能实现的例子。我使用了一个书籍条目作为此示例(您可以将其更改为您需要的任何内容:

 \RequirePackage{filecontents}
\begin{filecontents*}{demo.bib}
@BOOK{Freeman:2003,
  title = {The measurement of environmental and resource values: Theory and
    methods},
  publisher = {Resources for the Future},
  year = {2003},
  author = {A. Myrick III Freeman},
  address = {Washington},
  owner = {Asus},
  timestamp = {2012.04.06}
}
\end{filecontents*}
\documentclass{article}
\usepackage[english]{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=authoryear]{biblatex}
\addbibresource{demo.bib}

\makeatletter
\def\FirstLetterUppercase#1{\expandafter\FirstLetterUppercase@i#1 \@nil}
\def\FirstLetterUppercase@i#1#2 #3\@nil{%
  \MakeUppercase{#1}#2
  \ifx\relax#3\relax\def\next@i{}\else\def\next@i{\expandafter\FirstLetterUppercase@i#3\@nil}\fi%
  \next@i}
\makeatother
\renewbibmacro*{title}{\printtext{\printfield{title}}\newunit}
\DeclareFieldFormat*[book]{title}{\protect\FirstLetterUppercase{#1}}
\begin{document}

\FirstLetterUppercase{now i will see what happens.}

\nocite{*}
\printbibliography

\end{document}

在此处输入图片描述

相关内容