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

여기에 이미지 설명을 입력하세요

관련 정보