引用作者姓名中包含用户定义命令的问题

引用作者姓名中包含用户定义命令的问题

polski我在同时使用 packageimakeidx和时遇到了问题。我仅使用package 中的biblatex命令,该命令定义为\dywizpolski\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})。

相关内容