将文本中的索引条目可视化?

将文本中的索引条目可视化?

当我使用\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

相关内容