\mathbf を堅牢にするにはどうすればよいでしょうか?

\mathbf を堅牢にするにはどうすればよいでしょうか?

与えられた 2 つの要素のリストを使って簡単に表を作成するコマンドを作成しました\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}

MWEのスクリーンショット

答え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}

ここに画像の説明を入力してください

関連情報