宏和数学模式

宏和数学模式

我正在尝试创建两个新的宏:

  • braces:编译花括号内的一些文本
  • squakets: 编译两个方括号之间的文本

我定义如下。

\documentclass{article}

\newcommand{\braces}[2]{$\left\{\begin{tabular}{@{}c@{}}
    #1\\
    #2\\
    \end{tabular}\right\}$}    


\newcommand{\squakets}[1]{$\Big[ #1 \Big]$}

\begin{document}

\squakets{\squakets{\braces{$\sqrt{}$}{$\alpha$} \braces{$x$}{$\beta$}} \braces{$y$}{$\gamma$}} $\rightarrow$ \braces{$\sqrt{}$}{$\alpha$} -- \braces{$x$}{$\beta$} -- \braces{$y$}{$\gamma$}

\end{document}

尽管控制台警告我,但它仍然可以编译:

缺少插入 $。

我很好奇如何解决这个问题。我猜这与我将多个命令相互嵌入有关squakets,但有人能帮我解决这个问题吗?

答案1

\documentclass{article}

\usepackage{mleftright}

\newcommand*\braces[2]{\mleft\{{\begingroup#1\endgroup\atop#2}\mright\}}
\newcommand*\squakets[1]{\Bigl[#1\Bigr]}

\begin{document}

\[
  \squakets{\squakets{\braces{\sqrt{}}{\alpha} \braces{x}{\beta}} \braces{y}{\gamma}}
  \to
  \braces{\sqrt{}}{\alpha} - \braces{x}{\beta} - \braces{y}{\gamma}
\]

\end{document}

答案2

感谢您的所有帮助!

这是我想出的解决方案:

\newcommand*{\braces}[2]{\ensuremath{\left\{\begin{tabular}{@{}c@{}}
        #1\\
        #2\\
        \end{tabular}\right\}}} 

正如上面的评论所建议的,\ensuremath{}使用 $...$ 来解决问题。

相关内容