
У меня проблема с использованием polski
пакета одновременно с imakeidx
и biblatex
. Я использую только команду \dywiz
из пакета polski
, которая определена как\def\dywiz{\kern0sp\discretionary{-}{-}{-}\penalty10000\hskip0sp\relax}
Команда используется для управления переносами двусоставных (дефисных) слов. Все работает отлично, за исключением случаев, когда я использую ее для имен авторов, которые также должны быть проиндексированы в файле bib
.
Когда я использую команду \index{Kowalski\dywiz Jankowski, Karol}
в тексте, я получаю следующую запись в ind
файле: \indexentry{Kowalski\dywiz Jankowski, Karol}{1}
и это здорово.
Когда я использую команду author = {Kowalski\dywiz Jankowski, Karol}
, в моем bib
файле я получаю ложный пробел в тексте, ложный пробел в библиографии и дополнительный элемент в моем индексе (из-за записи \indexentry{Kowalski\kern 0sp\discretionary {-}{-}{-}\penalty 10000\hskip 0sp\relax Jankowski, Karol}{1}
в моем ind
файле).
Частичное решение — использовать команду author = {Kowalski\dywiz{}Jankowski, Karol}
в моем bib
файле. Это устраняет ложные пробелы в тексте и в библиографии, но, к сожалению, это создает еще одну дополнительную запись в моем индексе (из-за записи \indexentry{Kowalski\kern 0sp\discretionary {-}{-}{-}\penalty 10000\hskip 0sp\relax {}Jankowski, Karol}{1}
в моем ind
файле).
МВЭ:
\documentclass{article}
\usepackage[indexing=cite,style=verbose-trad1,dashed=false]{biblatex}
\usepackage[nonewpage]{imakeidx}
\makeindex[columns=1]
%remove titles from index
\renewbibmacro*{citeindex}{%
\ifciteindex
{\indexnames{labelname}%
\indexnames{editor}%
\indexnames{editora}%
\indexnames{editorb}%
\indexnames{translator}%
\indexnames{commentator}}
{}}
\def\dywiz{\kern0sp\discretionary{-}{-}{-}\penalty10000\hskip0sp\relax} %actually I use \usepackage{polski} but the result is the same
\begin{filecontents}{\jobname.bib}
@book{plbook1,
author = {Kowalski\dywiz Jankowski, Karol}, %spurious space in both text citation and the bibliography, extra entry in index
title = {Book1 title},
}
@book{plbook2,
author = {Kowalski\dywiz{}Jankowski, Karol}, %no spurious space but one more extra entry in index
title = {Book2 title},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\cite{plbook1} %this produces \indexentry{Kowalski\kern 0sp\discretionary {-}{-}{-}\penalty 10000\hskip 0sp\relax Jankowski, Karol}{1}
\cite{plbook2} %this produces \indexentry{Kowalski\kern 0sp\discretionary {-}{-}{-}\penalty 10000\hskip 0sp\relax {}Jankowski, Karol}{1}
\index{Kowalski\dywiz Jankowski, Karol} %this produces \indexentry{Kowalski\dywiz Jankowski, Karol}{1}
\printindex
\printbibliography
\end{document}
Результат:
Подводя итог, у меня две проблемы:
- ненужное пространство в некоторых случаях при использовании
\dywiz
. - использование пользовательских команд в именах авторов в
bib
файле приводит к тому, что эта команда записывается вind
файле в полной явной форме (\indexentry{Kowalski\kern 0sp\discretionary {-}{-}{-}\penalty 10000\hskip 0sp\relax Jankowski, Karol}{1}
а не просто\indexentry{Kowalski\dywiz Jankowski, Karol}{1}
).