如何使 \mathbf 穩健?

如何使 \mathbf 穩健?

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

在此輸入影像描述

相關內容