有吸引力的方框方程

有吸引力的方框方程

我经常使用\boxed{...}AMS 数学包中的函数将重要的方程式放在一个方框内。然而,这种方法通常会产生一些看起来有些尴尬的输出。考虑一下

\documentclass{article}
\pagestyle{empty}
\usepackage{amsmath}
\begin{document}
 \[
 \boxed{c_i = \sum_jA_{ij}}
 \]
 \[
 \boxed{c_i = \langle\psi|\phi\rangle}
 \]
\end{document}

在此处输入图片描述

观察发现,在第一种情况下,盒子看起来不平衡,而在第二种情况下,可以在顶部和底部增加更多填充。最好的解决方法是什么?我知道我可以使用,\phantom但我想知道是否存在更优雅的解决方案。

答案1

您可以使用empheq包,然后定义您自己的装箱命令。它可以是标准的 Latex\fbox或 Tikz 框,也可以是任何其他类型的框。请看下面的示例。我定义了一个颜色框(为了使其更有趣),其中包含两个可选参数,用于填充等式上方和下方的空间

\mybluebox[<top pad>][<bot pad>]{<contents>}

keyval包已经加载,因此您可以制作一个漂亮的 keyval 界面,但我将其留给读者作为练习 ;-)

\documentclass{article}

\usepackage{color}
\definecolor{myblue}{rgb}{.8, .8, 1}

\usepackage{amsmath}
\usepackage{empheq}

\newlength\mytemplen
\newsavebox\mytempbox

\makeatletter
\newcommand\mybluebox{%
    \@ifnextchar[%]
       {\@mybluebox}%
       {\@mybluebox[0pt]}}

\def\@mybluebox[#1]{%
    \@ifnextchar[%]
       {\@@mybluebox[#1]}%
       {\@@mybluebox[#1][0pt]}}

\def\@@mybluebox[#1][#2]#3{
    \sbox\mytempbox{#3}%
    \mytemplen\ht\mytempbox
    \advance\mytemplen #1\relax
    \ht\mytempbox\mytemplen
    \mytemplen\dp\mytempbox
    \advance\mytemplen #2\relax
    \dp\mytempbox\mytemplen
    \colorbox{myblue}{\hspace{1em}\usebox{\mytempbox}\hspace{1em}}}

\makeatother

\begin{document}
\begin{empheq}[box={\mybluebox[5pt]}]{equation*}
    c_i = \sum_j A_{ij}
\end{empheq}

\begin{empheq}[box={\mybluebox[2pt][2pt]}]{equation*}
    c_i = \langle\psi|\phi\rangle
\end{empheq}
\end{document}

在此处输入图片描述

答案2

tcolorbox还为盒装数学表达式提供了几个选项。

tcbhighmath是一个可以与empheq包装一起使用的特殊盒子,但也很容易声明要与一起使用的新盒子empheq

一些带有代码的示例:

在此处输入图片描述

\documentclass{article}

\usepackage{amsmath}
\usepackage{empheq}
\usepackage[most]{tcolorbox}

\newtcbox{\mymath}[1][]{%
    nobeforeafter, math upper, tcbox raise base,
    enhanced, colframe=blue!30!black,
    colback=blue!30, boxrule=1pt,
    #1}

\begin{document}
\begin{empheq}[box=\tcbhighmath]{equation*}
    c_i = \langle\psi|\phi\rangle
\end{empheq}

\tcbset{highlight math style={boxsep=5mm,colback=blue!30!red!30!white}}

\begin{empheq}[box=\tcbhighmath]{equation*}
    c_i = \langle\psi|\phi\rangle
\end{empheq}

\begin{empheq}[box=\mymath]{equation*}
    c_i = \langle\psi|\phi\rangle
\end{empheq}

\begin{empheq}[box={\mymath[colback=red!30,drop lifted shadow, sharp corners]}]{equation*}
    c_i = \langle\psi|\phi\rangle
\end{empheq}

\end{document}

答案3

也许这些命令会有所帮助:

\newcommand{\boxedeq}[2]{\begin{empheq}[box={\fboxsep=6pt\fbox}]{align}\label{#1}#2\end{empheq}}
\newcommand{\coloredeq}[2]{\begin{empheq}[box=\colorbox{lightgreen}]{align}\label{#1}#2\end{empheq}}

别忘了放

\usepackage{empheq} 
\usepackage{xcolor}
\definecolor{lightgreen}{HTML}{90EE90}

在序言中。

完整示例:

\documentclass{article}
\pagestyle{empty}
\usepackage{amsmath}

\usepackage{empheq}
\usepackage{xcolor}
\definecolor{lightgreen}{HTML}{90EE90}
\newcommand{\boxedeq}[2]{\begin{empheq}[box={\fboxsep=6pt\fbox}]{align}\label{#1}#2\end{empheq}}
\newcommand{\coloredeq}[2]{\begin{empheq}[box=\colorbox{lightgreen}]{align}\label{#1}#2\end{empheq}}

\begin{document}
 \boxedeq{eq:first}{c_i = \sum_jA_{ij}}
 \coloredeq{eq:second}{c_i = \langle\psi|\phi\rangle}
\end{document}

结果

答案4

为了将来参考,我发现了这个推介会有几个选项。我选择了 bclogo 包。它的文档是用法语写的,但它看起来功能更丰富,有图标、框架、背景颜色、标题等。

相关内容