跨越多页的方框

跨越多页的方框

前段时间我定义了一个盒子环境,它有以下特点:

  • 它有一个框架颜色和背景颜色
  • 它存储边注(如果有),并在框的末尾恢复它们。我为此使用了命令\mpgmpar@savemarginpars\mpgmpar@restoremarginpars来自包minipage-marginpar

它工作得“完美”,但现在我需要在这些框中输入很长的文本,而且没有分页符。我的实际代码显然远非最佳,如下所示:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{blindtext}
\usepackage{xcolor}
\usepackage{minipage-marginpar}
\usepackage{fancybox}

\newcommand{\strokecolor}{}
\newcommand{\fillcolor}{}
\newlength{\currentparskip}


\makeatletter
\newenvironment{mabox}[3]{%
\renewcommand{\strokecolor}{#2}
\renewcommand{\fillcolor}{#3}
\begin{Sbox}%
\setlength{\currentparskip}{\parskip}% save the value of paragraph skip
\begin{minipage}{#1}%
\setlength{\parskip}{\currentparskip}% restore the value
\mpgmpar@savemarginpars
}%
{\end{minipage}\end{Sbox}\fcolorbox{\strokecolor}{\fillcolor}{\TheSbox} mpgmpar@restoremarginpars}
\makeatother

\begin{document}

\begin{mabox}{10cm}{blue}{gray}
0000

\blindtext \blindtext

11111

\blindtext \blindtext

2222

\blindtext \blindtext

3333

\blindtext \blindtext
\end{mabox}
\end{document}

那么,我该如何修改的定义mabox,以便保留当前的特点,并且如果内容很长,该框将跨越几页?

答案1

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{blindtext}
\usepackage{xcolor}

\usepackage[style=1,leftmargin=0pt,rightmargin=0pt]{mdframed}


\makeatletter

\newenvironment{boxtype1}{%
\begin{mdframed}%
[linewidth=.5,margin=8.5,backgroundcolor=gray!20,linecolor=black,fontcolor=black]%
\fontsize{9}{12}\sffamily\selectfont%
}{\end{mdframed}}


\makeatother

\begin{document}


\begin{boxtype1}
0000

\blindtext \blindtext

11111

\blindtext \blindtext

2222

\blindtext \blindtext

3333

\blindtext \blindtext

\end{boxtype1}

\end{document}

相关内容