我想为文档的某些部分创建范围索引。但是当我执行以下操作时:
\documentclass{article}
\makeindex
\begin{document}
\index{test|(}
Some Text
\[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, \ldots \]
\index{test|)}
\paragraph{Test2:} More Text after too much space.
\end{document}
段落“Test2”前面的垂直空间太多。我尝试使用\leavevmode
或\ignorespace
按照»中的建议使用\index 导致虚假空白“但那并没有用。”
还请注意,我将这个构造放入抽象环境定义中,因此要索引的部分或后续内容的细节可能会发生变化。因此,为了更清楚起见,上面的示例将采用以下形式:
\documentclass{article}
\newenvironment{idx}[1]{%
\index{#1|(}%
\def\currentidx{#1}}%
{\index{\currentidx|)}}
\makeindex
\begin{document}
\begin{idx}{test}
Some Text
\[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, \ldots \]
\end{idx}
\paragraph{Test2:} More Text after too much space.
\end{document}
答案1
不幸的是,\index
紧跟在数学显示之后的命令会重新启动暂停的段落。我建议您采用类似于的策略\qedhere
。amsthm
如果您的idx
环境恰好以显示或列表结尾,请将其放在\idxhere
该子环境的末尾:在这种情况下,\index
子环境之后的命令不仅会创建新行,还可能破坏引用,导致页码偏离一个。
\documentclass{article}
\makeindex
\newif\ifidxhere
\newenvironment{idx}[1]
{\global\idxherefalse
\index{#1|(}%
\def\currentidx{#1}%
\ignorespaces}
{\ifidxhere\else\index{\currentidx|)}\fi\ignorespacesafterend}
\newcommand\idxhere{\index{\currentidx|)}\global\idxheretrue}
\begin{document}
\begin{idx}{test}
Some Text
\[
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, \ldots
\idxhere
\]
\end{idx}
\paragraph{Test2:} More Text after too much space.
Some Text
\[
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, \ldots
\]
\paragraph{Test2:} More Text after too much space.
\end{document}
绝不用于$$
在 LaTeX 中显示数学。