我創建了一個命令\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}