フィールドの名前と年の部分をlabelalpha
個別にカスタマイズするにはどうすればよいでしょうか? たとえば、名前の部分を小文字の大文字にして、年を表す数字を旧式の数字にしたいとします。
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}
答え1
biblatex
アルファベットのラベルは Biber によって生成され、ファイルに渡されます.bbl
。biblatex
はラベルが何で構成されているかを実際には把握しておらず、完全なラベルしか認識しないため、ラベル作成時にフォーマットを無理やり組み込む必要があります。
ラベルのフォーマットを で変更し\DeclareLabelalphaTemplate
、そこでフォーマットを適用することができます。しかし、ラベル定義はファイルに書き込まれることを考慮する必要があります。通常、ファイルに書き込むときにマクロが展開されるため、定義にマクロを追加するのは困難です。これは、ここで必要なことではありません。展開を回避するには、定義に.bcf
かなりの が必要です。引数の中括弧はさらに複雑で、 と が必要です( を参照)。\string
\@charlb
\@charrb
LaTeX でファイルに { と } を書き込む)。ラベル部分をフォーマットするための 2 つのヘルパー マクロを定義すると、より複雑なマクロで発生する問題を回避できます。
と
\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}
含ま.bbl
れる
\field{labelalpha}{\mklabelalphaname{sr}\mklabelalphayear{98}}
\mklabelalphaname
との定義と組み合わせると\mklabelalphayear
、