Konflikt zwischen den Paketen „environ“ und „babel“ (französisch)

Konflikt zwischen den Paketen „environ“ und „babel“ (französisch)

Der explizite Code

\documentclass{standalone}
\usepackage[french]{babel}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usetikzlibrary{babel}
\begin{document}
\begin{tikzpicture}
  \begin{semilogxaxis}[
    xmin=1e-1,
    xmax=1e4,
    ymin=0,
    ymax=1
  ]
    \draw[thick,blue,dashed] (axis cs:1,0) -- (axis cs:100,1);
  \end{semilogxaxis}
\end{tikzpicture}
\end{document}

funktioniert, aber wenn ich eine neue Umgebung verwende, schlägt die Kompilierung fehl

\documentclass{standalone}
\usepackage{pgfplots,environ}
\usepackage[french]{babel}
\usetikzlibrary{babel}
\pgfplotsset{compat=1.18}
\NewEnviron{MyEnv}[3][]{
  \begin{tikzpicture}
    \begin{semilogxaxis}[
      xmin={#2},
      xmax={#3},
      ymin=0,
      ymax=1
    ]
      \BODY
    \end{semilogxaxis}
  \end{tikzpicture}
}
\begin{document}
\begin{MyEnv}[]{1e-1}{1e4}
    \draw[thick,blue,dashed] (axis cs:1,0) -- (axis cs:100,1);
\end{MyEnv}
\end{document}

Das zweite Beispiel wird korrekt kompiliert, wenn ich das Paket auskommentiere babel.

Irgendwelche Ideen, wie man das beheben kann? Die shorthandoffVorschläge in Antworten auf andere ähnliche Fragen scheinen hier nicht zu funktionieren.

Antwort1


EDIT: Eine bessere Möglichkeit hierfür ist, eine Liste der aktuellen Abkürzungen zu erstellen und diese dann alle zu deaktivieren, siehediese Antwort. Das manuelle Deaktivieren von Abkürzungen wie ;kann zu Fehlern führen, wenn ;es sich nicht um eine Abkürzung handelt (siehe Kommentare unten).


Ursprüngliche Antwort: Wie von @UlrikeFischer in den Kommentaren vorgeschlagen,

\AddToHook{env/MyEnv/begin}{\shorthandoff{;}}

zum Umgang mit aktiven Charakteren funktioniert. Das environPaket wurde verwendet, um Konflikte mit der tikz externalBibliothek zu vermeiden. Das xparsePaket kann auch anstelle von verwendet werdenenviron.

\documentclass{standalone}
\usepackage[french]{babel}
\usepackage{xparse}
\usetikzlibrary{babel,external}
\tikzexternalize[prefix=figure]
\pgfplotsset{compat=1.18}
\AddToHook{env/MyEnv/begin}{\shorthandoff{;}}
\NewDocumentEnvironment{MyEnv}{O{}mm+b}{
    \begin{tikzpicture}
        \begin{semilogxaxis}[xmin={#2},xmax={#3},ymin=0,ymax=1]
            #4
        \end{semilogxaxis}
    \end{tikzpicture}
}{}
\begin{document}
    \begin{MyEnv}[]{1e-1}{1e4}
        \draw[thick,blue,dashed] (axis cs:1,0) -- (axis cs:100,1);
    \end{MyEnv}
\end{document}

verwandte Informationen