数学模式之后的 \index

数学模式之后的 \index

我想为文档的某些部分创建范围索引。但是当我执行以下操作时:

\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紧跟在数学显示之后的命令会重新启动暂停的段落。我建议您采用类似于的策略\qedhereamsthm如果您的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 中显示数学。

相关内容