左侧垂直规则应用于具有自动分页符的 flalign 环境

左侧垂直规则应用于具有自动分页符的 flalign 环境

我指的是coderule环境(见覆盖 \centering 使图像左对齐)之前由@TH提出,作为对以下问题的回答:覆盖 \centering 使图像左对齐

我使用定义的coderule方程式环境(即flalignamsmath包)。由于我的方程式很长,我允许自动分页( )。如果我在 周围\allowdisplaybreaks[1]应用,方程式就不会再中断,并留下大量未使用的空白。是否可以更改环境以使其适应自动分页?coderuleflaligncoderule

答案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

xparse提供环境定义接口,同时lipsum用于生成虚拟文本,乱数风格。

相关内容