為什麼不在標題中使用 numdef 指令?

為什麼不在標題中使用 numdef 指令?

我想使用命令中\32s16o2定義的命令,但會產生錯誤訊息:「Tex 容量超出,抱歉」。問題是什麼?\num\def\32s16o2{S$^{16}$O$_{2}$}\caption{}

答案1

在任何情況下都不應numdef在文件中使用套件。我把它放在我的 github 中作為可能有趣的 tex 巨集定義的記錄,但它不在 ctan 上,不應該使用。

如果你確實使用它,它只允許數字結尾的名字,而不是在任何時候。

您擁有的定義本質上與原始定義相同

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

numdef根本不需要使用,\3只要這是跟隨的唯一字串就可以工作(定義)\3。如果您嘗試定義兩個這樣的字串,那麼只有一個有效:

\documentclass{article}

\usepackage{numdef}

\begin{document}

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

\32s16o2

\end{document}

沒有做任何有用的事情並產生錯誤

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

答案2

我知道您發現\s16o2打字比

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

或者,與mhchem, \ce{S^{16}O2}

然而,\num\def非常脆弱的。

如果你堅持這個想法,請在一個或其他動人的論點\protect中使用when 。\caption

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

在此輸入影像描述

你得到同樣的結果

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

沒有的話mhchem,你可以這樣做

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

相關內容