我正在尝试使用 xy-matrix 环境在 xy-pic 中制作一个图表,其中我需要有一个像集合一样的乘积节点,但是当我尝试在 xymatrix 环境中使用乘积命令时似乎总是出现编译错误:
\documentclass{memoir}
\usepackage{kpfonts}
\usepackage[all]{xy}
\CompileMatrices
\usepackage{amssymb,amsmath,amsfonts}
\begin{document}
\begin{equation}
\xymatrix{
\prod_{i:I} A_i \ar@<-.5ex>[r]_c \ar@<.5ex>[r]^d & \prod_{j:J} A_j
}
\end{equation}
\end{document}
但是当我尝试编译它时出现错误:
! Undefined control sequence.
<argument> ...COORD@ =\xymatrixCOORD@ \prodop \kp
@slimits _{i:I} A_i \ar @<...
l.19 \xy@{\save }{\save@ }
%
由于我还没有找到任何遇到类似问题的人,因此对于如何使此功能正常工作,我将不胜感激。
编辑:在弄乱了代码之后,似乎错误是由于\CompileMatrices
序言中的命令引起的。
答案1
来自Xy-pic的文档:
1.7 加快排版速度
你会注意到的一件事是,Xy-pic 在排版图表时有时会很慢(这是可以预料到的,因为绘制操作的数量反映在每个图表的最后一个
xymatrix
消息中的最后一个数字反映了这一点)。如果您遵循以下规则所有条目以(不可扩展)字符开头或{
然后你可以插入声明\CompileMatrices
在文档的序言中:这将创建包含以下内容的临时文件已编译每个矩阵的多个版本都可以非常快速地加载;当矩阵发生变化时,它们会自动重新创建。
我添加了粗体以强调。
\documentclass{memoir}
\usepackage{kpfonts}
\usepackage[all]{xy}
\CompileMatrices
\usepackage{amsmath}
\begin{document}
\begin{equation}
\xymatrix{
\relax\prod_{i:I} A_i \ar@<-.5ex>[r]_c \ar@<.5ex>[r]^d & \relax\prod_{j:J} A_j
}
\end{equation}
\end{document}
另一方面,由于机器速度足够快,现在编译矩阵已经没有必要了。
选择:
\documentclass{memoir}
\usepackage{kpfonts}
\usepackage[all]{xy}
\CompileMatrices
\usepackage{amsmath}
\begin{document}
\begin{equation}
\xymatrix{
{\prod_{i:I} A_i} \ar@<-.5ex>[r]_c \ar@<.5ex>[r]^d & {\prod_{j:J} A_j}
}
\end{equation}
\end{document}
顺便说一句,加载amssymb
和amsfonts
伴随kpfonts
是不必要的,因为包无论如何都会覆盖它们。