La biblioteca babel de Tikz no funciona bajo ciertas condiciones

La biblioteca babel de Tikz no funciona bajo ciertas condiciones

El uso de una funcionalidad de la biblioteca "quotes" inicialmente me dio un error.

Cambié el idioma de Babel de "brasileño" a "inglés" y funcionó.

Busqué una solución y descubrí la biblioteca "babel"; Lo usé, por lo que funcionó para los casos "normales", pero no dentro de la macro que definí.

Básicamente, así es como funcionan las cosas:

  1. inglés + (paquete sin cotización) = funciona para todos los casos
  2. brasileño + (sin paquete de cotización) = no funciona
  3. inglés + (paquete de cotización) = funciona para todos los casos
  4. brasileño + (paquete de cotización) = funciona fuera de las macros, pero no dentro de estas.

Ejemplo de trabajo mínimo:

\documentclass[brazil]{standalone}
\usepackage{tikz,babel}
\usetikzlibrary{babel,angles,quotes}

\newcommand\fig[1]%
{\begin{tikzpicture}#1\end{tikzpicture}}%

\begin{document}

\fig{\coordinate (a) at (3.75,3.75);
  \coordinate (b) at (3.75,0.75);
  \coordinate (lo) at (0, 0.75);
  \draw[thick,blue] (0, 0.75) -- (3.75, 3.75);
  \pic [draw, -,thick,"$\theta$", angle radius=1cm, angle eccentricity=1.3] {angle = a--lo--b};}

\end{document}

Falla cuando se configura el idioma "brasil", pero funciona cuando se configura en inglés.

Respuesta1

Este problema también se aplica con la opción germande babel.

El motivo es que el argumento del comando \figno se lee con los catcodes correctos. La tikzbiblioteca babelrestablece algunos códigos cat a sus valores normales al comienzo de cada tikzpictureentorno, pero el argumento de \figse lee antes de que se aplique.

La solución se basa en la respuesta de¿Hay alguna forma de configurar un código cat sólo dentro de una macro?.

El comando \figcomienza con \begingroup. Luego establece el código cat de ". Solo después de cambiar este código cat, \figauxse ejecuta el comando. Al final de \figauxse \endgroupcoloca.

ingrese la descripción de la imagen aquí

\documentclass[brazil]{standalone}
\usepackage{tikz,babel}
\usetikzlibrary{babel,angles,quotes}
\newcommand{\fig}{\begingroup\catcode`"=12 \figaux}
\newcommand{\figaux}[1]{\begin{tikzpicture}#1\end{tikzpicture}\endgroup}
\begin{document}
\fig{\coordinate (a) at (3.75,3.75);
  \coordinate (b) at (3.75,0.75);
  \coordinate (lo) at (0, 0.75);
  \draw[thick,blue] (0, 0.75) -- (3.75, 3.75);
  \pic [draw, -,thick,"$\theta$", angle radius=1cm, angle eccentricity=1.3] {angle = a--lo--b};}
\end{document}

información relacionada