Babel, tikz e Beamer não funcionam juntos

Babel, tikz e Beamer não funcionam juntos

O código a seguir não é compilado com a mensagem

! Argument of \language@active@arg" has an extra }.

\documentclass[dvipsnames,unknownkeysallowed,12pt]{beamer}
\usepackage[brazil]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc}
\usepackage{tikz}
\usetikzlibrary{arrows,babel,calc,angles,quotes}
\usepackage{tikzsymbols}
\begin{document}
\section{Figura}
\begin{frame}
         TiKz   \pgfversion
\begin{tikzpicture}
\draw [thick]
(3,-1) coordinate (a) node[right] {a} -- (0,0) coordinate (b) node[left] {b} 
-- (2,2) coordinate (c) node[above right] {c} pic["$\alpha$", thick,draw=orange, <->, angle eccentricity=1.2, angle radius=1cm] {angle=a--b--c};
\end{tikzpicture}
\end{frame}
\end{document}

No entanto, funciona se a linha babel do Brasil for comentada ou se a imagem tikz for construída a partir de um quadro. \pgfversionmostra 3.0.0.

Responder1

O mecanismo fornecido pela babelbiblioteca TikZ consiste em alterar o código da categoria "ao iniciar um arquivo tikzpicture. Essencialmente, é equivalente a adicionar \shorthandoff{"}depois de \begin{tikzpicture}.

Infelizmente, isso não funciona em um Beamer frame, porque o conteúdo do quadro é absorvido antes do processamento, então os tokens dos caracteres recebem seu código de categoria, que nenhum \shorthandoff{"}comando pode mais alterar.

Solução alternativa (um pouco feia, eu sei): use \begin{frame}[fragile], que faz o Beamer escrever o conteúdo do quadro para reler posteriormente.

Cuidado que \end{frame}, neste caso,devecomece sem nenhum espaço anterior na coluna mais à esquerda.

informação relacionada