关键版本的软件包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
答案2
我知道我来晚了,但也许其他人也对以下方法感兴趣。我使用 splitidx 包将索引拆分为多个索引,并保留 ledmac 提供的页面和行号。
代码修改:
在 ledmac 软件包中有\@wredindex
命令将索引条目写入 *.idx文件。这是我进行修改的地方。我格式化输出字符串,使其类似于\sindex
splitidx 包中的命令写入的输出。为此,我们必须\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}