我正在为文档创建多个索引,使用Ledmac
类Memoir
。默认情况下,页码和行号(使用 生成\edindex[]{}
)用破折号分隔。我实际上想要一个冒号。Ledmac
文档指定:
页码和行号的组合写为
page\pagelinesep line
,其中默认定义是\newcommand{\pagelinesep}{-}
第 3 页第 5 行的项目将被标记为 3-5。您可以更新 \pagelinesep 以获取不同的分隔符(但恰巧 - 是 MakeIndex 程序使用的默认分隔符)
因此,我尝试过:
\renewcommand*{\pagelinesep}{:}
或者:
\renewcommand{\thepageline}{%
\thepage : \lineref{\edindexlab\thelabidx}
但是,如果在两种情况下,条目都正确地写入 .idx 文件中,则Makeindex
拒绝它们,如下所示:
-- Illegal Arabic digit: position 3 in 60:741.
另外,我无法添加空格或多个字符,否则我得到:
Illegal space within numerals in second argument
我认为问题出在 Makeindex 规则上,而不是 Ledmac 上。有人知道吗?
[编辑:] 这是 MWE
\documentclass{memoir}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{ledmac}
\makeindex[names]
\renewcommand*{\pagelinesep}{:}
\begin{document}
\beginnumbering
\pstart
Here is my numbered text.\edindex[names]{text@Text}
\pend
\endnumbering
\printindex[names]
\end{document}
如果我抑制,则在两次编译(一次编译和最后一次编译\renewcommand*{\pagelinesep}{:}
)之后一切都会正常工作。否则,我会收到我提到的错误。pdflatex
makeindex
pdflatex
答案1
您必须准备一个包含以下两行的 MakeIndex 样式
page_compositor ":"
delim_r ":"
将其保存mystyle.ist
在与主文件相同的目录中,然后makeindex
通过以下方式调用
makeindex -s mystyle names
MakeIndex 有两组字符串常量:输入字符串和输出字符串。例如,actual
变量 default"@"
告诉 MakeIndex,当它找到以下形式的条目时
\indexentry{abc@def}{1}
它会按字母顺序排列条目abc
,但会输出def
。在索引可以以 开头的 LaTeX 内部命令时@
,可以方便地说
actual "="
在样式文件中,这样就可以在文档中说
\index{@ifundefined=\texttt{\string\@ifundefined}}
MakeIndex 将会做正确的事情。
就你的情况来说,莱德麦克用于\pagelinesep
文档和索引生成,因此需要更改page_compositor
(默认"-"
),以便它能够正确解释
\indexentry{xyz}{1:2}
当 MakeIndex 检测到页面范围时,它将输出以指定的字符串分隔的页码delim_r
(默认值"--"
)。设置
delim_r ":"
我们实现了目标。这里我们设置了一个与输出相关的字符串。
(其中代表您机器上的主要分布树).ist
中有许多文件可供研究。<TeX>/makeindex
<TeX>