如何垂直放大盒子?

如何垂直放大盒子?

我想垂直放大数学公式周围的框。我正在寻找一种通用方法,以便我可以定义一个命令来放大框。

我想定义命令\boxedB{}\boxedBB{}在框中添加空间。

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[
\boxed{ \
\left |\int_0^1 f(x)g(x)dx\right | \leq \sqrt{\int_0^1|f(x)|^2 dx}\cdot\sqrt{\int_0^1|g(x)|^2 dx}
\ }
\]
\end{document}

enter image description here

我希望上方\sqrt{}和下方有更多的空间。


PS:如果该命令还添加水平空间,则没有问题。

答案1

您可以使用 来控制内部分离\fboxsep。不幸的是,这适用于垂直水平距离,但显然您还希望增加左右距离。

\documentclass{article}
\usepackage{amsmath}

\newcommand\boxedB[1]{{\setlength\fboxsep{10pt}\boxed{#1}}}

\begin{document}
\[
\boxedB{
  \left |\int_0^1 f(x)g(x)dx\right | \leq \sqrt{\int_0^1|f(x)|^2 dx}\cdot\sqrt{\int_0^1|g(x)|^2 dx}
}
\]
\end{document}

enter image description here


的定义\boxed并不是非常复杂,所以我们也可以简单地扩展它以采用所需的距离作为可选参数。

\documentclass{article}
\usepackage{amsmath}

\makeatletter
\renewcommand\boxed[2][\fboxsep]{% by default take current \fboxsep
  {%
    \setlength\fboxsep{#1}%
    \fbox{\m@th$\displaystyle#2$}% <-- original \boxed
  }%
}
\makeatother

\begin{document}
\[
\boxed[10pt]{
  \left |\int_0^1 f(x)g(x)dx\right | \leq \sqrt{\int_0^1|f(x)|^2 dx}\cdot\sqrt{\int_0^1|g(x)|^2 dx}
}
\]
\end{document}

答案2

您可以分别设置侧面和顶部/底部的填充:

\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\xboxed}{O{}m}
 {
  \group_begin:
  \keys_set:nn { colas/xboxed } { #1 }
  \dim_set_eq:NN \fboxsep \l_colas_xboxed_tb_dim
  \boxed
   {
    \dim_compare:nF { \l_colas_xboxed_lr_dim = 0pt }
     {
      \hspace{-\fboxsep}\hspace{\l_colas_xboxed_lr_dim}
     }
    #2
    \dim_compare:nF { \l_colas_xboxed_lr_dim = 0pt }
     {
      \hspace{-\fboxsep}\hspace{\l_colas_xboxed_lr_dim}
     }
   }
  \group_end:
 }
\NewDocumentCommand{\xboxedset}{m}
 {
  \keys_set:nn { colas/xboxed } { #1 }
 }
\keys_define:nn { colas/xboxed }
 {
  lr .dim_set:N = \l_colas_xboxed_lr_dim,
  tb .dim_set:N = \l_colas_xboxed_tb_dim,
 }
\ExplSyntaxOff

\begin{document}

\[
\xboxed[tb=9pt]{
  \left |\int_0^1 f(x)g(x)\,dx\right | \leq
  \sqrt{\int_0^1|f(x)|^2\,dx}\cdot\sqrt{\int_0^1|g(x)|^2\,dx}
}
\]
\[
\xboxed[lr=3pt,tb=9pt]{
  \left |\int_0^1 f(x)g(x)\,dx\right | \leq
  \sqrt{\int_0^1|f(x)|^2\,dx}\cdot\sqrt{\int_0^1|g(x)|^2\,dx}
}
\]
\xboxedset{tb=9pt}
\[
\xboxed{
  \left |\int_0^1 f(x)g(x)\,dx\right | \leq
  \sqrt{\int_0^1|f(x)|^2\,dx}\cdot\sqrt{\int_0^1|g(x)|^2\,dx}
}
\]
\[
\xboxed[lr=3pt]{
  \left |\int_0^1 f(x)g(x)\,dx\right | \leq
  \sqrt{\int_0^1|f(x)|^2\,dx}\cdot\sqrt{\int_0^1|g(x)|^2\,dx}
}
\]
\end{document}

如果lr没有给出值,则使用与顶部/底部相同的填充。

该设置对于特定的\xboxed(当然还有嵌套的,除非被撤销)是本地的,或者可以使用 为当前组(或甚至在序言中按文档)进行设置\xboxedset

enter image description here

答案3

\mybox通过将内容存储在框中,然后在其前面添加具有额外高度和深度的条,可以获得无框架版本。在此示例中\mybox,定义为,\ensuremath{\displaystyle #2}因为它应该用于显示的数学。可以将相同的方法与一起使用以\boxed不添加水平空间,或在没有数学声明的其他框中使用。

\documentclass{article}
\usepackage{amsmath}
\usepackage{calc}
\newdimen\myextraHT
\myextraHT=5mm
\newsavebox\mybox%
\newcommand\HTbox[2][\myextraHT]{%
  \savebox\mybox{\ensuremath{\displaystyle #2}}%
  \raisebox{-\dp\mybox-#1}{\rule{0pt}{\ht\mybox+\dp\mybox+#1+#1}}%
  \usebox\mybox
}
\begin{document}
A row of text to show where the box horisontal start and end
\begin{displaymath}
  \left |\int_0^1 f(x)g(x)dx\right | \leq \sqrt{\int_0^1|f(x)|^2 dx}\cdot\sqrt{\int_0^1|g(x)|^2 dx} 
\end{displaymath}
A row of text to show where the box horisontal start and end
\begin{displaymath}
  \HTbox{\left |\int_0^1 f(x)g(x)dx\right | \leq \sqrt{\int_0^1|f(x)|^2 dx}\cdot\sqrt{\int_0^1|g(x)|^2 dx}}
\end{displaymath}
A row of text to show where the box horisontal start and end
\begin{displaymath}
  \HTbox[20mm]{\left |\int_0^1 f(x)g(x)dx\right | \leq \sqrt{\int_0^1|f(x)|^2 dx}\cdot\sqrt{\int_0^1|g(x)|^2 dx}}
\end{displaymath}
A row of text to show where the box horisontal start and end
\end{document}

enter image description here

为了获得问题所要求的框架版本,\fbox可以将一个添加到命令中:

\newcommand\HTbox[2][\myextraHT]{%
  \savebox\mybox{\ensuremath{\displaystyle #2}}%
  \fbox{\raisebox{-\dp\mybox-#1}{\rule{0pt}{\ht\mybox+\dp\mybox+#1+#1}}%
    \usebox\mybox}
}

然后框架方程变成:

enter image description here

相关内容