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が望ましいでしょう。インデックス内のエントリの並べ替えを混乱させることなく、 をオプションにしたいと思います。

この問題は、がハードコードされている\mkbibindexnameに関連している可能性があります。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そのことをどのように伝えるかを決定する必要があります。

関連情報