我在使用 mdframed 时遇到一个问题,我在跨越多页的框架内创建了一个框架,但我希望 mdframed 能够在各个页面上以不同的方式拆分它们,以便将第二页上的大部分文本移动到第一页。
以下是代码的输出:
所需的结果应如下所示,这是我在 Microsoft Paint 中创建的:
以下是代码:
\documentclass{article}
\usepackage{mdframed,lipsum}
\newmdenv[
leftmargin = 0pt,
innerleftmargin = 1em,
innertopmargin = 0pt,
innerbottommargin = 0pt,
innerrightmargin = 0pt,
rightmargin = 0pt,
linewidth = 1pt,
topline = false,
rightline = false,
bottomline = false
]{leftbar}
\begin{document}
\lipsum[1]
\begin{leftbar}
\lipsum[2]
\begin{leftbar}
\lipsum[3-5]
\end{leftbar}
\end{leftbar}
\end{document}
您可以在图像中看到框架顶部的页码。我希望框架跨页并保持在页边距内。结果是通过将上一个 MWE 中的 \lipsum[3-5] 更改为 \lipsum[3-20] 获得的。
答案1
您可以使用其他宏来mdframed
实现您的目的。例如以下宏:
\documentclass{article}
\usepackage{lipsum}
\newcount\tmpnum
\def\leftline{\par \setbox0=\vbox\bgroup \advance\leftskip by1em \noindent\ignorespaces}
\def\endleftline{\par \setbox1=\vbox{}\endleftlineA}
\def\endleftlineA{
\setbox0=\lastbox
\ifvoid0 \expandafter \endleftlineB \else
\global\dimen1=\ht0
\dimen0=\lastskip \unskip \advance\dimen0 by\lastskip \unskip
\tmpnum=\lastpenalty \unpenalty
\global\setbox1=\vbox{\ifnum\tmpnum=0 \else \penalty\tmpnum \fi
\vskip\dimen0 \hbox{\hbox to\leftskip{\hss\leftrule\kern.4em}\kern-\leftskip\box0}
\unvbox1}
\expandafter \endleftlineA \fi
}
\def\endleftlineB{\egroup \advance\dimen1 by\prevdepth
\advance\dimen1 by-\baselineskip
\vskip-\dimen1 \unvbox1
}
\def\leftrule{\vbox{\kern-.7\baselineskip
\hbox{\vrule width1pt height.7\baselineskip depth\ifdim\ht1>0pt.4\else.1\fi\baselineskip}
\kern-\prevdepth}
}
\begin{document}
\lipsum[1]
\leftline
\lipsum[2]
\leftline
\lipsum[3-6]
\endleftline
\endleftline
\lipsum[1]
\end{document}
答案2
仔细检查手册后,我发现了以下文字:
嵌套的 mdframed 环境无法分割。
这就解释了。