使用 memoir documentclass 在文本本身中标记索引条目,如 showkeys

使用 memoir documentclass 在文本本身中标记索引条目,如 showkeys

这个问题就像在文本本身中标记索引条目?, 除了用于memoir文档类

如何在命令所在的文本中标记索引条目\index——以及不是在页面的角落showidx,也可以:

  • 在线之上,这样showkeys做的方式;和/或
  • 在出现 的行的边缘处\index

理想情况下,用户应该能够控制出现的条目的格式(字体系列、大小和颜色)。

所引用问题的答案不适用memoir

解决方案需要与以下方面配合使用:

  1. hyperref(以及 Heiko Oberdiek 的“快速而粗糙的解决方案,以允许showidxhyperref共存)。
  2. 多个索引,例如主索引和名称索引(其中使用\index[names]{..})。

这是一个示例源文件,尽管只有一个索引:

\documentclass[draft]{memoir}    
\usepackage[usenames]{xcolor}

\makeindex

\usepackage[final]{hyperref}
\hypersetup{colorlinks,citecolor=red,linkcolor=blue}

%Begin the ``quick and dirty hack'' due to Heiko Oberdiek which loads showidx
\makeatletter
\ifHy@hyperindex
  \def\HyInd@ParenLeft{(}%
% Hook in \HyInd@@wrindex
  \let\HyInd@showidx\@empty
% Hook in \HyInd@@wrindex for package showidx
  \def\HyInd@showidx#1{%
    \@showidx{#1}%
    \if@nobreak
      \ifvmode
        \nobrak
      \fi
    \fi
  }%
% Load package showidx
  \let\siOrg@makeindex\makeindex
  \let\siOrg@@index\@index
  \let\siOrg@@wrindex\@wrindex
  \let\siOrg@index\index
  \RequirePackage{showidx}
  \let\makeindex\siOrg@makeindex
  \let\@index\siOrg@@index
  \let\@wrindex\siOrg@@wrindex
  \let\index\siOrg@index
% rest of hyperref part
  \@ifpackageloaded{multind}{%
    \let\HyInd@org@wrindex\@wrindex
    \def\@wrindex#1#2{\HyInd@@wrindex{#1}#2||\\}%
    \def\HyInd@@wrindex#1#2|#3|#4\\{%
      \ifx\\#3\\%
        \HyInd@org@wrindex{#1}{#2|hyperpage}%
      \else
        \def\Hy@temp@A{#3}%
        \ifx\Hy@temp@A\HyInd@ParenLeft
          HyInd@org@wrindex{#1}{#2|#3hyperpage}%
        \else
          \HyInd@org@wrindex{#1}{#2|#3}%
        \fi
      \fi
    }%
  }{%
    \def\@wrindex#1{\@@wrindex#1||\\}
    \def\@@wrindex#1|#2|#3\\{%
      \ifx\\#2\\%
        \protected@write\@indexfile{}{%
          \string\indexentry{#1|hyperpage}{\thepage}%
        }%
      \else
        \def\Hy@temp@A{#2}%
        \ifx\Hy@temp@A\HyInd@ParenLeft
          \protected@write\@indexfile{}{%
             \string\indexentry{#1|#2hyperpage}{\thepage}%
          }%
        \else
          \protected@write\@indexfile{}{%
            \string\indexentry{#1|#2}{\thepage}%
          }%
        \fi
      \fi
      \endgroup
      \HyInd@showidx{#1}%
      \@esphack
    }%
  }%
\fi
\makeatother
%
%End the ``quick and dirty hack'' due to Heiko Oberdiek which loads showidx

\begin{document}

\tableofcontents

\chapter{We begin}\index{beginning}

Hello\index{greeting!hello|(}% 
\index{Hello}  %
to the World!\index{World}
\index{greeting|seealso{Hello,World}}  

\newpage
abc\index{abc}%
\index{alphabet|see{abc}} %
is before def.\index{greeting!hello|)}

\printindex

\end{document}

以下是附带的.ist文件:

headings_flag 1
heading_prefix "{\\medskip\\hfill\\large\\textsf{\\textbf{"
heading_suffix "}}\\hfill}\\medskip\\nopagebreak\n"

相关内容