命令作为宏的默认参数

命令作为宏的默认参数

我可以毫无问题地创建一个宏,它将命令作为其参数之一,例如:

\newcommand{formatnodefault}[2]{#1 #2}
% both of these work
\formatnodefault{\mathcal}{ABC}
\formatnodefault{\mathfrak}{ABC}

但是,当我尝试为命令提供默认值时,使用默认值时它仍然有效,但当我明确传入要使用的命令时则无效

\newcommand{formatdefault}[2][\mathcal]{#1 #2}
\formatdefault{ABC} % this works fine
\formatdefault{\mathfrak}{ABC} % this doesn't work

我在这里输入/覆盖默认值时做错了什么吗?如果这很重要,这是由 Jupyter 笔记本中的 MathJax 处理的。

答案1

这在 LaTeX 中有效,但我不确定 MathJax,因为除了类似的语法外,它不是 TeX 等。

\formatdefault[\mathfrak]{ABC}否则应该\formatdefault调用它\mathcal \mathfrak\mathfrak作为第二个参数,而它本来是第一个参数。

\documentclass{article}

\usepackage{mathtools}
\usepackage{amssymb}
\usepackage{amsfonts}

\newcommand{\formatdefault}[2][\mathcal]{#1{#2}}


\begin{document}


$\formatdefault{ABC}$ % this works fine
$\formatdefault[\mathfrak]{ABC}$

\end{document}

相关内容