我在编译以下文档时遇到问题。
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
,问题就不再存在。
这是一个错误吗?
这很奇怪,因为我记得已经\test
在input
文件中使用过类似的命令,没有任何问题。
它来自我的发行版吗?
谢谢 :)
答案1
问题是.sty
文件是用隐式命令读取的\makeatletter
,因此您的输入将被解释为命令\xymatrix@R
,而不是\xymatrix
后面的@
。要么写
\makeatother
\newcommand{\test}{\xymatrix@R=0mm{x}}
\makeatletter
或者将 的定义移动到您使用而不是\test
加载的文件中。\input
\usepackage