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