我将多个短章节组合成一本书。我想要一个两列布局,但新章节应始终跨越两列。这些章节是使用 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}
奇怪的是,对我来说,\chapter
2 列多列中的常规设置位于第二列之上。
答案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}
我还添加了跨越小节的钩子(上面已注释掉)。