分页后 mdframed 内的环境颜色发生变化

分页后 mdframed 内的环境颜色发生变化

我正在创建带有示例和解决方案的教学笔记。在课程开始时,我向学生提供带有示例但空白解决方案的讲义,以便他们在上课时可以像我在课堂上做示例一样填写方框。课后,我会上传带有解决方案的示例。

我计划用这个mdframed包来做这件事。我定义mdframed并编写练习问题,然后添加一个解决方案(exsolution)环境,mdframed当我不想让学生看到解决方案时,我将颜色设置为白色,当我想让他们看到解决方案时,我将颜色设置为黑色。

问题出现在分页符处,解决方案中的颜色在分页符后不会跟随。有任何反馈吗?

当我将解决方案颜色设置\ColourOfSolutions为白色时,我添加了一个示例:


\documentclass[12pt]{report}

\usepackage[utf8]{inputenc}
\usepackage[framemethod=TikZ]{mdframed}
\setlength\parskip{\baselineskip}

\usepackage{lipsum}% just to generate text for the example

\newcounter{example}
 \renewcommand{\theexample}{\arabic{example}}
 \newcommand{\ColourOfSolutions}{white}

\mdfdefinestyle{example}{%
    linecolor=black,
    outerlinewidth=1.5pt,
    %bottomline=false,
    %leftline=false,rightline=false,
    skipabove=\baselineskip,
    skipbelow=\baselineskip,
    frametitle=\mbox{},
    fontcolor=black
}

\newmdenv[%
style=example,
settings={\global\refstepcounter{example}},
frametitlefont={\bfseries Example~\theexample\quad},
]{example}

\newenvironment{exsolution}{\color{\ColourOfSolutions}}

\begin{document}
    \lipsum[1]

\begin{example}
    \lipsum[3]

    \begin{exsolution}
    \lipsum[4]
    \lipsum[5]
    \end{exsolution}

\end{example}   

\end{document}

请在此处查看我得到的图像。请检查解决方案是否为白色,在第一页中未出现,但在第二页中再次出现(解决方案的最后一部分)。将更改为黑色\ColourOfSolutions可以更好地说明这一点:

在此处输入图片描述 在此处输入图片描述

我见过许多人们使用示例和解决方案的案例,但我还没有见过类似的事情。

答案1

虽然问题是关于的mdframed,但也许您可以考虑tcolorbox作为替代解决方案。下一个代码没有显示example与您的环境一样完整的环境(请参阅更新),但部分示例显示可破坏的 tcolorboxes 不会出现颜色问题。

在这种情况下,示例形式而upperbox解决方案是lowerbox。使用参数,lowerbox=visible|invisible您可以决定是否打印下方的框。

您不需要更改为lualatex

\documentclass[12pt]{report}

\usepackage[utf8]{inputenc}
\usepackage[most]{tcolorbox}
\setlength\parskip{\baselineskip}

\usepackage{lipsum}% just to generate text for the example

\newcounter{example}
 \renewcommand{\theexample}{\arabic{example}}
 \newcommand{\ColourOfSolutions}{white}

\newtcolorbox{example}{enhanced,breakable,lowerbox=invisible,collower=blue}

\begin{document}
    \lipsum[1]

\begin{example}
    \lipsum[3]

%All solutions are into the `lowerbox`
    \tcblower

    \lipsum[4]
    \lipsum[5]
\end{example}   

\end{document}

带有invisible下框:

在此处输入图片描述

还有visible一个:

在此处输入图片描述

更新:格式与 OP 的框类似

只是为了展示如何重现类似于 OP 发布的格式tcolorbox。代码改编自tcolorbox文档第 55-56 页中的示例,可能如下所示:

\documentclass[12pt]{report}

\usepackage[utf8]{inputenc}
\usepackage[most]{tcolorbox}
\setlength\parskip{\baselineskip}

\usepackage{lipsum}% just to generate text for the example

\newcounter{example}
\newtcolorbox[use counter=example]{example}{%
    empty,
    title={Example \thetcbcounter},
    attach boxed title to top left,
    boxed title style={empty, size=minimal, left=3mm, top=2mm},
    coltitle=black,
    fonttitle=\bfseries,
    before=\par\smallskip\noindent,
    parbox=false,
    boxsep=0pt,
    left=3mm,
    right=3mm,
    top=4pt,
    breakable,
    pad at break*=0mm,
    overlay unbroken={%
        \draw[line width=2pt] ([yshift=1pt]title.north west) rectangle 
            (frame.south east);},
    overlay first={%
        \draw[line width=2pt]([xshift=1pt]frame.south west) |- 
            ([yshift=1pt]title.north)-|([xshift=-1pt]frame.south east);},
    overlay middle={%
        \draw[line width=2pt]([xshift=1pt]frame.south west) -- 
            ([xshift=1pt]frame.north west);
        \draw[line width=2pt]([xshift=-1pt]frame.south east) -- 
            ([xshift=-1pt]frame.north east);},
    overlay last={%
        \draw[line width=2pt]([xshift=1pt]frame.north west) |- 
            (frame.south)-|([xshift=-1pt]frame.north east);},
    vfill before first,
    lowerbox=visible,
    collower=blue,
    }

\begin{document}
    \lipsum[4]

\begin{example}
    \lipsum[3]
%All solutions are into the `lowerbox`
    \tcblower
    \lipsum[4]
\end{example}   

\begin{example}
    \lipsum[3]
%All solutions are into the `lowerbox`
    \tcblower
    \lipsum[4]
\end{example}   

\end{document}

在此处输入图片描述

答案2

如果lualatex没有障碍,\usepackage{luacolor}将保留颜色堆栈。(但是我改变了颜色,以blue使它在这个例子中更加突出)

\documentclass[12pt]{report}

\usepackage{luacolor}

\usepackage[utf8]{inputenc}
\usepackage[framemethod=TikZ]{mdframed}
\setlength\parskip{\baselineskip}

\usepackage{lipsum}% just to generate text for the example

\newcounter{example}
 \renewcommand{\theexample}{\arabic{example}}
 \newcommand{\ColourOfSolutions}{blue}

\mdfdefinestyle{example}{%
    linecolor=black,
    outerlinewidth=1.5pt,
    %bottomline=false,
    %leftline=false,rightline=false,
    skipabove=\baselineskip,
    skipbelow=\baselineskip,
    frametitle=\mbox{},
    fontcolor=black
}

\newmdenv[%
style=example,
settings={\global\refstepcounter{example}},
frametitlefont={\bfseries Example~\theexample\quad},
]{example}

\newenvironment{exsolution}{\color{\ColourOfSolutions}}

\begin{document}
    \lipsum[1]

\begin{example}
    \lipsum[3]

    \begin{exsolution}
    \lipsum[4]
    \lipsum[5]
    \end{exsolution}

\end{example}   

\end{document}

在此处输入图片描述

相关内容