我创建了一个命令\statementinput
,它可以根据给定的两个元素列表轻松创建表格。大多数元素都是数学公式,我不想将它们每个都放在里面\(\)
,所以我使用了array
里面的环境\[\]
。
当我\mathrm
在一个元素中使用时,它给出了错误。我认为原因是它\mathrm
很脆弱,所以我添加了它\robustify{\mathrm}
,一切似乎都很好。
现在我需要使用\mathbf
。 仍然\robustify{\mathbf}
有效,但现在\(\mathbf{A}\)
在正常的地方使用不起作用,给出错误Use of \reserved@a doesn't match its definition. \(\mathbf{A}
。 我该如何解决这个问题? 提前致谢!
以下是 MWE:
\documentclass{article}
\usepackage{tikz, etoolbox}
\usepackage{amsmath, amssymb}
\usepackage{array}
\makeatletter
\NewDocumentCommand{\statementapp}{m m m m}{%
\def\rowAname{#1}%
\def\rowBname{#2}%
\def\listA{#3}%
\def\listB{#4}%
\newcount\listlen
%
\let\arraycontent\empty
\xappto\arraycontent{\text{\rowAname}}
\foreach \Ae in \listA {%
\xappto\arraycontent{& \Ae}%
}%
\gappto\arraycontent{\\ \hline}
\xappto\arraycontent{\text{\rowBname}}
\foreach \Be [count=\n] in \listB {%
\xappto\arraycontent{& \Be}%
\global\let\listlen\n
}%
\[%
\begin{array}{|r<{\hspace{0.3pc}}|*{\listlen}{>{\hspace{0.3pc}}l|}}
\hline
\arraycontent \\
\hline
\end{array}\]%
}
\makeatother
\NewDocumentCommand{\statementinput}{m m}{%
\statementapp{Parameters}{Playing the role of}
{#1}{#2}%
}
\newcommand{\oo}{{\mathrm{o}}}
\robustify{\mathrm}
\robustify{\mathbf}
\begin{document}
\statementinput{\mathrm{Ab}Cd, 2}{B^\oo,4}
\statementinput{\mathbf{Ab}Cd, 2}{B^\oo,4}
%\(\mathbf{A}\) % does not work
\end{document}
答案1
您使用了错误的工具。
\documentclass{article}
\usepackage{array}
\ExplSyntaxOn
\NewDocumentCommand{\statementapp}{mmmm}
{
\greatseo_statementapp:nnnn { #1 } { #2 } { #3 } { #4 }
}
\cs_new_protected:Nn \greatseo_statementapp:nnnn
{
\begin{tabular}
{
|r<{\hspace{0.3pc}}|*{\clist_count:n { #3 }}{>{\hspace{0.3pc}$}l<{$}|}
}
\hline
#1 & \clist_use:nn { #3 } { & } \\
\hline
#2 & \clist_use:nn { #4 } { & } \\
\hline
\end{tabular}
}
\ExplSyntaxOff
\NewDocumentCommand{\statementinput}{m m}{%
\statementapp{Parameters}{Playing the role of}
{#1}{#2}%
}
\newcommand{\oo}{{\mathrm{o}}}
\begin{document}
\statementinput{\mathrm{Ab}Cd, 2}{B^\oo,4}
\medskip
\statementinput{\mathbf{Ab}Cd, 2}{B^\oo,4}
\medskip
\statementinput{\mathbf{Ab}Cd, 2, 3, 4}{B^\oo,4,5,6}
\end{document}