我指的是coderule
环境(见覆盖 \centering 使图像左对齐)之前由@TH提出,作为对以下问题的回答:覆盖 \centering 使图像左对齐
我使用定义的coderule
方程式环境(即flalign
、amsmath
包)。由于我的方程式很长,我允许自动分页( )。如果我在 周围\allowdisplaybreaks[1]
应用,方程式就不会再中断,并留下大量未使用的空白。是否可以更改环境以使其适应自动分页?coderule
flalign
coderule
答案1
这是环境的完全改版版本coderule
。这次使用mdframed
来自同名的环境mdframed
包裹。该软件包装载了framemethod=tikz
,以为您正在使用编译文档pdflatex
。
虽然mdframed
产生了一个框架环境,但我们将顶部、底部和右侧的边距和线条设置为0pt
,并仅调整左侧边距规格。mdframed
自然地跨页面分隔而没有问题,从而默认提供所需的功能。
在以下最小示例中,coderule
环境采用 3 个可选参数:
\begin{coderule}[<rule width>][<rule sep>][<rule colour>]
...
\end{coderule}
第一个可选参数设置规则的宽度<rule width>
(默认为1em
),第二个可选参数设置规则与段落文本之间的间隔<rule sep>
(默认为1em
)。最后,第三个可选参数允许您修改颜色以满足您的需要(默认为)black
。
\documentclass{article}
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\usepackage[framemethod=tikz]{mdframed}% http://ctan.org/pkg/mdframed
\usepackage{xparse}% http://ctan.org/pkg/xparse
\NewDocumentEnvironment{coderule}{O{1em} O{1em} O{black}}%
{% \begin{coderule}[<rule width>][<rule sep>][<rule colour>]
\allowdisplaybreaks[1]%
\begin{mdframed}%
[topline=false,rightline=false,bottomline=false,%
innertopmargin=0pt,innerrightmargin=0pt,innerbottommargin=0pt,%
skipabove=\parskip,skipbelow=0.3\baselineskip,%
innerleftmargin=#2,outerlinewidth=#1,linecolor=#3]
}
{\end{mdframed}}% \end{coderule}
\begin{document}
\lipsum[1] \bigskip \bigskip \bigskip
\begin{coderule}
\lipsum[2-4]
\begin{align}
f(x) &= ax^2+bx+c \\
f(x) &= ax^2+bx+c \\
f(x) &= ax^2+bx+c \\
f(x) &= ax^2+bx+c
\end{align}
\lipsum[5-6]
\end{coderule}
\lipsum[7-8]
\begin{coderule}[2em][1em][orange]
Here is a short introduction:
\begin{align}
f(x) &= ax^2+bx+c \\
f(x) &= ax^2+bx+c \\
f(x) &= ax^2+bx+c \\
f(x) &= ax^2+bx+c \\
f(x) &= ax^2+bx+c \\
f(x) &= ax^2+bx+c
\end{align}
\lipsum[5-6]
\end{coderule}
\end{document}
当然,选择 3 个附加参数可能是多余的。因此,也可以将其删除,或者调换顺序。此外,align
选择amsmath
可以与 互换flalign
。