Como tornar o \mathbf robusto?

Como tornar o \mathbf robusto?

Criei um comando \statementinputque cria facilmente uma tabela com duas listas de elementos. A maioria dos elementos são fórmulas matemáticas e não quero colocar cada um deles \(\), então usei o arrayambiente interno \[\].

Quando usei \mathrmem um elemento, deu erros. Achei que o motivo era que \mathrmera frágil, então acrescentei \robustify{\mathrm}e tudo parecia bem.

Agora preciso usar \mathbf. Ainda \robustify{\mathbf}funciona, mas agora usar \(\mathbf{A}\)em local normal não funciona, dando erro Use of \reserved@a doesn't match its definition. \(\mathbf{A}. Como posso resolver esse problema? Desde já, obrigado!

Aqui está um 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}

Captura de tela do MWE

Responder1

Você está usando as ferramentas erradas.

\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}

insira a descrição da imagem aqui

informação relacionada