使用“quotes”庫中的功能最初給了我一個錯誤。
我將巴別塔的語言從“巴西語”更改為“英語”,並且成功了。
我進行了修復,並發現了“babel”庫;使用它,因此它適用於“正常”情況,但不適用於我定義的巨集。
基本上,事情就是這樣運作的:
- 英文 +(無報價包)= 適用於所有情況
- 巴西+(無報價包)= 不起作用
- 英文+(報價包)=適用於所有情況
- 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
未使用正確的目錄代碼讀取命令的參數。該tikz
庫babel
在每個環境開始時將一些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}