KOMA-Script (scrbook): одноколоночное оглавление и мини-документ в двухколоночном документе

KOMA-Script (scrbook): одноколоночное оглавление и мини-документ в двухколоночном документе

У меня проблема с форматированием моих оглавлений. Пожалуйста, посмотрите мой MNWE ниже. Я хотел быперевести все мои таблицы в формат с одним столбцом. Я пытаюсь использовать решение из этогоtex.stackexchange ответ, которые используют этот фрагмент текс-кода:

\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) :По умолчаниюв scrbookscrreprt) toc установлен водноколоночный модус. Только когда вы хотите, чтобы это было в двух столбцах, вам нужно \unsettoc{toc}{onecolumn}. Так что, исключение этого является решением здесь …

Для минитока

Используйте \setchapterpreamble2) . Обратите внимание, что вы должны установить его перед главой, к которой он принадлежит. С помощью двух необязательных аргументов вы можете влиять на положение и ширину.

Также обратите внимание, что мне пришлось деактивировать правила до и после с помощью \mtcsetrules{minitoc}{off}. В качестве обходного пути я добавил два раза \hrulefill(первый должен быть в \smash, а затем сделать поле [это сработало бы и без него, но тогда было бы сложнее определить вертикальный пробел], второй тоже сработал бы и без него, но я просто скопировал его) и несколько вертикальных пробелов. Я думаю, что их \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)

Связанный контент