这是‘xymatrix’、‘input’命令和.sty 文件之间的错误吗?

这是‘xymatrix’、‘input’命令和.sty 文件之间的错误吗?

我在编译以下文档时遇到问题。

macros.sty首先,我有一个包含以下内容的文件:

\newcommand{\test}{
\xymatrix@R=0mm{x}
}

然后,我有一个辅助文件out.aux,其中包括:

\test

最后,主要文件是:

\documentclass{article}
\usepackage[all]{xy}
\usepackage{macros}
\begin{document}
\input{out.aux}
\end{document}

错误信息是:

./out.aux:1: Undefined control sequence.
\xymatrix@R ->\Addop@@ 
                   \xymatrixrowsep@ \dimen@ii 

请注意,如果删除R=0mm,问题就不再存在。

这是一个错误吗?

这很奇怪,因为我记得已经\testinput文件中使用过类似的命令,没有任何问题。

它来自我的发行版吗?

谢谢 :)

答案1

问题是.sty文件是用隐式命令读取的\makeatletter,因此您的输入将被解释为命令\xymatrix@R,而不是\xymatrix后面的@。要么写

\makeatother
\newcommand{\test}{\xymatrix@R=0mm{x}}
\makeatletter

或者将 的定义移动到您使用而不是\test加载的文件中。\input\usepackage

相关内容