我可以毫无问题地创建一个宏,它将命令作为其参数之一,例如:
\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}