我想定义一个由框封装的环境,我可以在框中插入未指定的内容(文本、方程式等),但可以增加框的自然高度。下面是我想做的一个最小工作示例。
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{boxedminipage}
\begin{document}
Some text...\\
\begin{boxedminipage}[c]{\textwidth}
\vspace{2mm}
Some more text...
{\begin{center}
$\frac{a}{b}$
\end{center}}
\vspace{3mm}
\end{boxedminipage}
\end{document}
这也可以通过类似这样的方法实现
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\begin{document}
Some text...\\
\noindent\fbox{\begin{minipage}[c][2\height][c]{\textwidth}
\centering
$\frac{a}{b}$
\end{minipage}
\end{document}
其中 minipage 的高度设置为2\height
。但我想在内容上方和下方指定一定的额外高度,从而增加框的自然高度。
我该如何实现这一点?我该如何定义一个命令,以便我可以通过编写类似这样的代码来执行它
\begin{myboxenvironment}
Whatever input...
\end{myboxenvironment}
答案1
请注意,\height
这里只返回从基线到框顶部的距离,而\depth
返回从基线到框底部的距离。您可能想尝试\totalheight
而不是返回和\height
的总和。\height
\depth
至于宽度,您可能更愿意使用,\linewidth
因为它会返回当前框的宽度。这样,您也可以在其他框内使用自定义环境。
最后,使用\NewDocumentCommand
它可以更简单地将minipage
as 参数放置在\fbox
宏中而无需使用保存框:
\documentclass{article}
\NewDocumentEnvironment{myboxenvironment}{ +b }{%
\fbox{%
\begin{minipage}[c][\dimexpr\totalheight+4mm\relax][c]%
{\dimexpr\linewidth-2\fboxsep-2\fboxrule\relax}%
\begin{center}#1\end{center}%
\end{minipage}%
}%
}{}
\begin{document}
\noindent
\begin{myboxenvironment}
$2$
\end{myboxenvironment}
\bigskip
\noindent
\begin{myboxenvironment}
$\frac{1}{2}$
\end{myboxenvironment}
\bigskip
\noindent
\begin{myboxenvironment}
\begin{myboxenvironment}
$\frac{1}{2}$
\end{myboxenvironment}
\end{myboxenvironment}
\end{document}