Wie kann ich die Namen und den Jahresteil des labelalpha
Felds separat anpassen? Ich möchte beispielsweise den Namensteil in Kapitälchen und die Jahreszahl in Mediävalziffern.
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}
Antwort1
biblatex
Das alphabetische Etikett wird von Biber erzeugt und in der Datei weitergegeben .bbl
. biblatex
hat keine wirkliche Vorstellung davon, woraus sich das Etikett zusammensetzt und sieht nur das vollständige Etikett, daher muss die Formatierung bei der Etikettenerstellung hineingezwängt werden.
Wir können das Etikettenformat mit ändern \DeclareLabelalphaTemplate
und dort Formatierungen anwenden. Wir müssen jedoch berücksichtigen, dass die Etikettendefinitionen in die .bcf
Datei geschrieben werden, was es schwierig macht, der Definition Makros hinzuzufügen, da diese beim Schreiben in Dateien normalerweise erweitert werden. Das ist hier definitiv nicht das, was wir wollen. Um eine Erweiterung zu vermeiden, benötigen wir ziemlich viel von \string
in der Definition, die Klammern für die Argumente sind noch schwieriger, sie benötigen \@charlb
und \@charrb
(sieheSchreiben von { und } in eine Datei mit LaTeX). Wir können einige Kopfschmerzen bei komplexeren Makros vermeiden, wenn wir zwei Hilfsmakros zum Formatieren der Beschriftungsteile definieren.
Mit
\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}
das .bbl
enthält
\field{labelalpha}{\mklabelalphaname{sr}\mklabelalphayear{98}}
und zusammen mit den Definitionen von \mklabelalphaname
und \mklabelalphayear
erzeugt