索引で%や&などの文字を表示させるには

索引で%や&などの文字を表示させるには

- yoko kai の投稿
返信数: 2
mendexやmakeindexを使って索引を作るとき、
索引にしたい言葉が、通常は表示されない%や&などで始まる場合、
例えば「&&演算子」を索引に載せたいとき、
\index{&&えんざんし@&&演算子}
とすると、(当然)表示されず、
そのまま表示させる\verb|・|で囲んで
\index{\verb|&&|えんざんし@\verb|&&|演算子}
のようにしても表示されません。
半角はあきらめて全角で&&とすることも考えましたが、
奥村先生の『美文書作成入門』では綺麗に半角ででてますので、
諦めきれず、ここに質問した次第です。
『改訂第6版』でインストールしたものを使っています(アップデートしたかも)。
これはエラーとかではなく、やり方の質問なので、
ここに寄せるのはお門違いかとも思ったのですが、
思ったように情報を見つけることができなかったので、質問しました。
よろしくお願いしますm( _ _)m

yoko kai への返信

Re: 索引で%や&などの文字を表示させるには

- ワトソン の投稿
% と & を索引に載せる,という意味では,yoshi hiro さんのご回答で完全に解決するはずで,@ より後ろの〈索引項目〉を適切にエスケープ等すれば索引に表示されるはずです(一方で @ 前の〈読み方〉部分はエスケープ不要です).

ただし,LaTeX ではなく mendex において特別な役割をもつ文字 (@, !, |, etc.) の場合は,出現位置を問わずバックスラッシュ (\) ではなくダブルクオート (") でエスケープする必要があるので注意してください(詳細は texdoc mendex 等を参照).

ところで,元質問文の

> (当然)表示されず、

の「(当然)」がちょっと気になってしまったので,蛇足的な回答をしてみます.

実は \index 命令の引数内での LaTeX で特別な役割をもつ文字(\, %, &, etc.)の扱いはかなり特殊で,平たく言えば「ほとんどの文字の特殊な能力は無効化」されています.そのため,以下のソースは “合法” です:

%%%%% test1.tex ここから %%%%%

\documentclass{jsarticle}

\usepackage{makeidx}

\makeindex  % test1.idx に索引項目を収集

\begin{document}

テスト
\index{きごう%@記号%}
\index{きごう&@記号&}

%\printindex    % 実際の索引は表示しない

\end{document}

%%%%% test1.tex ここまで %%%%%

実際に,上のファイルは LaTeX でエラーなく処理され,test1.idx に

%%%%% test1.idx ここから %%%%%

\indexentry{きごう%@記号%}{1}
\indexentry{きごう&@記号&}{1}

%%%%% test1.idx ここまで %%%%%

と記載されます.この test1.idx は mendex でも正常に処理できて

%%%%% test1.ind ここから %%%%%

\begin{theindex}

  \item 記号%, 1
  \item 記号&, 1

\end{theindex}

%%%%% test1.ind ここまで %%%%%

となります.

しかし,先の元ソース test1.tex で \printindex のコメントアウトを解除すると,その位置で test1.ind が(存在すれば)読み込まれるわけですが,ここで初めて % や & の特殊効果が発揮されて,エラーにつながります.

したがって,きちんと狙い通りの索引を表示させるためには

%%%%% test2.tex ここから %%%%%

\documentclass{jsarticle}

\usepackage{makeidx}

\makeindex  % test2.idx に索引項目を収集

\begin{document}

テスト
\index{きごう%@記号\%}
\index{きごう&@記号\&}

\printindex    % 実際の索引を表示

\end{document}

%%%%% test2tex ここまで %%%%%

のように @ 以下の部分はバックスラッシュ (\) でエスケープするなどの工夫が必要になります.

ちなみにですが,上記の説明を理解すると @ 前の〈読み方〉部分でエスケープ不要な理由も明らかになったかと思います.