更新2012-03-09:随着今天更新的版本mdframed
,这个问题已经在包中得到修复,不再需要下面提供的解决方法。
在mdframed 中多余的垂直空间以显示数学环境结尾,我已将内容包装mdframed
在 中minipage
,并打算将其作为单独的问题提交,因为我认为minipage
包装器不是必需的。如果没有此包装器,如果内容包含仅有的显示数学,宽度不是完整的\linewidth
。
以下是输出的片段,显示了红色显示数学时输出不一致的情况。请注意,如果框架有标题,则输出正常,但如果没有框架,宽度就不一致:
问题:
- 是否有
mdframed
设置可以调整这一点?如果没有,除了使用 之外,还有其他更好的方法可以获得所需的行为minipage
吗? - 这是一个错误
mdframed
,还是一个功能?
笔记:
- 下面的代码改编自mdframed:在框架标题下方放置一行并为其添加阴影背景。
- 取消注释
\begin{minipage}
和\end{minipage}
会产生我认为正确的结果(与前两种情况一致)。
代码:
\documentclass{article}
\usepackage{showframe}
\usepackage{amsmath}
\usepackage[framemethod=TikZ]{mdframed}
\newenvironment{Frame}[1][]{%
\begin{mdframed}[%
frametitle={#1},
skipabove=\baselineskip plus 2pt minus 1pt,
skipbelow=\baselineskip plus 2pt minus 1pt,
linewidth=0.5pt,
frametitlerule=true,
frametitlebackgroundcolor=gray!30
]%
%\begin{minipage}{\linewidth}% this should not be necessary??
}{%
%\end{minipage}%
\end{mdframed}
}
\begin{document}\noindent
Text
\begin{Frame}[with Title]
Text
\end{Frame}
Text
\begin{Frame}% no Title
Text
\end{Frame}
Text
\begin{Frame}[Einstein]
\begin{align*}
e & = mc^2
\end{align*}
\end{Frame}
Text
\begin{Frame}\color{red}% no Title
\begin{align*}
e & = mc^2
\end{align*}
\end{Frame}
Text
\begin{Frame}\color{red}% no Title
\begin{align*}
e &= mc^2\\
F &= ma
\end{align*}
\end{Frame}
Text
\begin{Frame}\color{red}% no Title
\[
e = mc^2
\]
\end{Frame}
\end{document}
答案1
我不会使用 ,minipage
因为它不会破坏框架,这大概是框架的主要点mdframed
,在tikz
和德语之间,我不确定它是错误还是(像minipage
)它是一个功能。如果内容只是垂直材料,标准 LaTeXminipage
也会类似地忽略其请求的长度,只使用其内容的自然长度。(据记录,如果您放入制表符,这会起作用,minipage
但通常确实如此。所以我只需通过放入规则来强制宽度:
\newenvironment{Frame}[1][]{%
\begin{mdframed}[%
frametitle={#1},
skipabove=\baselineskip plus 2pt minus 1pt,
skipbelow=\baselineskip plus 2pt minus 1pt,
linewidth=0.5pt,
frametitlerule=true,
frametitlebackgroundcolor=gray!30
]%
\hrule height0pt width\hsize\relax%<<<<<<<<<<<<<<FORCE WIDTH
%\begin{minipage}{\linewidth}% this should not be necessary??
}{%
%\end{minipage}%
\end{mdframed}
}