Babel, tikz и Beamer не работают вместе

Babel, tikz и Beamer не работают вместе

Следующий код не может быть построен с сообщением

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

Однако это работает, если строка brazil babel прокомментирована или если tikzpicture построена из рамки. \pgfversionпоказывает 3.0.0.

решение1

Механизм, предоставляемый библиотекой babelTikZ, заключается в изменении кода категории "при запуске tikzpicture. По сути, это эквивалентно добавлению \shorthandoff{"}после \begin{tikzpicture}.

К сожалению, это не может работать в Beamer frame, поскольку содержимое кадра поглощается перед обработкой, поэтому токены символов получают свой код категории, который \shorthandoff{"}больше не может изменить ни одна команда.

Обходной путь (немного некрасивый, я знаю): используйте \begin{frame}[fragile], который заставит Beamer записать содержимое кадра для последующего перечитывания.

Берегитесь, что\end{frame} , что в этом случаедолженначните без пробела в крайнем левом столбце.

Связанный контент