Babel, tikz y Beamer no trabajan juntos

Babel, tikz y Beamer no trabajan juntos

El siguiente código no se puede compilar con el mensaje

! 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}

Sin embargo, funciona si se comenta la línea de Babel de Brasil o si la imagen tikz está construida a partir de un marco. \pgfversionmuestra 3.0.0.

Respuesta1

El mecanismo que proporciona la babelbiblioteca TikZ consiste en cambiar el código de categoría "al iniciar un archivo tikzpicture. Básicamente, equivale a agregar \shorthandoff{"}después \begin{tikzpicture}.

Desafortunadamente, esto no puede funcionar en un Beamer frame, porque el contenido del marco se absorbe antes del procesamiento, por lo que los tokens de caracteres obtienen su código de categoría, que ningún \shorthandoff{"}comando puede cambiar más.

Solución alternativa (un poco fea, lo sé): use \begin{frame}[fragile], lo que hace que Beamer escriba el contenido del marco para volver a leerlo más tarde.

Ojo que \end{frame}, en este caso,debecomience sin ningún espacio anterior en la columna más a la izquierda.

información relacionada