Anpassen von „labeldate“ in „labelalpha“ mit Biblatex

Anpassen von „labeldate“ in „labelalpha“ mit Biblatex

Wie kann ich die Namen und den Jahresteil des labelalphaFelds separat anpassen? Ich möchte beispielsweise den Namensteil in Kapitälchen und die Jahreszahl in Mediävalziffern.

Gewünschtes und aktuelles Ergebnis der MWE.

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

biblatexDas alphabetische Etikett wird von Biber erzeugt und in der Datei weitergegeben .bbl. biblatexhat 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 \DeclareLabelalphaTemplateund dort Formatierungen anwenden. Wir müssen jedoch berücksichtigen, dass die Etikettendefinitionen in die .bcfDatei 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 \stringin der Definition, die Klammern für die Argumente sind noch schwieriger, sie benötigen \@charlbund \@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 .bblenthält

\field{labelalpha}{\mklabelalphaname{sr}\mklabelalphayear{98}}

und zusammen mit den Definitionen von \mklabelalphanameund \mklabelalphayearerzeugt

alphabetische Beschriftung "SR98" "SR" ist in grünen Kapitälchen, "98" in roten Mediävalziffern

verwandte Informationen