필드의 이름과 연도 부분을 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를 사용하여 파일에 { 및 } 쓰기). 레이블 부분의 형식을 지정하기 위해 두 개의 도우미 매크로를 정의하면 더 복잡한 매크로에 대한 골치 아픈 문제를 피할 수 있습니다.
와 함께
\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
생성합니다.