manyind 索引逗号前不需要空格

manyind 索引逗号前不需要空格

使用时,每个索引关键字后都会出现不需要的空格曼尼德包裹。

我不明白我做错了什么,因为当我尝试编译manyind 文档,指数表现良好。

MWE(替换manyindmakeidx以查看正确行为):

\documentclass{book}
\usepackage{lipsum}

\usepackage{manyind}
%\usepackage{makeidx}
\makeindex

\begin{document}
\lipsum[1]\index{abc}
\printindex
\end{document}

查看术语后的额外空格美国广播公司,位于下方逗号之前。

当前行为

答案1

中有一个拼写错误manyind.sty,基本上就在 的开头\AtBeginDocument{...}

 \protected@write
    \@indexfile {}{\string \indexentry
    {\ind@nr#1 }{\thepage}}%
  \endgroup

必须改为

\protected@write
   \@indexfile {}{\string \indexentry
  {\ind@nr #1}{\thepage}}%
  \endgroup

\ind@nr即和之间的空间#1在这里确实很重要。

以下代码修复了这个问题。

\documentclass{book}
\usepackage{blindtext}

\usepackage{manyind}

\makeatletter

\AtBeginDocument{\def\ind@nr#1{\string\indnr\mindchoice d\gr@bltr#1-\relax b #1}%
\ifx\@@wrindex\undefined
\def\@wrindex#1{\@bsphack 
\protected@write
    \@indexfile {}{\string \indexentry
    {\ind@nr #1}{\thepage}}%
  \endgroup
\@esphack}%
\else
\def\@wrindex#1{\@@wrindex\ind@nr#1||\\}%
\fi
\setindex{main}}%

\makeatother
%\usepackage{makeidx}
\makeindex



\begin{document}
\blindtext[1]\index{abc} \index{cdef}
\printindex
\end{document}

相关内容