文書の途中にフクロウについての段落があるとします。 Here is a new paragraph about owls. Owls are extraordinary.
この段落をimakeidxを使ってインデックスしたいので、次のように記述します。
\index{owls}Here is a new paragraph about owls. Owls are extraordinary.
しかし、問題なのは、この段落が新しいページ k の先頭に表示されると、索引内のフクロウのエントリが前のページを参照することになり、その横に「k」ではなく「k-1」というページが表示されることです (たとえば、以下の最小限の動作例を参照してください)。
最も簡単な解決策は、\index
コマンドを段落のすぐ内側に移動することです。 Here\index{owls} is a new paragraph about owls. Owls are extraordinary.
しかし、私にとっては、これは理想的ではありません。長い文書があり、多くの段落には多くの関連\index
コマンドがあります。これらの\index
コマンドを対応する段落内に移動すると、段落が読みにくくなり、編集しにくくなります。
上記は の最も単純なケースを説明していますが、ページ範囲を指定する場合にも同様の問題があります。ではなく、
\index
単に と記述したいと思います 。\index{owls|(}Here is a new paragraph about owls. Owls are extraordinary.\index{owls|)}
Here\index{owls|(} is a new paragraph about owls. Owls are extraordinary.\index{owls|)}
これが私の質問につながります。\indexn
次の 2 つのケースで、索引に正しいページ番号を生成する 新しいコマンドを定義するにはどうすればよいでしょう\indexn{owls}Here is a new paragraph about owls. Owls are extraordinary.
か
\indexn{owls|(}Here is a new paragraph about owls. Owls are extraordinary.\indexn{owls|)}
。
この問題の最小限の動作例を以下に示します。
\documentclass{book}
\usepackage{imakeidx}
\makeindex
\begin{document}
% This code block just generates 552 copies of the word "lorem".
\newcount\zz
\loop
lorem
\advance\zz1
\ifnum\zz<552
\repeat
\index{owls}Here is a paragraph about owls. Owls are extraordinary.
%\index{owls|(}Here is a new paragraph about owls. Owls are extraordinary.\index{owls|)}
\printindex
\end{document}
答え1
\mbox{}\index{owls}
または\leavevmode\index{owls}
機能する