我在 mdframed 环境中使用 \vspace{\stretch{1}} 时遇到了问题。我试图在框架内的定理后添加一些垂直空间,但 \vspace{\stretch{1}} 命令似乎没有按预期运行。
我知道我可以使用 \vspace{x cm} 但我不想使用它。我想均匀划分页面。
我有
以下是我所拥有的一个简单的例子:
\documentclass{article}
\usepackage{amsthm}
\usepackage{mdframed}
\usepackage{xcolor}
\theoremstyle{plain}
\newtheorem{theorem}{Theorem}
\begin{document}
\begin{mdframed}[
linecolor=blue,
linewidth=2pt,
backgroundcolor=orange!20,
]
\begin{theorem}
Some subtheorem.
\end{theorem}
\vspace{\stretch{1}}
\end{mdframed}
\end{document}
答案1
x\par\vfill x
这与 minipage 或 \parbox 中的问题相同。无法使用:
\fbox{\begin{minipage}{3cm} x\par\vfill x \end{minipage}}
因为,好吧,你想填满盒子,...但填到多远呢?盒子没有预定义的高度。
它在主文本中起作用,因为页面具有强制高度。只有将其拉伸到某个高度时,它才会拉伸。在迷你页面中,您可以通过固定框的高度来做到这一点:
\fbox{\begin{minipage}[c][3cm][c]{3cm} x\par\vfill x \end{minipage}}
请注意,如果您使用tcolorbox
允许固定高度选项的而不是 mdframed,即使这样也不起作用:
\begin{tcolorbox}[height=3cm] x\par \vfill x \end{tcolorbox}
(这不是一个错误,这是一个功能!)
我想均匀划分页面
如果您想要相等的框,那么您可以使用 tcolorbox 的栅格库,因此每个框的高度由高度较大的框固定:
\documentclass[twocolumn]{article}
\usepackage[raster]{tcolorbox}
\begin{document}
\begin{tcbraster}[raster columns=1, size=small, title={\sffamily\bfseries Free height box No. \thetcbrasternum}]
\begin{tcolorbox}First box\end{tcolorbox}
\begin{tcolorbox}Second box\end{tcolorbox}
\begin{tcolorbox}This is a box\\with a second line \\ with a third line \\ with a fourth line \end{tcolorbox}
\begin{tcolorbox}Another box\end{tcolorbox}
\begin{tcolorbox}A box\par \vspace{.3 cm} again\end{tcolorbox}
\end{tcbraster}
\newpage
\begin{tcbraster}[raster columns=1, size=small, raster equal height,
size=small,colframe=red!50!black,colback=red!10!white,colbacktitle=red!50!white,coltitle=black,
title={\sffamily\bfseries Evenlized box No. \thetcbrasternum}]
\begin{tcolorbox}First box\end{tcolorbox}
\begin{tcolorbox}Second box\end{tcolorbox}
\begin{tcolorbox}This is a box\\with a second line \\ with a third line \\ with a fourth line \end{tcolorbox}
\begin{tcolorbox}Another box\end{tcolorbox}
\begin{tcolorbox}A box\par \vspace{.3 cm} again\end{tcolorbox}
\end{tcbraster}
\end{document}