![При использовании biblatex не пишите заглавными буквами префиксы фамилий в индексе.](https://rvso.com/image/400343/%D0%9F%D1%80%D0%B8%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8%20biblatex%20%D0%BD%D0%B5%20%D0%BF%D0%B8%D1%88%D0%B8%D1%82%D0%B5%20%D0%B7%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D1%8B%D0%BC%D0%B8%20%D0%B1%D1%83%D0%BA%D0%B2%D0%B0%D0%BC%D0%B8%20%D0%BF%D1%80%D0%B5%D1%84%D0%B8%D0%BA%D1%81%D1%8B%20%D1%84%D0%B0%D0%BC%D0%B8%D0%BB%D0%B8%D0%B9%20%D0%B2%20%D0%B8%D0%BD%D0%B4%D0%B5%D0%BA%D1%81%D0%B5..png)
Отправка библиографических записей в индекс с 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
чтобы это было необязательно, не запутывая сортировку записей в индексе.
Проблема может быть связана с \mkbibindexname
from 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}
Также должна быть возможность опционально применять \MakeCapital
к имени, если установлена определенная опция, но тогда вам придется решить, как вы хотите сообщить biblatex
об этом.