我正在尝试创建两个新的宏:
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{}
使用 $...$ 来解决问题。