我目前正在尝试通过 xypic 编写一个简单的交换图,它可以在我的一个文件上运行,但我无法让它在新文件上运行:
\documentclass{article}
\usepackage[french]{babel}
\usepackage{xypic}
\begin{document}
$$\xymatrix@!0 @R=2pc @C=3pc { \mathcal{E}_1 \ar[rr]&& \mathcal{E}_2}$$
\end{document}
LaTeX 告诉我\mathcal
数学模式之外不接受,但我无法$
在 xypic 括号内添加,而且似乎没有mathcal
数学模式之外的等效项。它似乎因为 babel 包而触发错误,因为当我删除它时它工作得很好。即使将 xy 包放在前面或后面,我还是会收到错误。有什么提示如何解决这个问题吗?
答案1
您需要设置!
为普通字符,而不是法语标点符号简写
\documentclass{article}
\usepackage[french]{babel}
\usepackage{xypic}
\begin{document}
\shorthandoff*{!}
$$\xymatrix@!0 @R=2pc @C=3pc { \mathcal{E}_1 \ar[rr]&& \mathcal{E}_2}$$
\shorthandon{!}
\end{document}
请注意,在原始文档中,错误消息突出显示了!
它不是说这\mathcal
是个问题。错误信息是:
<xymatrix
! Xy-pic error: <addop> or <direction> or one of 1RCMLHW*! expected.
\xyerror@ ...#2}\fi \errmessage {Xy-pic error: #1}
}
l.8 $$\xymatrix@!
0 @R=2pc @C=3pc { \mathcal{E}_1 \ar[rr]&& \mathcal{E}_2}$$
?
换行符显示 TeX 已读取了多远,它发生在!
它尚未看到\mathcal
答案2
一般来说,不需要在环境\xymatrix
内封闭,但使用它可能是解决您的问题的办法,因为我们可以指示 LaTeX 在进入环境时禁用简写字符。xy
babel-french
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[cmtip]{xypic}
\AtBeginEnvironment{xy}{\shorthandoff{;:!?}}
\begin{document}
\[
\begin{xy}
\xymatrix@!0 @R=2pc @C=3pc { \mathcal{E}_1 \ar[rr]&& \mathcal{E}_2}
\end{xy}
\]
\end{document}
请注意,$$
切勿在 LaTeX 中使用,请参阅为什么 \[ ... \] 比 $$ ... $$ 更可取?