我正在尝试定义命令\s1
,\s2
等等。现在替换非常简单,但想法是将其替换为以后有意义的东西。
这就是我现在所拥有的
\newcommand{\s1}{s1}
我收到以下错误:
! LaTeX Error: Missing \begin{document}.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.52 \newcommand{\s1}{s1}
如果我用 newcommand 定义注释该行,它就可以正常工作。(并且我在同一位置定义了其他 newcommand,并且我确实有一个\begin{document}
)
知道我做错了什么吗?
答案1
只有字母(@
在某些情况下)可以成为 定义的命令名称的一部分\newcommand
。您必须使用低级宏\@namedef
:
\makeatletter % to make \@namedef accessible
\@namedef{s1}{s1}
\makeatoter % to revert \makeatletter
但是,您无法使用这样的命令\s1
,而必须始终写\csname s1\endcsname
。我认为这对您没有任何用处,只需坚持使用字母即可。
备注:我在答案中做了一些简化。我知道我做了。但这是基本思想。