
Estou tentando compor uma lista de publicações usando biblatex
e gostaria de alterar os títulos das entradas para maiúsculas e minúsculas (ou maiúsculas/minúsculas/título). Tentei usar \DeclareFieldFormat{title}{\MakeSentenceCase{#1}}
mas não parece funcionar.
MWE:
%\RequirePackage{filecontents}
\begin{filecontents}{pub.bib}
@article{article1,
author={Author One and Author Two},
title={Title of Article One},
date= {2018},
}
@article{article2,
author={Author One and Author Two},
title={Title of article two},
date= {2017},
}
\end{filecontents}
\documentclass{article}
\usepackage[
backend=biber,
sorting=ynt,
giveninits=true,
maxbibnames=99,
]{biblatex}
\DeclareFieldFormat*{title}{\MakeCapital{#1}} % Change titles to sentence case
\addbibresource{pub.bib}
\begin{document}
\nocite{*}
\printbibliography[type=article, title={Publications}]
\end{document}
Responder1
Você deve usar titlecase
para isso.
\DeclareFieldFormat*{titlecase}{\MakeSentenceCase{#1}}
Um MWE completo:
%\RequirePackage{filecontents}
\begin{filecontents}{pub.bib}
@article{article1,
author={Author One and Author Two},
title={Title of Article One},
date= {2018},
}
@article{article2,
author={Author One and Author Two},
title={Title of article two},
date= {2017},
}
\end{filecontents}
\documentclass{article}
\usepackage[
backend=biber,
sorting=ynt,
giveninits=true,
maxbibnames=99,
]{biblatex}
\DeclareFieldFormat*{titlecase}{\MakeSentenceCase{#1}} % Change titles to sentence case
\addbibresource{pub.bib}
\begin{document}
\nocite{*}
\printbibliography[type=article, title={Publications}]
\end{document}
Atualizar: Talvez uma explicação de por que titlecase
em vez de title
deveria ser usado possa ser útil aqui. Se olharmos a definição da macro title
em biblatex.def
encontraremos o seguinte:
\newbibmacro*{title}{%
\ifboolexpr{
test {\iffieldundef{title}}
and
test {\iffieldundef{subtitle}}
}
{}
{\printtext[title]{%
\printfield[titlecase]{title}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{subtitle}}%
\newunit}%
\printfield{titleaddon}}
Observe que a diretiva de formatação [title]
se aplica às title + subtitle
instruções de impressão. Isso é necessário porque é um requisito comum dos estilos de bibliografia que o título de alguns tipos de entradas comuns seja definido entre aspas, ou seja, um único par de aspas para "título" e "subtítulo". A diretiva de formatação [titlecase]
é aplicada individualmente a title
e subtitle
. Uma consequência disso é que se você tentar aplicar \MakeSentenceCase
a title
diretiva de formatação, você estará alimentando-a com uma sequência de \printfield
se instruções de pontuação, com suas próprias diretivas de formatação individuais [titlecase]
. Algo que não se comporta bem, como você percebeu. Mas, mesmo que esta fosse uma string higienizada, você obteria uma primeira letra minúscula indesejada do subtítulo (você estaria alimentando as duas juntas para \MakeSentenceCase
). Então, em resumo, existe titlecase
exatamente para permitir que se trate title
separadamente subtitle
, e esse seria o escopo apropriado para aplicar quaisquer diretivas de caixa de sentença.