为什么\cite{}
使用命令imakeidx
带有splitindex
选项和biblatex
有indexing=cite
选择的原因
Package imakeidx Warning: Undefined index file `split' on input line 33.
编译我的源文件(split.tex
)后,我不知何故得到了两个.idx
文件
split-persons.idx
::
\indexentry{Smith, Joe}{1}
\indexentry{Greenwild, Dirk}{1}
\indexentry{Jordan, Peter}{1}
\indexentry{Jordan, Peter}{1}
和split.idx
:
\indexentry[persons]{Smith, Joe}{1}
\indexentry[persons]{Greenwild, Dirk}{1}
\indexentry[persons]{Jordan, Peter}{1}
\indexentry[persons]{Jordan, Peter}{1}
梅威瑟:
\documentclass{article}
\usepackage[backend=biber,natbib=true,indexing=cite]{biblatex} %for digital version
\bibliography{\jobname}
\usepackage[truexindy,splitindex]{imakeidx}
\makeindex[name=persons,program=truexindy,options=-M texindy]
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{book1,
author = "Greenwild, Dirk",
title = "Yellow pages",
year = "1998",
}
@book{book2,
author = "Jordan, Peter",
title = "Math in the world",
year = "1996",
}
\end{filecontents}
\DeclareIndexNameFormat{default}{%
\usebibmacro{index:name}
{\index[persons]}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}}
\begin{document}
Foo\index[persons]{Smith, Joe}.
Foo\cite{book1}. Jordan\index[persons]{Jordan, Peter} foo\cite{book2}.
\printindex[persons]
\end{document}
更新:
如果我添加假命令,\makeindex[]
警告就会消失。现在,我.idx
在编译后也得到了两个文件。split-persons.idx
与以前相同,但split.idx
现在不仅包含人员记录,还包含进入主索引的书籍标题记录。我认为这就是问题所在。现在的内容split.idx
:
\indexentry[persons]{Smith, Joe}{1}
\indexentry[persons]{Greenwild, Dirk}{1}
\indexentry[split]{Yellow pages@\emph {Yellow pages}}{1}
\indexentry[persons]{Jordan, Peter}{1}
\indexentry[persons]{Jordan, Peter}{1}
\indexentry[split]{Math in the world@\emph {Math in the world}}{1}
答案1
如果我添加\makeindex
,生成的.idx
文件是
\indexentry[persons]{Smith, Joe}{1}
\indexentry[persons]{Greenwild, Dirk}{1}
\indexentry[andc]{Yellow pages@\emph {Yellow pages}}{1}
\indexentry[persons]{Jordan, Peter}{1}
\indexentry[persons]{Jordan, Peter}{1}
\indexentry[andc]{Math in the world@\emph {Math in the world}}{1}
这意味着还会biblatex
为标题添加索引条目。这就是出现警告的原因:如果没有\makeindex
,则会尝试在默认索引文件中进行写入,但无法成功,因为它未定义。
要么将其固定在侧面biblatex
,要么直接添加\makeindex
。
请注意,首选声明biblatex
是
\addbibresource{<filename>.bib}
而不是\bibliography{<filename>}
(请注意,.bib
必须在首选声明样式中添加)。