¿Cómo puedo personalizar los nombres y la parte del año del labelalpha
campo por separado? Por ejemplo, quiero la parte del nombre en versales, mientras que el número representa el año en números de estilo antiguo.
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}
Respuesta1
Biber produce la etiqueta alfabética y se pasa al biblatex
archivo .bbl
. biblatex
Realmente no tiene una idea de de qué está compuesta la etiqueta y solo ve la etiqueta completa, por lo que el formato debe ajustarse en el momento de la creación de la etiqueta.
Podemos modificar el formato de la etiqueta \DeclareLabelalphaTemplate
y aplicar formato allí. Pero debemos tener en cuenta que las definiciones de las etiquetas se escriben en el .bcf
archivo, lo que dificulta agregar macros a la definición, ya que normalmente se expanden al escribir en archivos. Definitivamente eso no es lo que queremos aquí. Para evitar la expansión necesitamos una buena cantidad de \string
en la definición, las llaves de los argumentos son aún más complicadas, necesitan \@charlb
y \@charrb
(verEscribir { y } en un archivo con LaTeX). Podemos evitar algunos dolores de cabeza con macros más complejas si definimos dos macros auxiliares para formatear las partes de la etiqueta.
Con
\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}
el .bbl
contiene
\field{labelalpha}{\mklabelalphaname{sr}\mklabelalphayear{98}}
y junto con las definiciones de \mklabelalphaname
y \mklabelalphayear
produce