printindex 中的 \hbox 溢出

printindex 中的 \hbox 溢出

我已经index生成了一个makeindex,但是当再次编译文件时,当生成索引时,我得到了一堆溢出的\hbox

这是导致索引溢出的一个例子:

\begin{theindex}
  \item Type, 149, 155
    \subitem GetProperties(), 127, 130, 135, 150
\end{theindex}

我不想手动更改 .ind 文件,我猜这是错误的方法;那么我应该怎么做?

我认为\newline在上面 127 之前添加一个会起作用,但是正如我所说,我不想直接更改这个文件。

编辑-重现错误

下面是重现我遇到的错误的示例,首先你需要页面“創建空間“。

然后我使用以下代码来生成文件:

\documentclass{book}
\usepackage[size=novel,trim=0,paper=white,preview=false,gutter=0.5in,inner=0.25in,outer=0.25in,top=0.75in,bottom=0.75in,geometryextra={twoside,heightrounded,truedimen},colourpackage=xcolor,colorpackage=xcolor]{createspace}

\usepackage{index}
\usepackage{lipsum}
\usepackage{courier}

\makeatother
\makeindex
\begin{document}

\index{A}
\index{B}
\index{C}
\index{D}
\index{E}
\index{F}
\index{G}
\index{H}
\index{I}
\index{J}
\index{K}
\index{L}
\index{M}
\index{N}
\index{O}
\index{P}
\index{T}
\index{U}
\index{V}
\index{X}
\index{Y}
\index{A1}
\index{B2}
\index{C3}
\index{D4}
\index{E5}
\index{F6}
\index{G7}
\index{H8}
\index{I9}
\index{J10}
\index{K11}
\index{L12}
\index{M13}
\index{N14}
\index{O15}
\index{P16}
\index{T20}
\index{U21}
\index{V22}
\index{X23}
\index{Y24}

\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\index{Type!GetProperties()}
\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\index{Type!GetProperties()}
\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\index{Type!GetProperties()}
\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\index{Type!GetProperties()}
\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\index{Type!GetProperties()}
\lipsum[1-50]
\lipsum[1-50]
\lipsum[1-50]
\index{Type}
\index{Type!GetProperties()}

\printindex

\end{document}

之后我运行:makeindex -s headings.ist MWE.idx

headlines.ist 包含以下内容:

headings_flag 1
heading_prefix "\\textbf\{\\large "
heading_suffix "\}"

如果您现在转到生成的 PDF 的末尾,您将看到索引超出了页边距:

在此处输入图片描述

答案1

您可以首先尝试放宽索引中的空间参数:

\usepackage{etoolbox}
\appto{\theindex}{\spaceskip=.33333em plus .33333em minus .11111em }

这将使单词之间的空间可以拉伸得更多一些(通常的拉伸值为 .22222em)。

另一种策略可能是

\usepackage{etoolbox}
\appto{\theindex}{\emergencystretch=6em }

这应该会产生类似的结果。

更激烈的

\usepackage{etoolbox}
\appto{\theindex}{\sloppy}

绝对不推荐。

答案2

索引不需要对齐。使用该包,ragged2e您可以使用宏\RaggedRight来获得左对齐的索引。这样做的附带效果是:不会过满\hbox

例如:

\documentclass[%
  a5paper      % papersize
 ,draft        % to show the overfull hbox
]{article}

\usepackage{index,lipsum,lmodern}
\usepackage{ragged2e}   % ragged margin with hyphenation
\makeindex

\begin{document}
\lipsum[1]\index{Type!GetProperties()}\clearpage\lipsum[1]\clearpage
\lipsum[1]\index{Type!GetProperties()}\clearpage\lipsum[1]\clearpage
\lipsum[1]\index{Type!GetProperties()}\clearpage\lipsum[1]\clearpage
\lipsum[1]\index{Type!GetProperties()}\clearpage\lipsum[1]\clearpage
\lipsum[1]\index{Type!GetProperties()}\clearpage\lipsum[1]\clearpage
\lipsum[1]\index{Type!GetProperties()}\clearpage\lipsum[1]\clearpage
\lipsum[1]\index{Type!GetProperties()}\clearpage
\index{Type}\index{Test}\index{Type!GetProperties()}

{              % start group
%\RaggedRight  % left-justified setting    % line 21
\printindex    % insert index here
}              % end group
\end{document}

您将收到警告“overfull hbox”。使用 class 选项,draftoverfull 框将标记为黑色框。删除第 21 行中的前导注释,警告将消失...

我使用的索引文件是:

\begin{theindex}
{\bfseries\hfil T\hfil}\nopagebreak

  \item Test, 14
  \item Type, 14
    \subitem GetProperties(), 1, 3, 5, 7, 9, 11, 13, 14

\end{theindex}

我使用的ist文件是:

% Index-Stildatei 
headings_flag    1  % Big letter before group
heading_prefix   "{\\bfseries\\hfil "
heading_suffix   "\\hfil}\\nopagebreak\n"
symhead_positive "Symbole"

delim_0  
delim_1  
delim_2 

相关内容