KOMA-Script (scrbook):单列目录和双列文档中的 minitoc

KOMA-Script (scrbook):单列目录和双列文档中的 minitoc

我的目录格式有问题。请参阅下面的 MNWE。我想将所有表格切换为一列布局。我尝试使用此解决方案tex.stackexchange 答案,使用这个 tex 代码:

\unsettoc{toc}{onecolumn} 

但似乎,这不起作用。我试图理解手册 scrbook(第页264),但不幸的是我没有得到它。我用的是 miktex/xelatex。我还附上了翻译结果的图片。

\documentclass[twocolumn]{scrbook}
\usepackage[nohints]{minitoc}  
\unsettoc{toc}{onecolumn}
\usepackage{lipsum}
\begin{document}
\dominitoc
\tableofcontents
\chapter{Foo}
\minitoc
\lipsum[1]
\section{Bar}
\lipsum[2]
\subsection{Baz}
\lipsum[3]
\section{FooBarBaz}
\lipsum[4]
\end{document}

在此处输入图片描述 图1: 命令\tableofcontents


在此处输入图片描述 图 2: 命令\minitoc

答案1

对于主要目录

请再次仔细阅读链接的答案和KOMA-Script文档1)默认情况下scrbook目录scrreprt设置在单列模式。只有当你想把它分成两列时,你才需要\unsettoc{toc}{onecolumn}。所以,把它去掉是这里的解决方案……

对于 minitoc

使用\setchapterpreamble2)。注意,您必须在它所属的章节之前设置它。使用两个可选参数,您可以影响位置和宽度。

还请注意,我必须在 之前和之后停用规则\mtcsetrules{minitoc}{off}。作为解决方法,我添加了两次\hrulefill(第一次必须在\smash,然后是 make 框 [如果没有它也可以工作,但垂直空间确定会更困难],第二次在没有它的情况下也可以工作,但我只是复制了它)和一些垂直空间。我猜,必须\vspace根据字体和字体大小单独调整。

由于您很可能会有多个章节,因此我定义了两个新命令,请参阅下面的代码以了解注释。因为这些命令\setchapterpreamble在里面(或打算在里面使用它们),这些必须在每章之前设定。

\documentclass[twocolumn]{scrbook}
\usepackage[nohints]{minitoc}
\mtcsetrules{minitoc}{off}
\usepackage{lipsum}

\newcommand{\dochaptertoc}{%
  \vspace{1.85\baselineskip} % workaround for removed rule
  \smash{\makebox[\linewidth]{\hrulefill}} % workaround for removed rule
  \vspace{-1.85\baselineskip} % workaround for removed rule
  \minitoc
  \vspace{-1.15\baselineskip} % workaround for removed rule
  \smash{\makebox[\linewidth]{\hrulefill}} % workaround for removed rule
  \vspace{1.15\baselineskip} % workaround for removed rule
}
\newcommand{\setchaptertoc}{%
  \setchapterpreamble{% KOMA-Script command
    \dochaptertoc%
  }}

\begin{document}
\dominitoc
\tableofcontents

\setchaptertoc
\chapter{One}
\lipsum[1]
\section{One, one}
\lipsum[2]
\subsection{One, one, one}
\lipsum[3]
\section{One, two}
\lipsum[4]

\setchapterpreamble{
  \dictum{Time for a bon-mot.}% KOMA-Script command
  \dochaptertoc
}
\chapter{Two}
\lipsum[5]
\section{Two, one}
\lipsum[6]
\section{Two, two}
\subsection{two, two, one}
\lipsum[7]
\end{document}

在大多数情况下,将其放在章节前面就足够了\setchaptertoc。但是对于想要添加更多内容(而不仅仅是 minitoc)的情况,我定义了\dochaptertoc用于删除规则的变通方法\setchapterpreamble,参见示例中的第 2 章。

1)在Texdoc.net上在线阅读:“\setuptoc” 和 “\unsettoc”(PDF)

2)也可以在Texdoc.net上在线阅读:“\setpartpreamble” & “\setchapterpreamble”(PDF 格式)

相关内容