![引用作者姓名中包含用户定义命令的问题](https://linux22.com/image/473377/%E5%BC%95%E7%94%A8%E4%BD%9C%E8%80%85%E5%A7%93%E5%90%8D%E4%B8%AD%E5%8C%85%E5%90%AB%E7%94%A8%E6%88%B7%E5%AE%9A%E4%B9%89%E5%91%BD%E4%BB%A4%E7%9A%84%E9%97%AE%E9%A2%98.png)
polski
我在同时使用 packageimakeidx
和时遇到了问题。我仅使用package 中的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}
)。