在打印第一个索引的同一页上添加索引(多页)的章节标题

在打印第一个索引的同一页上添加索引(多页)的章节标题

我试图在打印第一个多索引之前添加章节标题“索引”。但是,printindex 会刷新页面,因此如果我这样做,我将得到标题、页面的其余部分为空以及第一个索引。我希望先打印“索引”标题,然后在其下方立即打印第一个索引,然后第二个索引以刷新的页面正常开始。

因此,不要:

-------------    -------------    -------------    -------------
|           |    |           |    |           |    |           |
|  Indices  |    |  Names    |    | ---- ---- |    |  Places   |
|           |    | ---- ---- |    | ---- ---- |    | ---- ---- |
|           |    | ---- ---- |    | ---- ---- |    | ---- ---- |
|           |    | ---- ---- |    | ---- ---- |    | ---- ---- |
|           |    | ---- ---- |    |           |    | ---- ---- |
|    124    |    |    125    |    |    126    |    |    127    |
|-----------|    |-----------|    |-----------|    |-----------|

我想要实现:

-------------    -------------    -------------    -------------
|           |    |           |    |           |    |           |
|  Indices  |    | ---- ---- |    | ---- ---- |    |  Places   |
|           |    | ---- ---- |    |           |    | ---- ---- |
|  Names    |    | ---- ---- |    |           |    | ---- ---- |
| ---- ---- |    | ---- ---- |    |           |    | ---- ---- |
| ---- ---- |    | ---- ---- |    |           |    | ---- ---- |
|    124    |    |    125    |    |    126    |    |    127    |
|-----------|    |-----------|    |-----------|    |-----------|

我正在使用书籍。任何帮助都将不胜感激。

梅威瑟:

\documentclass{book}

\usepackage{multind}
\makeindex{names}
\makeindex{places}

\usepackage{lipsum}


\begin{document}


\chapter{Chapter one}
\index{names}{John}\index{places}{London}
\lipsum
\index{names}{Tim}\index{places}{York}


\chapter{Chapter two}
\index{names}{John}\index{places}{York}
\lipsum
\index{names}{Tim}\index{places}{London}

\chapter*{Indices}
\printindex{names}{Index of names}
\printindex{places}{Index of places}

\end{document}

答案1

multind.sty定义\printindex

\def\printindex#1#2{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
  \columnseprule \z@ \columnsep 35pt
  \newpage \twocolumn[{\Large\bf #2 \vskip4ex}]
  \markright{\uppercase{#2}}
  \addcontentsline{toc}{section}{#2}
  \@input{#1.ind}}

和强制打开新页面。在下面的例子中,我重新定义了抑制\newpage和使用;我改用包来生成两列布局;此外,我使用而不是简单地排版标题。\twocolumn\printindex\newpage\twocolumnmulticol{\Large\bf #2 \vskip4ex}\section*

\documentclass{book}
\usepackage{multind}
\usepackage{multicol}
\usepackage{lipsum}

\makeindex{names}
\makeindex{places}

\makeatletter
\def\printindex#1#2{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
  \columnseprule \z@ \columnsep 35pt
  \csname phantomsection\endcsname
  \section*{#2}
  \markright{\uppercase{#2}}
  \addcontentsline{toc}{section}{#2}
  \begin{multicols}{2}
  \@input{#1.ind}%
  \end{multicols}%
}
\makeatother

\begin{document}

\chapter{Chapter one}
\index{names}{John}\index{places}{London}
\lipsum
\index{names}{Tim}\index{places}{York}

\chapter{Chapter two}
\index{names}{John}\index{places}{York}
\lipsum
\index{names}{Tim}\index{places}{London}

\chapter*{Indices}
\printindex{names}{Index of names}
\newpage
\printindex{places}{Index of places}

\end{document}

指数第一页的图片:

在此处输入图片描述

也许您可以考虑使用另一个更现代的包来构建您的索引;splitindex似乎是个不错的选择。

答案2

具有比以下更现代的软件包的解决方案multind

\documentclass{book}

\usepackage{imakeidx}
\makeindex[name=names,title=Index of names]
\makeindex[name=places,title=Index of places]

\newcommand{\startindices}{%
  \chapter*{Indices}
  \let\latexcleardoublepage\cleardoublepage
  \def\cleardoublepage{%
    \def\cleardoublepage{%
      \global\let\cleardoublepage\latexcleardoublepage}}%
}

\usepackage{lipsum}


\begin{document}


\chapter{Chapter one}
\index[names]{John}\index[places]{London}
\lipsum
\index[names]{Tim}\index[places]{York}


\chapter{Chapter two}
\index[names]{John}\index[places]{York}
\lipsum
\index[names]{Tim}\index[places]{London}

\startindices
\printindex[names]
\printindex[places]

\end{document}

请注意,这些条目的语法不同\index,如果您已经编写了许多条目,这可能会给您带来不便。在这种情况下,添加

\let\imkiindex\index
\renewcommand\index[1]{\imkiindex[#1]}

before\end{document}允许您保留multind索引条目的语法。

修改\makeindex\printindex命令应该不是什么大问题。

使用的优点imakeidx是,您不必记住运行 MakeIndex,因为该包会为您完成此操作。它还具有将索引添加到目录中的可能性,

\makeindex[name=names,title=Index of names,intoc]
\makeindex[name=places,title=Index of places,intoc]

相关内容