biblatex를 사용하여 `labelalpha`에서 `labeldate` 사용자 정의

biblatex를 사용하여 `labelalpha`에서 `labeldate` 사용자 정의

필드의 이름과 연도 부분을 labelalpha별도로 사용자 정의하려면 어떻게 해야 합니까? 예를 들어, 이름 부분은 작은 대문자로, 연도를 나타내는 숫자는 구식 숫자로 표시하고 싶습니다.

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}

답변1

biblatex알파벳 라벨은 Biber에서 생성되어 파일 로 전달됩니다 .bbl. biblatex라벨이 무엇으로 구성되어 있는지 전혀 모르고 전체 라벨만 볼 수 있으므로 라벨 생성 시 서식을 조정해야 합니다.

레이블 형식을 수정 \DeclareLabelalphaTemplate하고 거기에 형식을 적용할 수 있습니다. 그러나 레이블 정의가 파일에 기록된다는 점을 고려해야 합니다. .bcf이는 일반적으로 파일에 쓸 때 확장되기 때문에 정의에 매크로를 추가하기가 까다롭습니다. 그것은 확실히 우리가 여기서 원하는 것이 아닙니다. 확장을 방지하려면 정의에 상당한 부분이 필요하며 \string인수에 대한 중괄호는 훨씬 더 까다 롭습니다 \@charlb.\@charrbLaTeX를 사용하여 파일에 { 및 } 쓰기). 레이블 부분의 형식을 지정하기 위해 두 개의 도우미 매크로를 정의하면 더 복잡한 매크로에 대한 골치 아픈 문제를 피할 수 있습니다.

와 함께

\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생성합니다.

알파벳 라벨 "SR98" "SR"은 녹색 작은 대문자로, "98"은 빨간색 구식 숫자로 표시됩니다.

관련 정보