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 がフレームから構築されている場合は機能します。3.0.0\pgfversionが表示されます。

答え1

TikZ ライブラリによって提供されるメカニズムは、の開始時にbabelのカテゴリ コードを変更することです。基本的には、の後にを追加することと同じです。"tikzpicture\shorthandoff{"}\begin{tikzpicture}

残念ながら、これは Beamer では機能しませんframe。フレームの内容は処理前に吸収されるため、文字トークンはカテゴリ コードを取得し、\shorthandoff{"}コマンドではこれを変更できなくなります。

回避策 (少し見苦しいですが) : を使用します。\begin{frame}[fragile]これにより、Beamer はフレームの内容を書き出して、後で再読み込みできるようにします。

\end{frame}この場合、注意してください、しなければならない左端の列に先行スペースなしで開始します。

関連情報