
Hier ist ein Beispiel für das Problem, das ich mit xypic habe
\documentclass[10pt,a4paper,french,oneside]{amsbook}
\usepackage{babel}
\usepackage[T1]{fontenc}
\usepackage[applemac]{inputenc}
\usepackage[all,cmtip]{xy}
\begin{document}
\[
\xymatrix@!{
P\ar[r]^{p_{2}}\ar[d]_{p_{1}}&Y\ar[d]^g\\
X\ar[r]^f&Z}
\]
\end{document}
Und unten ist der Fehler, den ich beim Setzen bekam
./essai.tex:16: Xy-pic error: <addop> or <direction> or one of 1RCMLHW*! expect
ed.
\xyerror@ ...#2}\fi \errmessage {Xy-pic error: #1}
}
l.16 \xymatrix@!
{
Ich vermute stark, dass es an Babel liegt und die französische Option einiges durcheinander bringt, da das Zeichen ! nicht erkannt zu werden scheint (@R funktioniert beispielsweise einwandfrei). Was kann ich dagegen tun?
Antwort1
Das Lösen des Problems !
ist nicht ausreichend, da auch ?;:^="
in der Xy-pic-Syntax verwendet wird.
Sie können das Problem global lösen, indem Sie Abkürzungen in allen Xy-pic-Konstruktionen deaktivieren:
\documentclass[10pt,a4paper,french,oneside]{amsbook}
\usepackage{babel}
\usepackage[T1]{fontenc}
\usepackage[all,cmtip]{xy}
\usepackage{etoolbox}
\preto\xy{\shorthandoff{!?;:^="}}
\begin{document}
\[
\xymatrix@!{
P\ar[r]^{p_{2}}\ar[d]_{p_{1}}&Y\ar[d]^g\\
X\ar[r]^f&Z}
\]
\end{document}
Ohne etoolbox
es wäre, statt \preto\xy{...}
,
\toks0=\expandafter{\xy}
\edef\xy{\noexpand\shorthandoff{!?;:^="}\the\toks0 }
Antwort2
Sie können lokal zurückkommen !
mit \shorthandoff{!}
:
\documentclass[10pt,a4paper,french,oneside]{amsbook}
\usepackage{babel}
\usepackage[T1]{fontenc}
\usepackage[applemac]{inputenc}
\usepackage[all,cmtip]{xy}
\begin{document}
\[\shorthandoff{!}
\xymatrix@!{
P\ar[r]^{p_{2}}\ar[d]_{p_{1}}&Y\ar[d]^g\\
X\ar[r]^f&Z}
\]
\end{document}