Проблема с цитированием авторов, имеющих в своих именах пользовательскую команду

Проблема с цитированием авторов, имеющих в своих именах пользовательскую команду

У меня проблема с использованием 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}

Результат:

введите описание изображения здесь

Подводя итог, у меня две проблемы:

  1. ненужное пространство в некоторых случаях при использовании \dywiz.
  2. использование пользовательских команд в именах авторов в bibфайле приводит к тому, что эта команда записывается в indфайле в полной явной форме ( \indexentry{Kowalski\kern 0sp\discretionary {-}{-}{-}\penalty 10000\hskip 0sp\relax Jankowski, Karol}{1}а не просто \indexentry{Kowalski\dywiz Jankowski, Karol}{1}).

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