我目前正在编写一个更大的文档,其中还包含一个索引。不幸的是,索引产生了很多坏框。请在底部找到一个小例子。
我的问题很简单(但希望不是太愚蠢),那就是是否有办法避免这种情况。重新措辞索引条目并不是一个真正的选择,因为有几个长单词。
另一种可能性是仅“过滤掉”索引中出现的警告消息。有办法吗?
\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
的定义以了解将其最好地合并到哪里的想法。\theindex
amsbook.cls
在这种情况下,无论使用原始版本\raggedright
还是修改版本ragged2e
并没有太大区别。