
Como posso personalizar os nomes e a parte do ano do labelalpha
campo separadamente? Por exemplo, quero a parte do nome em versalete, enquanto o número que representa o ano em algarismos antigos.
MWE:
\documentclass{article}
\usepackage[style=alphabetic]{biblatex}
\addbibresource{biblatex-examples.bib}
% Using colors to clarify
\usepackage{xcolor}
\DeclareFieldFormat{labelalpha}{\textsc{\oldstylenums{\MakeLowercase{#1}}}}
% None of the following works :-(
\DeclareFieldFormat{labelname}{\textcolor{green}{#1}}
\DeclareFieldFormat{labelnumber}{\textcolor{red}{#1}}
\DeclareFieldFormat{labelyear}{\textcolor{red}{#1}}
\DeclareFieldFormat{labeldate}{\textcolor{red}{#1}}
\DeclareFieldFormat{labeldateparts}{\textcolor{red}{#1}}
\begin{document}
Desired: [\textcolor{green}{\textsc{sr}}\oldstylenums{\textcolor{red}{98}}]
Current: \cite{sigfridsson}
\printbibliography
\end{document}
Responder1
A etiqueta alfabética é produzida pela Biber e repassada biblatex
no .bbl
arquivo. biblatex
não tem realmente uma noção do que a etiqueta é composta e só vê a etiqueta completa, então a formatação deve ser ajustada na criação da etiqueta.
Podemos modificar o formato do rótulo \DeclareLabelalphaTemplate
e aplicar a formatação nele. Mas temos que levar em conta que as definições dos rótulos são gravadas no .bcf
arquivo, o que torna complicado adicionar macros à definição, já que elas geralmente são expandidas ao gravar em arquivos. Definitivamente não é isso que queremos aqui. Para evitar a expansão, precisamos de um pouco de \string
definição, os colchetes para os argumentos são ainda mais complicados, eles precisam \@charlb
e \@charrb
(vejaEscrevendo { e } em um arquivo com LaTeX). Podemos evitar algumas dores de cabeça para macros mais complexas se definirmos duas macros auxiliares para formatar as partes do rótulo.
Com
\documentclass{article}
\usepackage[style=alphabetic]{biblatex}
\addbibresource{biblatex-examples.bib}
% Using colors to clarify
\usepackage{xcolor}
\newcommand*{\mklabelalphaname}[1]{\color{green}{\textsc{#1}}}
\newcommand*{\mklabelalphayear}[1]{\textcolor{red}{\oldstylenums{#1}}}
\makeatletter
\DeclareLabelalphaTemplate{
\labelelement{
\literal{\string\mklabelalphaname\@charlb}
}
\labelelement{
\field[final]{shorthand}
\field{label}
\field[strwidth=3,strside=left,ifnames=1,lowercase=true]{labelname}
\field[strwidth=1,strside=left,lowercase=true]{labelname}
}
\labelelement{
\literal{\@charrb\string\mklabelalphayear\@charlb}
}
\labelelement{
\field[strwidth=2,strside=right]{year}
}
\labelelement{
\literal{\@charrb}
}
}
\makeatother
\begin{document}
Desired: [\textcolor{green}{\textsc{sr}}\oldstylenums{\textcolor{red}{98}}]
Current: \cite{sigfridsson}
\printbibliography
\end{document}
o .bbl
contém
\field{labelalpha}{\mklabelalphaname{sr}\mklabelalphayear{98}}
e junto com as definições de \mklabelalphaname
e \mklabelalphayear
produz