Tikz 的 babel 庫在某些情況下無法運作

Tikz 的 babel 庫在某些情況下無法運作

使用“quotes”庫中的功能最初給了我一個錯誤。

我將巴別塔的語言從“巴西語”更改為“英語”,並且成功了。

我進行了修復,並發現了“babel”庫;使用它,因此它適用於“正常”情況,但不適用於我定義的巨集。

基本上,事情就是這樣運作的:

  1. 英文 +(無報價包)= 適用於所有情況
  2. 巴西+(無報價包)= 不起作用
  3. 英文+(報價包)=適用於所有情況
  4. brazilian + (quote package) = 在宏外部起作用,但在宏內部不起作用。

最小工作範例:

\documentclass[brazil]{standalone}
\usepackage{tikz,babel}
\usetikzlibrary{babel,angles,quotes}

\newcommand\fig[1]%
{\begin{tikzpicture}#1\end{tikzpicture}}%

\begin{document}

\fig{\coordinate (a) at (3.75,3.75);
  \coordinate (b) at (3.75,0.75);
  \coordinate (lo) at (0, 0.75);
  \draw[thick,blue] (0, 0.75) -- (3.75, 3.75);
  \pic [draw, -,thick,"$\theta$", angle radius=1cm, angle eccentricity=1.3] {angle = a--lo--b};}

\end{document}

當設定“巴西”語言時它會失敗,但當它設定為英語時它會起作用。

答案1

german此問題也適用於 的選項babel

原因是\fig未使用正確的目錄代碼讀取命令的參數。該tikzbabel在每個環境開始時將一些catcode重設為其正常值,但在此應用之前會讀取tikzpicture參數。\fig

解決方案基於以下答案有沒有辦法只在巨集內部設定catcode?

該命令\fig以 開頭\begingroup。然後它設定 的catcode "。只有在更改此catcode後,該指令\figaux才會被執行。位於\figaux的末端\endgroup

在此輸入影像描述

\documentclass[brazil]{standalone}
\usepackage{tikz,babel}
\usetikzlibrary{babel,angles,quotes}
\newcommand{\fig}{\begingroup\catcode`"=12 \figaux}
\newcommand{\figaux}[1]{\begin{tikzpicture}#1\end{tikzpicture}\endgroup}
\begin{document}
\fig{\coordinate (a) at (3.75,3.75);
  \coordinate (b) at (3.75,0.75);
  \coordinate (lo) at (0, 0.75);
  \draw[thick,blue] (0, 0.75) -- (3.75, 3.75);
  \pic [draw, -,thick,"$\theta$", angle radius=1cm, angle eccentricity=1.3] {angle = a--lo--b};}
\end{document}

相關內容