단락에 더 잘 작동하는 새 색인 명령을 어떻게 정의할 수 있나요?

단락에 더 잘 작동하는 새 색인 명령을 어떻게 정의할 수 있나요?

내 문서 중간에 올빼미에 관한 단락이 있다고 가정해 보겠습니다. 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다음 두 가지 경우에 대해 색인에서 올바른 페이지 번호를 생성하는 새 명령을 어떻게 정의합니까 \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}일할 것인가

관련 정보