Makeindex 无法生成索引条目

Makeindex 无法生成索引条目

我有一个简单的乳胶鳕鱼

\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}

在此处输入图片描述

相关内容