我正在创建带有示例和解决方案的教学笔记。在课程开始时,我向学生提供带有示例但空白解决方案的讲义,以便他们在上课时可以像我在课堂上做示例一样填写方框。课后,我会上传带有解决方案的示例。
我计划用这个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}