명령어 내에 \32s16o2
정의된 명령어를 사용하고 싶은데 "Tex 용량을 초과했습니다. 죄송합니다."라는 오류 메시지가 생성됩니다. 문제는 무엇입니까?\num\def\32s16o2{S$^{16}$O$_{2}$}
\caption{}
답변1
numdef
문서에서 package를 사용해야 하는 상황은 없습니다 . 나는 그것을 흥미로운 tex 매크로 정의의 기록으로 내 github에 넣었지만 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
있을 때 사용하세요.\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}}}