我有一个简单的乳胶鳕鱼
\documentclass[12pt,oneside]{scrbook}
\usepackage{makeidx}
\makeindex
\renewcommand{\thepage}{%
\thechapter.\arabic{page}}
\begin{document}
\chapter{Sample}
Stuff about eigenvectors\index{eigenvector} and eigenvalues\index{eigenvalue}.
\chapter{Another Sample}
Some more stuff about eigenvectors\index{eigenvector} and
eigenvalues\index{eigenvalue}. Something about eigen decomposition\index{eigen-decomposition}.
\printindex
\end{document}
存在 Makeindex 无法生成索引条目的问题。主要问题是我想在章节号和页码之间定义一个带有句点(点)的页码。
\renewcommand{\thepage}{\thechapter.\arabic{page}}
在这种情况下,Makeindex 无法生成索引条目。我收到一条消息:
扫描输入文件 in1.idx...完成(接受 0 个条目,拒绝 5 个)。
in1.ind 中未写任何内容。
成绩单写在 in1.ilg 中。
但是,如果我将“拖拽(-)”替换为“点(点)”,
\renewcommand{\thepage}{\thechapter-\arabic{page}}
Makeindex 生成索引条目 问题是什么?为什么我不能在章节号和页码之间放置一个点?如果有人知道解决方案,请帮助我。
答案1
makeindex
的默认合成器是连字符-
。您可以使用以下方式在样式文件中更改它page_compositor
:
\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.ist}
page_compositor "."
\end{filecontents*}
\documentclass[12pt,oneside]{scrbook}
\usepackage{makeidx}
\makeindex
\renewcommand{\thepage}{%
\thechapter.\arabic{page}}
\begin{document}
\chapter{Sample}
Stuff about eigenvectors\index{eigenvector} and
eigenvalues\index{eigenvalue}.
\chapter{Another Sample}
Some more stuff about eigenvectors\index{eigenvector} and
eigenvalues\index{eigenvalue}. Something about eigen
decomposition\index{eigen-decomposition}.
\printindex
\end{document}
记得包括-s
样式文件调用时makeindex
。例如,如果调用上述文档,myDoc.tex
则
pdflatex myDoc
makeindex -s myDoc.ist myDoc
pdflatex myDoc
答案2
MakeIndex 不接受“复合”页码。如果您对索引条目没有特殊需求,可以使用不同的页码表示法(章节加 1000 页),这是一种粗暴但有效的解决方法。
\documentclass[12pt,oneside]{scrbook}
\usepackage{makeidx}
\makeindex
\renewcommand{\thepage}{\thechapter.\arabic{page}}
\newcommand\thecomplexpage{\the\numexpr\value{chapter}*1000+\value{page}\relax}
\makeatletter
\renewcommand{\@wrindex}[1]{%
\protected@write\@indexfile{\let\thecomplexpage\relax}{%
\string\indexentry{#1|decomposepage}{\thecomplexpage}%
}%
\endgroup\@esphack
}
\newcommand\decomposepage[1]{%
\begingroup
\@tempcnta=#1\relax
\divide\@tempcnta by 1000
\the\@tempcnta.\the\numexpr#1-1000*\@tempcnta\relax
\endgroup
}
\makeatother
\begin{document}
\chapter{Sample}
Stuff about eigenvectors\index{eigenvector} and eigenvalues\index{eigenvalue}.
\chapter{Another Sample}
Some more stuff about eigenvectors\index{eigenvector} and
eigenvalues\index{eigenvalue}. Something about eigen decomposition\index{eigen-decomposition}.
\printindex
\end{document}