![printindex 中的 \hbox 溢出](https://linux22.com/image/252391/printindex%20%E4%B8%AD%E7%9A%84%20%5Chbox%20%E6%BA%A2%E5%87%BA.png)
我已经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 选项,draft
overfull 框将标记为黑色框。删除第 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