定义 KOMA 双栏记事本序言中的章节标题跨度

定义 KOMA 双栏记事本序言中的章节标题跨度

我将多个短章节组合成一本书。我想要一个两列布局,但新章节应始终跨越两列。这些章节是使用 pandoc 从 markdown 文件生成的。

我试过@xports 方法\multicol,但我不想编辑每个部分的标题,而更愿意在序言中定义行为。

\documentclass[twocolumn=true]{scrbook}
\usepackage{lipsum}

\begin{document}
\chapter{Chapter 1}
\section{Section 1}
\lipsum[1-2]

\section{Section 2}
\lipsum[3-4]

\section{Section 3}
\lipsum[1-4]

\chapter{Chapter 2}
\section{Section 1}
\lipsum[1-2]

\section{Section 2}
\lipsum[3-4]

\section{Section 3}
\lipsum[1-5]

\end{document}

答案1

cuted欢迎使用 TeX.SX!您可以像以下示例一样使用该包。我认为,LaTeX 可能并不总是阻止章节标题和下一段之间的分页符。可能需要进行一些调整。

\documentclass[twocolumn=true]{scrbook}
\usepackage{lipsum, cuted}

\renewcommand{\sectionlinesformat}[4]{%
\begin{strip}\thesection\autodot\enskip #4\end{strip}%
}

\begin{document}
\chapter{Chapter 1}

\section{Section 1}
\lipsum[1-3]

\section{Section 2}
\lipsum[3-6]

\section{Section 3}
\lipsum[1-4]

\chapter{Chapter 2}
\section{Section 1}
\lipsum[1-2]

\section{Section 2}
\lipsum[3-4]

\section{Section 3}
\lipsum[1-5]

\end{document}

输出的第一页:

在此处输入图片描述


编辑:如果您不想对小节标题使用相同的样式,则可以使用以下命令将上述设置仅应用于节。我还更改了代码,以便带星号的节标题版本不会获得节编号:

\documentclass[twocolumn=true]{scrbook}
\usepackage{lipsum, cuted}

\makeatletter
\renewcommand{\sectionlinesformat}[4]{%
\Ifstr{#1}{section}{%
\begin{strip}\@hangfrom{\hskip #2#3}{#4}\end{strip}%
}{%
\@hangfrom{\hskip #2#3}{#4}%
}%
}
\makeatother

\begin{document}
\chapter{Chapter 2}
\section{Section 1}
\lipsum[1-2]

\subsection{Subsection 1}
\lipsum[2]

\section{Section 2}
\lipsum[3-4]

\section{Section 3}
\lipsum[1-5]

\end{document}

输出的第一页呈现如下:

在此处输入图片描述

答案2

这是一种适合您的 MWE 的方法。

% sectionprob.tex  SE 591865
%\documentclass[twocolumn=true]{scrbook}
\documentclass{scrbook}
\usepackage{multicol}
\usepackage{lipsum}

% \section not in multicolumn
\let\savesection\section
\renewcommand{\section}[1]{%
  \end{multicols}
  \savesection{#1}
  \begin{multicols}{2}}

% \chapter not in multicolumn
\let\savechapter\chapter
\renewcommand{\chapter}[1]{%
  \end{multicols}
  \savechapter{#1}
  \begin{multicols}{2}}

\begin{document}
\begin{multicols}{2}  % start 2 columns
\chapter{Chapter 1}

\section{Section 1}
\lipsum[1-2]

\section{Section 2}
\lipsum[3-4]

\section{Section 3}
\lipsum[1-4]

\chapter{Chapter 2}
\section{Section 1}
\lipsum[1-2]

\section{Section 2}
\lipsum[3-4]

\section{Section 3}
\lipsum[1-5]

\end{multicols} % end 2 columns
\end{document}

在此处输入图片描述

奇怪的是,对我来说,\chapter2 列多列中的常规设置位于第二列之上。

答案3

正如@esdd 在评论中所建议的那样,我使用了一个带有 cuted 和 needspace 的标题钩子:

\documentclass[twocolumn=true]{scrbook}
\usepackage{lipsum}

\usepackage{cuted, needspace}
\newcommand*{\startonecolumn}[1]{\begin{strip}\needspace{4\baselineskip}}
\newcommand*{\stoponecolumn}[1]{\end{strip}}
\AddtoDoHook{heading/begingroup/section}{\startonecolumn}
\AddtoDoHook{heading/endgroup/section}{\stoponecolumn}
% \AddtoDoHook{heading/begingroup/subsection}{\startonecolumn}
% \AddtoDoHook{heading/endgroup/subsection}{\stoponecolumn}

\begin{document}
\chapter{Chapter 1}
\section{Section 1}
\lipsum[1]
\subsection{Subsection 1}
\lipsum[2]

\section{Section 2}
\lipsum[3-4]

\section{Section 3}
\lipsum[1-4]

\chapter{Chapter 2}
\section{Section 1}
\lipsum[1-2]

\section{Section 2}
\lipsum[3-4]

\section{Section 3}
\lipsum[1-5]

\end{document}

我还添加了跨越小节的钩子(上面已注释掉)。

mwe 输出第 1 页

相关内容