我正在用意大利语写一篇详尽的文章,我正在使用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}
。
有没有办法同时使用babel
和xy-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}