我试图将参考列表中每篇文章标题中的每个单词都大写(因此每个标题都类似这样)。但是,无论\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}