我正在努力解决在双列页面布局中使用书籍类 scrbook 的环境的正确换行问题。我正在使用彩色盒子包来定义花式框。正如您在我的代码中看到的,我有两个颜色框。一个用于注释调用tcnote
,另一个用于定义(就像数学教科书中常见的那样)。
不幸的是,编译结果取决于页面上有多少文本。例如,如果我添加更多虚拟文本,则结果会很糟糕,如下图所示。您可以通过注释/取消注释以下行来试用我的代码\lipsum[1][2] % dummy text ON/OF
- 在 tcnote 环境之外,绿色框中的方程式将按预期打印。
- 在 tcnote 环境中,方程式打印在绿色框外面,这是错误的。
- tcnote 环境分为几页,但一页就足够了。
MNWE:
\documentclass[fontsize=10pt,twocolumn]{scrbook}
\usepackage{lipsum}
\usepackage[most]{tcolorbox}
\usepackage{amsmath,mathtools}
\newcommand\abs[1]{\ensuremath{\lvert#1\rvert}}
\newtcolorbox{tcnote}[1][]{%
enhanced jigsaw, % better frame drawing
enforce breakable, % breakable,
borderline west={2pt}{0pt}{red}, % straight vertical line at the left edge
sharp corners, % No rounded corners
boxrule=0pt, % no real frame,
coltitle={red!25!black}, % Black colour for title
colback={yellow!30},
attach title to upper, % Move the title into the box
right=10pt,
compress page,
enhanced,
#1
}
\newtcbtheorem[auto counter,number within=chapter]{fyzdef}{DEF}{%
colback=green!5!white,
colframe=green!75!black,
fonttitle=\itshape, % \bfseries,
enforce breakable, % breakable,
compress page,
enhanced,
}{fyz}
\begin{document}
\section{Section}
\lipsum[5]
\lipsum[5]
\lipsum[1]
\lipsum[1][2]
% \lipsum[1][2] % dummy text ON/OF
\begin{fyzdef}{Kronecker}{def016}
\begin{equation}
\delta_{ij} =
\begin{cases}
1 & \text{for } i = j \\
0 & \text{for } i \neq j.
\end{cases}
\end{equation}
\end{fyzdef}
\lipsum[1]
\begin{tcnote}
\lipsum[1]
\begin{fyzdef}{Einstein sume rule}{def015}
\lipsum[1][3]
\begin{equation*}
a'_i = \sum^3_{j=1} = \alpha_{ij}a_j.
\end{equation*}
text
\begin{equation}
a_ia_i = a_1a_1 + a_2a_2 + a_3a_3 = \abs{a}^2 = a^2. % (2.1)
\end{equation}
\end{fyzdef}
\lipsum[1][2]
\begin{fyzdef}{Kronecker}{def016}
\begin{equation}
\delta_{ij} =
\begin{cases}
1 & \text{for } i = j \\
0 & \text{for } i \neq j.
\end{cases}
\end{equation}
\end{fyzdef}
\lipsum[1][2]
\begin{equation}
a'_i = α_{ij} a_j
\end{equation}
\lipsum[1][2]
\begin{equation}
α_{ik} α_{ij} = δ_{kj},
\end{equation}
\lipsum[1]
\end{tcnote}
\end{document}
答案1
根据 mbert 的帖子,解决方案是enforce breakable
用简单的开关替换breakable
。
这彩色盒子文档说,enforce breakable
当开关用于可破坏盒子内的可破坏盒子时,会产生副作用。在这种情况下,它通常会造成混乱。