我正在使用文档类scrbook
和包imakeidx
以及original
创建索引的选项。但我注意到索引标题低于所有其他出现的标题(目录、章节、参考书目等)。
使用 时也会发生同样的情况scrartcl
,但使用 时不会发生scrreprt
。没有选项 也不会发生这种情况original
。
这是故意为之吗?如果不是,该如何修复?
我怀疑它不是有意的,因为它的行为与和scrreprt
不同。scrbook
scrartcl
\documentclass[a6paper, 10pt, oneside]{scrbook}
\usepackage{imakeidx}
\makeindex
\begin{document}
\chapter{Test chapter}
Lorem\index{lorem} ipsum\index{ipsum}.
\printindex
\end{document}
答案1
这显然是一个问题scrbook
;是否取决于\twocolumn
这是一个值得讨论的问题。如果我尝试
\documentclass[a6paper, 10pt, oneside]{scrbook}
%\usepackage[original]{imakeidx}
\usepackage{makeidx}
\makeindex
\begin{document}
\chapter{Test chapter}
Lorem\index{lorem} ipsum\index{ipsum}.
\printindex
\end{document}
我得到以下输出:
即确切地和你得到的一样
\documentclass[a6paper, 10pt, oneside]{scrbook}
\usepackage[original]{imakeidx}
%\usepackage{makeidx}
\makeindex
\begin{document}
\chapter{Test chapter}
Lorem\index{lorem} ipsum\index{ipsum}.
\printindex
\end{document}
您可以使用 来修复它multicol
。
\documentclass[a6paper, 10pt, oneside]{scrbook}
\usepackage[original]{imakeidx}
\usepackage{etoolbox,multicol}
\makeindex
\makeatletter
\renewcommand{\idx@heading}{%
\if@openright\cleardoublepage\else\clearpage\fi
\@chaptertolistsfalse
\idx@@heading{\indexname}%
\ifidx@leveldown
\addsecmark{\indexname}%
\else
\@mkdouble{\MakeMarkcase{\indexname}}%
\fi
}
\apptocmd{\theindex}{\setlength{\multicolsep}{0pt}\begin{multicols*}{2}}{}{}
\pretocmd{\endtheindex}{\end{multicols*}}{}{}
\makeatother
\begin{document}
\chapter*{Test chapter}
Lorem\index{lorem} ipsum\index{ipsum}.
\printindex
\end{document}
答案2
KOMA-Script 使用类似 的东西\twocolumn[<indexheading>]
,但\twocolumn
在可选参数的标题前添加了额外的垂直空间。所以这是 LaTeX 命令的问题twocolumn
。如果你仔细观察,你会发现它也发生在 上scrreprt
。
我问过 Markus。他建议使用包imakeidx
(不带选项original
)或其他允许加载包multicolumn
并激活multicols
环境的包后索引标题。