增加 minipage / fbox 的自然高度

增加 minipage / fbox 的自然高度

我想定义一个由框封装的环境,我可以在框中插入未指定的内容(文本、方程式等),但可以增加框的自然高度。下面是我想做的一个最小工作示例。

\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它可以更简单地将minipageas 参数放置在\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}

在此处输入图片描述

相关内容