我很困惑,为什么在某些情况下,如果航向在之后,Koma-script 不会在航向之前遵循垂直跳过longtable
请考虑以下示例:
\documentclass[12pt, paper = B5]{scrbook}
\usepackage{fontspec}
\usepackage{longtable}
\usepackage{lipsum}
\setmainfont{EB Garamond}
\setsansfont{Libertinus Sans}
\begin{document}
\LTpre = 0pt
\LTpost = 0pt
\chapter{Nam dui ligula}
\section{Curabitur auctor semper nulla}
\begin{longtable}{ll}
Lorem ipsum dolor sit amet & consectetuer adipiscing elit\\
Ut purus elit, vestibulum ut & placerat ac, adipiscing vitae, felis.\\
\end{longtable}
\subsection{Morbi auctor lorem}
\lipsum[3]
\end{document}
生成的小节标题将位于表格之后:
现在,如果我删除chapter
和section
,突然跳过就被接受了:
逻辑在哪里?如何强制 Koma-script 始终执行跳过?
答案1
这与 koma-script 无关,您会在书中看到相同的内容。
问题是你有仅有的\section
和之间的长表\subsection
不会触发\if@nobreak
条件的改变。
\documentclass[12pt, paper = B5]{scrbook}
\usepackage{fontspec}
\usepackage{longtable}
\usepackage{lipsum}
\setmainfont{EB Garamond}
\setsansfont{Libertinus Sans}
\begin{document}
\LTpre = 0pt
\LTpost = 0pt
\chapter{Nam dui ligula}
\section{Curabitur auctor semper nulla}
\begin{longtable}{ll}
Lorem ipsum dolor sit amet & consectetuer adipiscing elit\\
Ut purus elit, vestibulum ut & placerat ac, adipiscing vitae, felis.\\
\end{longtable}
\makeatletter \@nobreakfalse \makeatother %added
\subsection{Morbi auctor lorem}
\lipsum[3]
\end{document}