¿Por qué no utilizar un comando numdef dentro de un título?

¿Por qué no utilizar un comando numdef dentro de un título?

Me gustaría utilizar el comando \32s16o2definido \num\def\32s16o2{S$^{16}$O$_{2}$}dentro del \caption{}comando, pero se genera un mensaje de error: "Se excedió la capacidad de Tex, lo siento". ¿Cuál es el problema?

Respuesta1

No hay circunstancias en las que debas usar numdefpaquete en un documento. Lo puse en mi github como un registro de definiciones de macros de tex posiblemente interesantes, pero no está en ctan y no debería usarse.

Si lo usa, solo permite números en elfindel nombre, no en ningún momento.

La definición que tienes es esencialmente la misma que una definición primitiva.

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

sin usar numdefen absoluto, y funciona (definiendo \3) siempre que esta sea la única cadena que sigue a \3. Si intenta definir dos de estas cadenas, sólo una funcionará:

\documentclass{article}

\usepackage{numdef}

\begin{document}

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

\32s16o2

\end{document}

no hace nada útil y produce el error

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

Respuesta2

Entiendo que te resulte \s16o2más fácil escribir que

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

o con mhchem, \ce{S^{16}O2}.

Sin embargo, \num\defesmuyfrágil.

Si insistes con esta idea, úsala \protectcuando en uno \captionu otro argumento conmovedor.

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

ingrese la descripción de la imagen aquí

obtienes lo mismo con

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

Sin mhchem, puedes hacerlo en su lugar

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

información relacionada