Pb avec " ; " dans xymatrix

Bonjour
Le ";" ne fonctionne pas chez moi dans xymatrix.
Je veux dire par là que si je recopie ce que je trouve par exemple dans le amshelp.pdf
\xymatrix{
{C}
& {D}
\ar_{g}[l];[]
}

le " ; " engendre un bug et au preview je me retrouve avec évidemment un flèche délirante et en fait

en colonne 2 non pas D mais " D;[] "
et en fait tout ce qui suit un ; ce qui peut être "[urr]+<2em,1ex>*+{\hbox     " et j'en passe

Il y a un conflit avec quelque chose mais je ne vois pas du tout quoi.
Quelqu'un a-t-il eu ce bug et comment s'en sortir ?
C'est important de pouvoir spécifier  les deux extrémités d'une flèche.
Merci

Réponses

  • Cela devrait donner ceci en écrivant le tout sur une seule ligne :
    \[\xymatrix{{C}& {D}\ar_{g}[l];[]} \]

    Le chat ouvrit les yeux, le soleil y entra. Le chat ferma les yeux, le soleil y resta. Voilà pourquoi le soir, quand le chat se réveille, j'aperçois dans le noir deux morceaux de soleil. (Maurice Carême).
  • Math Coss
    Modifié (1 Sep)
    Comme dit @Thierry Poma, peut-être pas de problème ici : \[\xymatrix{{C}& {D}\ar_{g}[l];[] }\]Est-ce que tu as essayé avec un document presque vide ? Si ça marche dans ces conditions et s'il s'agit d'un conflit entre paquets et s'il n'est pas documenté sur le net, la méthode consiste à ajouter les paquets un à un et regarder lequel fait planter.
  • noradan
    Modifié (2 Sep)
    Je viens de compiler ça  :
    \documentclass  {article}
    \usepackage[all]{xy}
    \begin{document}
    $\xymatrix{C& D\ar_{g}[l];[] }$
    \end{document}
    et j'ai encore un plantage même si ce n'est pas le même. Ici la compil s'arrête avec une "*" comme lorsqu'il manque un end

    je suis obligé de rentrer "x" et là j'ai .... vous ne devinerez jamais !

    "missing \begin{document} "

    Je ne comprends rien du tout

  • Je ne vois pas de problème avec le code suivant.
    \documentclass{article}
    \usepackage[all]{xy}
    
    \begin{document}
    \[  \xymatrix{C& D\ar_{g}[l];[] }\]
    \end{document}
    Je joins le pdf produit.
    Cela dit, il m'est arrivé un truc idiot pour tester ton code : j'ai appelé le fichier xy.tex, de sorte que le compilateur essayait d'importer ce fichier au lieu du paquet.
  • En fait c'est même encore plus dément !
    je viens de compiler cette chose avec un vieil ordi et un vieux miktex. Pas de soucis !
    Mais avec la dernière version installée il y a 15 jours ça plante !

    Sinon le problème vient de babel ! on trouve dans frenchb.ltf
    \initiate@active@char{;} 

    et voilà ! Le catcode de " ; " a été changé en active pour avoir une espace fine avant le " ; "  d'où le bazard
    sauf que personnellement j'écris en français !
    Alors évidemment je m'y connais assez en plainTeX pour bidouiller tout ça, mais c'est rasoir
    Comment faites vous ?

  • Héhéhé
    Modifié (2 Sep)
    Il suffit de le désactiver localement :
    \documentclass{article}
    
    \usepackage[french]{babel}
    \usepackage[all]{xy}
    
    \begin{document} 
    
    \shorthandoff{;}
    \[ \xymatrix{C& D\ar_{g}[l];[]} \]
    \shorthandon{;}
    
     \end{document}

  • J'ai remis \catcode `\;=12  dans le document
    et ça semble fonctionner (ce qui d'ailleurs m'étonne puisque je pensais avoir invalidé la définition de " ; " dans french.ltf je ne me suis pas apesanti sur la chose )

    Toujours est-il que j'imagine mal l'utilisateur lambda de LaTeX écrire ça dans son source ;)

    Comment c'est qu'c'est-y qu'on fait ?

  • trop tard ! il y a deux " p " à appesanti
  • Le problème avec ta solution est que ça empêche babel de bien gérer le caractère ; notamment les espaces autour.

    Pour contourner le problème on peut utiliser des packages plus modernes pour les diagrammes comme tikz-cd. 
Connectez-vous ou Inscrivez-vous pour répondre.