babel 和 xypic 之间交互不好?

babel 和 xypic 之间交互不好?

我正在用意大利语写一篇详尽的文章,我正在使用XY-pic绘制一些图表。不幸的是,似乎babel正在与交互XY-pic,因此无法对元素进行分组。

以下是 MWE:

\documentclass[a4paper,10pt]{article}

\usepackage[italian]{babel}

\usepackage[all]{xy}

\usepackage{amssymb}

\begin{document}

\xymatrix @R=1pt{
a & \mathbb{N} & \Rightarrow & \mathbb{N} & e & f & g \\
1 & 2 & 3 & 4 & 5 & 6 & 7 
\save "1,2"."2,4"*[F.]\frm{} \restore
}

\end{document}

输出:

在此处输入图片描述

虽然这是预期的输出:

在此处输入图片描述

这是我删除该行后得到的输出\usepackage[italian]{babel}

有没有办法同时使用babelxy-pic 避免两者之间的相互作用?

答案1

babel如果你的文档中不需要速记,只需发出

\AtBeginDocument{\shorthandoff{"}}

加载后babel。否则,您必须修改\xymatrix命令,以便它\shorthandoff{"}在启动矩阵之前执行并在最后撤消它。

\documentclass[a4paper,10pt]{article}

\usepackage[italian]{babel}
\usepackage[all]{xy}

\let\ORIGxymatrix\xymatrix
\def\xymatrix#1#{\begingroup\shorthandoff{"}\INNERxymatrix{#1}}
\def\INNERxymatrix#1#2{\ORIGxymatrix#1{#2}\endgroup}

\usepackage{amssymb}

\begin{document}
\xymatrix @R=1pt{
a & \mathbb{N} & \Rightarrow & \mathbb{N} & e & f & g \\
1 & 2 & 3 & 4 & 5 & 6 & 7
\save "1,2"."2,4"*[F.]\frm{} \restore
}

"" % this should print opening double quotes (just to see that shorthands work again

\end{document}

在此处输入图片描述

相关内容