
Следующий код не может быть построен с сообщением
! 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
Механизм, предоставляемый библиотекой babel
TikZ, заключается в изменении кода категории "
при запуске tikzpicture
. По сути, это эквивалентно добавлению \shorthandoff{"}
после \begin{tikzpicture}
.
К сожалению, это не может работать в Beamer frame
, поскольку содержимое кадра поглощается перед обработкой, поэтому токены символов получают свой код категории, который \shorthandoff{"}
больше не может изменить ни одна команда.
Обходной путь (немного некрасивый, я знаю): используйте \begin{frame}[fragile]
, который заставит Beamer записать содержимое кадра для последующего перечитывания.
Берегитесь, что\end{frame}
, что в этом случаедолженначните без пробела в крайнем левом столбце.