При использовании biblatex не пишите заглавными буквами префиксы фамилий в индексе.

При использовании biblatex не пишите заглавными буквами префиксы фамилий в индексе.

Отправка библиографических записей в индекс с biblatexприводит к заглавным буквам префиксов, что иногда нежелательно. Например, голландские имена с префиксомфургонили французские имена с префиксомдеиногда не пишутся с заглавной буквы в индексах. Также, возможно, немного более необычно, но все еще, возможно, актуально, я недавно узнал об исследователе, который хочет, чтобы его имя цитировалось только строчными буквами (кажется, это было где-то в SocSci).

МВЭ:

\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, драйверы библиографии, форматы — исправить или переопределить?) и для «маленьких» макросов, таких как \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об этом.

Связанный контент