.png)
El código explícito
\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}
funciona pero si uso un nuevo entorno, no se puede compilar
\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}
El segundo ejemplo se compila correctamente si comento elbabel
paquete.
¿Alguna idea sobre cómo solucionar este problema? Las shorthandoff
sugerencias en las respuestas a otras preguntas similares no parecen funcionar aquí.
Respuesta1
EDITAR: Una mejor manera de hacer esto es generar una lista de taquigrafías actuales y luego deshabilitarlas todas, consulteesta respuesta. Deshabilitar manualmente las taquigrafías como ;
puede generar errores si ;
no es una taquigrafía (consulte los comentarios a continuación).
Respuesta original: como lo sugiere @UlrikeFischer en los comentarios,
\AddToHook{env/MyEnv/begin}{\shorthandoff{;}}
para manejar personajes activos funciona. El environ
paquete se utilizó para evitar conflictos con la tikz
external
biblioteca. El xparse
paquete también se puede utilizar en lugar deenviron.
\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}