Warum verwenden Sie innerhalb einer Überschrift keinen Numdef-Befehl?

Warum verwenden Sie innerhalb einer Überschrift keinen Numdef-Befehl?

Ich möchte den im Befehl \32s16o2definierten Befehl verwenden , aber es wird eine Fehlermeldung angezeigt: „Tex-Kapazität überschritten, tut mir leid“. Was ist das Problem?\num\def\32s16o2{S$^{16}$O$_{2}$}\caption{}

Antwort1

Es gibt keine Umstände, unter denen Sie numdefin einem Dokument ein Paket verwenden sollten. Ich habe es in meinem GitHub als Aufzeichnung möglicherweise interessanter Tex-Makrodefinitionen abgelegt, aber es befindet sich nicht auf Ctan und sollte nicht verwendet werden.

Wenn Sie es verwenden, erlaubt es nur Zahlen an derEndedes Namens, an keiner Stelle.

Die Definition, die Sie haben, ist im Wesentlichen die gleiche wie eine primitive Definition

 \def\32s16o2{S$^{16}$O$_{2}$} 

ohne numdefüberhaupt zu verwenden, und funktioniert (Definition \3), solange dies die einzige Zeichenfolge ist, die jemals folgt \3. Wenn Sie versuchen, zwei solcher Zeichenfolgen zu definieren, funktioniert nur eine:

\documentclass{article}

\usepackage{numdef}

\begin{document}

\num\def\32s16o2{S$^{16}$O$_{2}$} 
\num\def\32g12h5{G$^{12}$H$_{5}$} 

\32s16o2

\end{document}

tut nichts Nützliches und erzeugt den Fehler

! Use of \\3{2} doesn't match its definition.

Antwort2

Ich verstehe, dass Sie \s16o2das Tippen einfacher finden als

$\mathrm{S}^{16}\mathrm{O}_{2}$

oder mit mhchem, \ce{S^{16}O2}.

Allerdings \num\defistsehrzerbrechlich.

Wenn Sie auf dieser Idee bestehen, verwenden Sie \protect„when in a“ \captionoder ein anderes bewegendes Argument.

\documentclass{article}
\usepackage{numdef}

\num\def\s16o2{\ensuremath{\mathrm{S}^{16}\mathrm{O}_{2}}}

\begin{document}

\s16o2 is nice

\begin{figure}

\caption{\protect\s16o2 is nice}

\end{figure}

\end{document}

Bildbeschreibung hier eingeben

Das Gleiche bekommen Sie mit

\documentclass{article}
\usepackage{etoolbox}
\usepackage[version=4]{mhchem}

\newcommand{\definecompound}[2]{\csdef{cmp@#1}{#2}}
\newrobustcmd{\cmp}[1]{\csuse{cmp@#1}}


\definecompound{32s16o2}{\ce{S^{16}O2}}

\begin{document}

\cmp{32s16o2} is nice

\begin{figure}

\caption{\cmp{32s16o2} is nice}

\end{figure}

\end{document}

Ohne mhchemkönnen Sie stattdessen Folgendes tun:

\definecompound{32s16o2}{\ensuremath{\mathrm{S}^{16}\mathrm{O}_{2}}}

verwandte Informationen