使用 ledmac 和 book 类的多个索引

使用 ledmac 和 book 类的多个索引

关键版本的软件包Ledmac提供了一个\edindex{}命令,用于在标准索引中引用页码和行号Makeindex。软件包文档还指定,当与 Memoir 类一起使用时,也可以使用以下语法拥有多个索引\edindex[indexName]{}。此语法与软件包提供的语法非常接近Multind,因此我想知道是否有人知道不使用回忆录类,而是更标准的类,以及专用于多个索引的包(但似乎不适用于该Multind包)。

Ledmac编辑:这是与类的多索引有关的代码部分memoir

\@ifclassloaded{memoir}{%
    \g@addto@macro{\makememindexhook}{%
        \def\edindex{\@bsphack%
        \@ifnextchar [{\l@d@index}{\l@d@index[\jobname]}}}
    \newcommand{\edindex}[2][\jobname]{\@bsphack\@esphack} 
    \def\l@d@index[#1]{%
    \@ifundefined{#1@idxfile}%
    {\ifreportnoidxfile
    \led@warn@NoIndexFile{#1}%
\fi
\begingroup
\@sanitize
\@nowrindex}%
{\def\@idxfile{#1}%
\doedindexlabel
\begingroup
\@sanitize
\l@d@wrindexm@m}}
\newcommand{\l@d@wrindexm@m}[1]{\l@d@@wrindexhyp#1||\\}
\def\l@d@@wrindexhyp#1|#2|#3\\{%
    \ifshowindexmark\@showidx{#1}\fi
    \ifx\\#2\\%
    \protected@write\@auxout{}%
    {\string\@@wrindexm@m{\@idxfile}{#1|hyperpage}{\thepageline}}%
    \else
    \def\Hy@temp@A{#2}%
    \ifx\Hy@temp@A\HyInd@ParenLeft
    \protected@write\@auxout{}%
      {\string\@@wrindexm@m{\@idxfile}{#1|#2hyperpage}{\thepageline}}%
    \else
    \protected@write\@auxout{}%
      {\string\@@wrindexm@m{\@idxfile}{#1|#2}{\thepageline}}%
  \fi
\fi
\endgroup
\@esphack}
}

答案1

我不知道“关键指标”有什么特殊要求,但splitidx包允许多个索引。

编辑:关于多个索引,该类memoir模拟了index包。如果您正在使用另一个类,请尝试加载包index——ledmac您可能必须试验包的加载顺序。

答案2

我知道我来晚了,但也许其他人也对以下方法感兴趣。我使用 splitidx 包将索引拆分为多个索引,并保留 ledmac 提供的页面和行号。

代码修改: 在 ledmac 软件包中有\@wredindex命令将索引条目写入 *.idx文件。这是我进行修改的地方。我格式化输出字符串,使其类似于\sindexsplitidx 包中的命令写入的输出。为此,我们必须\edindex首先重新定义命令以使用可选参数,该参数提供所用索引的名称(与 相同的语法\sindex)。修改后的版本\@wredindex现在检查是否有可选参数,并在两个宏之间分支,将索引条目写入(相同)*.idx文件。该文件应在第一次运行 latex 后由 splitindex 脚本进行分割。

分割索引文件: 以下是如何使用 splitindex 脚本拆分索引文件的简要说明:由于我的计算机上没有安装 perl 和 java 环境,因此我使用 latex 选项来拆分索引文件(请参阅 splitidx 包文档)。步骤如下:打开 Windows 命令窗口 (cmd.exe) 或 Windows Power Shell (powershell.exe),然后导航到 latex-document 文件夹。在那里输入乳胶裂解指数。系统会要求您输入要拆分的文件。如果您的 latexfile 名为 main.tex,则只需输入主要的(因为你的索引文件也叫 main)没有扩展名编号在我们的示例中,splitindex 脚本生成三个新文件:主idx.idx主名称.idx主位置.idx。您可以留在命令窗口中并输入makeindex 主idx.idx(按 Enter 键),然后makeindex 主名称.idx最后makeindex 主位置.idx.脚本再次生成三个新文件(主 IDX.ind主要名称.ind主要位置.ind)。就这样。现在再次用 latex 打印您的文档,三个索引将被打印出来。

%*main.tex*    
\documentclass{book}
\usepackage{ledmac}
\usepackage{splitidx}

\makeatletter
% redefine the edindex-command to enable an optional argument
\def\edindex[#1]#2{\@bsphack\@esphack}

% branch between the index entry with/without opt. argument
\def\@wredindex{\@ifnextchar[\my@lindex\my@index}

% index entry with opt. argument
\def\my@lindex[#1]#2{%
 \protected@write\@indexfile{}%
    {\string\indexentry[#1]{#2}{\thepageline}}%
    \endgroup
  \@esphack
}

% indexentry without opt. argument
\def\my@index#1{%
 \protected@write\@indexfile{}%
    {\string\indexentry{#1}{\thepageline}}%
    \endgroup
  \@esphack
}
\makeatother 

\makeindex

% create new indices
\newindex[StandardIndex]{idx}
\newindex[NameIndex]{name}
\newindex[LocationIndex]{location}


\begin{document}
\beginnumbering
\pstart
Lorem ipsum dolor sit amet\edindex{standardIndex1}, consetetur sadipscing elitr,  sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et\edindex[name]{nameIndex1} justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr,  sed diam nonumy eirmod tempor invidunt ut\edindex[location]{locationIndex1} labore et dolore magna aliquyam erat, sed diam voluptua.
\pend
\endnumbering
\newpage
\beginnumbering
\pstart
 At\edindex{standardIndex2} vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur\edindex[name]{nameIndex2} sadipscing elitr,  sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita\edindex[location]{locationIndex2} kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
\pend
\endnumbering
\printindex[idx]
\printindex[name]
\printindex[location]
\end{document}

相关内容