biblatex를 사용하면 색인에서 성의 접두사를 대문자로 사용하지 마십시오.

biblatex를 사용하면 색인에서 성의 접두사를 대문자로 사용하지 마십시오.

참고문헌 항목을 biblatex색인으로 보내면 접두어가 대문자로 표시되는 경우가 종종 있습니다. 예를 들어 접두사가 붙은 네덜란드 이름봉고차또는 접두사가 붙은 프랑스어 이름때로는 인덱스에서 대문자로 표시되지 않습니다. 또한 조금 더 특이할 수도 있지만 여전히 관련성이 있을 수 있습니다. 저는 최근에 자신의 이름을 소문자로만 인용하기를 원하는 한 연구원에 대해 알게 되었습니다(저는 이것이 SocSci 어딘가에 있을 것이라고 생각합니다).

MWE:

\begin{filecontents}{test.bib}
    @misc{vanTrijp2013,
        author = {van Trijp, Remi},
        date = {2013},
        title = {A Comparison between approach A and B},
    }
\end{filecontents}

\documentclass{article}
\usepackage[indexing=cite,style=authoryear,useprefix=true]{biblatex}
\addbibresource{test.bib}
\makeindex
\begin{document}
    \cite{vanTrijp2013}
\end{document}

그러면 파일에 다음 항목이 생성됩니다 .dx.

\indexentry{van Trijp, Remi@\MakeCapital {van} Trijp, Remi}{1}

그리고 이것은 색인 항목을 생성합니다반 트립, 레미, 하지만반 트립, 레미선호됩니다. \MakeCapital색인의 항목 정렬을 혼동하지 않고 선택 사항이기를 원합니다 .

문제는 가 하드 코딩된 \mkbibindexnamefrom 과 관련될 수 있습니다.biblatex.def\MakeCapital

가능한 해결 방법은 을 사용하여 정의에서 etoolbox간단히 삭제하는 것 입니다.\MakeCapital

\patchcmd{\mkbibindexname}{\ifdefvoid{#3}{}{\MakeCapital{#3} }}{\ifdefvoid{#3}{}{#3 }}{}{}

하지만 이런 식으로 패키지 코드를 변경하는 것은 지속 가능한 솔루션이라고 생각하지 않습니다. 이를 수행하는 더 좋은 방법을 알고 있습니까?

답변1

실제 정의가 \mkbibindexname다소 어려워 보이지만 사용자는~이다생성된 출력이 마음에 들지 않으면 해당 매크로를 변경해야 합니다. 따라서 제안하신 대로 매크로를 패치하는 것이 완벽할 것입니다. 매크로를 패치하는 것이 나은지 아니면 재정의하는 것이 더 나은지에 대한 일반적인 질문이 있습니다(예를 참조하십시오).Biblatex의 bibmacros, 참고문헌 드라이버, 형식 - 패치 또는 재정의?) 그리고 \mkbibindexname저와 같은 '작은' 매크로의 경우 일반적으로 패치 대신 경로 재정의를 선호하지만 이는 개인 취향에 달려 있습니다.

이 응용 프로그램의 경우 문제의 매크로를 다음과 같이 재정의할 수 있습니다.

\documentclass{article}
\usepackage[indexing=cite,style=authoryear,useprefix=true]{biblatex}
\usepackage{makeidx}

\makeatletter
\renewcommand*{\mkbibindexname}[4]{%
  \ifuseprefix
    {\ifdefvoid{#3}{}{#3 }%
     \@firstofone #1% remove spurious braces
     \ifdefvoid{#4}{}{ #4}%
     \ifdefvoid{#2}{}{, #2}}
    {\@firstofone #1% remove spurious braces
     \ifdefvoid{#4}{}{ #4}%
     \ifboolexpe{%
       test {\ifdefvoid{#2}}
       and
       test {\ifdefvoid{#3}}}
       {}
       {,}%
     \ifdefvoid{#2}{}{ #2}%
     \ifdefvoid{#3}{}{ #3}}}
\makeatother

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{vanTrijp2013,
  author = {van Trijp, Remi},
  date   = {2013},
  title  = {A Comparison between approach A and B},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\makeindex
\begin{document}
  \cite{vanTrijp2013}
  \printindex
\end{document}

반 트립, 레미, 1

특정 옵션이 설정된 경우 이름에 선택적으로 적용하는 것도 가능해야 하지만, 그런 다음 이에 대해 \MakeCapital어떻게 알리고 싶은지 결정해야 합니다 .biblatex

관련 정보