当我使用\index
所有可用选项对于“格式”和“查看”以及交叉引用,我想看看在我做索引的地方此特定条目将如何出现在索引中,即
- 這裡是粗體嗎?
- 如何排序?
- 数字会加粗吗?
- 它是否用“看”来指向其他地方?
目前我用在页边空白处写文字\marginpar
,但我对此不太满意。也许有更好的方法,其他人已经使用了?
答案1
您可以自动生成边注:
\usepackage{etoolbox}
\makeindex
\makeatletter
\pretocmd\@wrindex
{\marginpar{\begingroup\catcode`\{=12\catcode`\}=12 \texttt{\scantokens{#1}}\endgroup}}
{}{}
\makeatother
因此,每个\index
命令都会在页边空白处打印“原样”的参数。我相信这比试图复制最后一个方面要好:所有信息都在那里,而且以一种非常独特的方式。
修补可以根据draft
选项进行,但不是以非常强大的方式,因为在标准类中,该选项只是设置\overfullrule
:
\usepackage{etoolbox}
\makeindex
\makeatletter
\ifdim\overfullrule>\z@
\pretocmd\@wrindex
{\marginpar{\begingroup\catcode`\{=12\catcode`\}=12 \texttt{\scantokens{#1}}\endgroup}}
{}{}
\fi
\makeatother
更强大的方法可能是检查是否draft
出现在扩展中\@classoptionslist
或将代码放在个人包中,比如margind.sty
:
\ProvidesPackage{margind}
\@tempswafalse
\DeclareOption{draft}{\@tempswatrue}
\ProcessOptions\relax
\RequirePackage{etoolbox}
\if@tempswa
\pretocmd\@wrindex
{\marginpar{\begingroup\catcode`\{=12\catcode`\}=12
\texttt{\scantokens{#1}}\endgroup}}{}{}
\fi
考虑到评论中的建议,一个可能的“最终”解决方案可能是
\usepackage{ifdraft}
\usepackage{etoolbox}
\makeatletter
\def\margin@index#1{\marginpar{\texttt{\detokenize{#1}}}}
\ifdraft{}{\let\margin@index\@gobble}
\pretocmd{\@wrindex}{\margin@index{#1}}
\makeatother
仅当指定documentclass 选项时,命令的参数\index
才会写在边距中。draft