O uso de uma funcionalidade da biblioteca "quotes" inicialmente me deu um erro.
Mudei o idioma do babel de "brasileiro" para "inglês" e funcionou.
Fui atrás de uma solução e descobri sobre a biblioteca "babel"; usei e funcionou para os casos "normais", mas não dentro da macro que defini.
Basicamente, é assim que as coisas estão funcionando:
- inglês + (sem pacote de cotação) = funciona para todos os casos
- brasileiro + (pacote sem cotação) = não funciona
- inglês + (pacote de cotação) = funciona para todos os casos
- brasileiro + (pacote de cotação) = funciona fora das macros, mas não dentro delas.
Exemplo mínimo de trabalho:
\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}
Ele falha quando o idioma "Brasil" está definido, mas funciona quando está definido para inglês.
Responder1
Este problema também se aplica à opção german
para babel
.
A razão é que o argumento do comando \fig
não é lido com os catcodes corretos. A tikz
biblioteca babel
redefine alguns catcodes para seus valores normais no início de cada tikzpicture
ambiente, mas o argumento de \fig
é lido antes de ser aplicado.
A solução é baseada na resposta deExiste alguma maneira de definir um catcode apenas dentro de uma macro?.
O comando \fig
começa com \begingroup
. Em seguida, ele define o catcode de "
. Somente após a alteração deste código de gato o comando \figaux
é executado. No final de \figaux
, \endgroup
é colocado.
\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}