章の冒頭の狭いテキスト領域

章の冒頭の狭いテキスト領域

章の冒頭ページを変更したいと思います。狭いテキストブロックを設定し、広い内側の余白に章名を配置します。「koma-script」クラスを使用しています。

ページ例

+--------------+--------------+
|              | title  xxxxx |
|              |        xxxxx |
|              |        xxxxx |
|              |        xxxxx |
|              |        xxxxx |
|              |        xxxxx |
|              |        xxxxx |
+--------------+--------------+

\documentclass{scrbook}
\usepackage{lipsum}
\usepackage{marginnote}
\usepackage{multicol}
\RedeclareSectionCommand[beforeskip=0pt]{chapter}

\begin{document}
\begin{multicols}{2}
\chapter{Introduction}
\vfill\null
\columnbreak
\lipsum
\end{multicols}
\lipsum

\end{document}

シンプルですが満足のいく解決策です。ページ 2 のレイアウトを自動的に 1 列に変更することはできますか?

答え1

自動的に 2 列モードに切り替わり、章の見出しが左の列に配置されることは、主な問題ではありません。章のページの後で 1 列モードに戻ることも、実際の問題ではありません。

\documentclass{scrbook}
\usepackage{lipsum}
\RedeclareSectionCommand[beforeskip=0pt,afterindent=false,style=section]{chapter}
\newif\ifafterheadingnewpage
\AddToHook{cmd/@afterheading/before}{\ifafterheadingnewpage\newpage\afterheadingnewpagefalse\fi}
\AddToHook{cmd/chapter/before}{\twocolumn\afterheadingnewpagetrue}
\AddToHook{shipout/after}{\onecolumn}

\begin{document}
\chapter{Introduction}
\lipsum

\end{document}

しかし、ご覧のとおり:

あなたが望むものではない

本当の問題は、TeX は既にタイプセットされ、部分的に(あるいは完全に)次のページに移動された段落の幅を変更しないということです。そのため、そのような段落を、章のページに収まる部分と、1 列のページに印刷される部分に自分で分割する必要があります。たとえば、

\documentclass{scrbook}
\usepackage{lipsum}
\RedeclareSectionCommand[beforeskip=0pt,afterindent=false,style=section]{chapter}
\newif\ifafterheadingnewpage
\AddToHook{cmd/@afterheading/before}{\ifafterheadingnewpage\newpage\afterheadingnewpagefalse\fi}
\AddToHook{cmd/chapter/before}{\twocolumn\afterheadingnewpagetrue}
\AddToHook{shipout/after}{\onecolumn}

\begin{document}
\chapter{Introduction}
\lipsum[1-2]

Nulla malesuada porttitor diam. Donec
felis erat, congue non, volutpat at, tinci-
dunt tristique, libero. Vivamus viverra fer-
mentum felis. Donec nonummy pellentes-
que ante. Phasellus adipiscing semper elit.
Proin fermentum massa ac quam. Sed diam
turpis, molestie vitae, placerat a, molestie
nec, leo. Maecenas lacinia. Nam ipsum
ligula, eleifend at, accumsan nec, suscipit
{\parfillskip0pt\newpage}%
\noindent
a, ipsum. Morbi blandit ligula feugiat ma-
gna. Nunc eleifend consequat lorem. Sed
lacinia nulla vitae enim. Pellentesque tin-
cidunt purus vel magna. Integer non enim.
Praesent euismod nunc eu purus. Donec
bibendum quam in tellus. Nullam cursus
pulvinar lectus. Donec et mi. Nam vulpu-
tate metus eu enim. Vestibulum pellentes-
que felis eu massa.

\lipsum[4-7]
\end{document}

これはあなたが望むものですが、手動でブレークします

注意: フックを使用するにcmd/<cmdname>/beforeは、shipout/afterある程度最新の LaTeX が必要です。

関連情報