调用宏失败并出现错误 \inaccessible

调用宏失败并出现错误 \inaccessible

我正在尝试定义一个宏,并将其包含在类定义中。暂时我将宏定义放在普通文档中。编译以下文档失败。

\documentclass[10pt,a4paper]{article}

\makeatletter
\def\ntcstitle#1{\def{\@ntcstitle}{#1}}
\newcommand{\thentcstitle}{\@ntcstitle}
\makeatother

\ntcstitle{Lorem Ipsum}

\begin{document}
\thentcstitle\par
\end{document}

这个例子是我从这里的另一个问题中复制来的,它似乎有效:

在类中定义变量

我还尝试将此定义移到类文件中,省略\makeatletter\makeatother命令。使用类文件成功,错误消息相同。

这是错误信息:

! Missing control sequence inserted.
 <inserted text> 
                \inaccessible 
 l.10 \ntcstitle{Lorem Ipsum}

然后我用 LaTeX 样式定义替换了宏:

\documentclass[10pt,a4paper]{article}
\usepackage{lipsum}

\makeatletter
\newcommand{\ntcstitle}[1]{\newcommand{\@ntcstitle}{#1}}
\newcommand{\thentcstitle}{\@ntcstitle}
\makeatother

\ntcstitle{Lorem Ipsum}

\begin{document}
\thentcstitle\par
\end{document}

并且一切正如预期的那样。

我尝试使用\def而不是\newcommand因为我认为\def这是在类文件中定义宏的正确方法。我在这里做错了什么?

答案1

你不应该\def在乳胶中使用,但如果你这样做,语法是

   \def\@ntcstitle{#1}}

不是

   \def{\@ntcstitle}{#1}}

(当然#1和尾随}仅在您定义的上下文中有效\ntcstitle

相关内容