formatar entrada de título no biblatex

formatar entrada de título no biblatex

Estou tentando compor uma lista de publicações usando biblatexe 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 titlecasepara 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}

insira a descrição da imagem aqui

Atualizar: Talvez uma explicação de por que titlecaseem vez de titledeveria ser usado possa ser útil aqui. Se olharmos a definição da macro titleem biblatex.defencontraremos 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 + subtitleinstruçõ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 titlee subtitle. Uma consequência disso é que se você tentar aplicar \MakeSentenceCasea titlediretiva de formatação, você estará alimentando-a com uma sequência de \printfieldse 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 titlecaseexatamente para permitir que se trate titleseparadamente subtitle, e esse seria o escopo apropriado para aplicar quaisquer diretivas de caixa de sentença.

informação relacionada