Ich habe einen Befehl erstellt \statementinput
, der aus zwei Listen von Elementen ganz einfach eine Tabelle erstellt. Die meisten Elemente sind mathematische Formeln, und ich möchte sie nicht alle in einfügen \(\)
, also habe ich die array
Umgebung darin verwendet \[\]
.
Als ich \mathrm
ein Element verwendete, traten Fehler auf. Ich dachte, der Grund sei, dass \mathrm
es zerbrechlich ist, also fügte ich es hinzu \robustify{\mathrm}
und alles schien in Ordnung zu sein.
Jetzt muss ich verwenden \mathbf
. \robustify{\mathbf}
Funktioniert immer noch, aber jetzt \(\mathbf{A}\)
funktioniert die Verwendung an einem normalen Ort nicht und gibt einen Fehler aus Use of \reserved@a doesn't match its definition. \(\mathbf{A}
. Wie kann ich dieses Problem lösen? Vielen Dank im Voraus!
Hier ist ein 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}
Antwort1
Sie verwenden die falschen Werkzeuge.
\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}