我想垂直放大数学公式周围的框。我正在寻找一种通用方法,以便我可以定义一个命令来放大框。
我想定义命令\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}
我希望上方\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}
的定义\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
。
答案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}
为了获得问题所要求的框架版本,\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}
}
然后框架方程变成: