Ledmac \pagelinesep 和 Makeindex

Ledmac \pagelinesep 和 Makeindex

我正在为文档创建多个索引,使用LedmacMemoir。默认情况下,页码和行号(使用 生成\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}{:})之后一切都会正常工作。否则,我会收到我提到的错误。pdflatexmakeindexpdflatex

答案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>

相关内容