如何避免索引中出现坏框?

如何避免索引中出现坏框?

我目前正在编写一个更大的文档,其中还包含一个索引。不幸的是,索引产生了很多坏框。请在底部找到一个小例子。

我的问题很简单(但希望不是太愚蠢),那就是是否有办法避免这种情况。重新措辞索引条目并不是一个真正的选择,因为有几个长单词。

另一种可能性是仅“过滤掉”索引中出现的警告消息。有办法吗?

\documentclass[paper=A4, fontsize=11pt, draft]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{microtype}
\usepackage[onehalfspacing]{setspace}
\usepackage{makeidx}
\usepackage[fleqn]{amsmath}
\usepackage{amsthm,amssymb}
\usepackage{tikz}
\usepackage{xspace}
\usepackage{booktabs}

\clubpenalty=9999
\widowpenalty=9999
\displaywidowpenalty=9999

\makeindex

\begin{document}

\emph{automata learning}\index{Automata learning|see{Algorithmic learning}}

\printindex

\end{document}

答案1

正在加载microtype包应该可以减少(“underfull hbox”)警告的数量。另一个(或附加)选项是\RaggedRight使用我的设置索引(仍然允许连字符)idxlayout包(内部使用ragged2e)。

\documentclass{article}

\usepackage{microtype}

\usepackage{makeidx}
\makeindex

\usepackage[justific=RaggedRight]{idxlayout}

\usepackage{lipsum}

\begin{document}

Some text.\index{\lipsum*[1]}

\printindex

\end{document}​

在此处输入图片描述

编辑:在您添加的示例中,实际问题是 无法阻止的“过满的水平盒子” microtype。使用\RaggedRight仍然是一种选择;作为替代方案,您可以将\emergencystretch索引设置为正值(例如 1em)。

\documentclass[draft]{scrbook}

\usepackage{microtype}

\usepackage{makeidx}
\makeindex

\begin{document}

\emph{automata learning}\index{Automata learning|see{Algorithmic learning}}

\begingroup
\emergencystretch=1em

\printindex

\endgroup

\end{document}

答案2

我认为,书籍索引几乎总是应该右对齐;带有对齐内容的索引只有在非常特殊的情况下才是“可对齐的”(参见教科书,附录 d 中的第 392-394 页就出现了这种情况 - 即使在这里,右边参差不齐也会与左边参差不齐交替出现,以避免完全对齐导致的非常糟糕的间距)。

scrbook.cls没有显示使用不规则设置的证据,因此我建议添加它。我可能会通过重新定义来做到这一点;请参阅intheindex的定义以了解将其最好地合并到哪里的想法。\theindexamsbook.cls

在这种情况下,无论使用原始版本\raggedright还是修改版本ragged2e并没有太大区别。

相关内容