scrbook + imakeidx + original 的索引标题太低

scrbook + imakeidx + original 的索引标题太低

我正在使用文档类scrbook和包imakeidx以及original创建索引的选项。但我注意到索引标题低于所有其他出现的标题(目录、章节、参考书目等)。

索引标题太低

使用 时也会发生同样的情况scrartcl,但使用 时不会发生scrreprt。没有选项 也不会发生这种情况original

这是故意为之吗?如果不是,该如何修复?

我怀疑它不是有意的,因为它的行为与和scrreprt不同。scrbookscrartcl

\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环境的包索引标题。

相关内容