「quotes」ライブラリの機能を使用すると、最初はエラーが発生しました。
Babel の言語を「ブラジル」から「英語」に変更したところ、動作しました。
修正を試みて、「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
正しいcatcodesで読み込まれていないためです。tikz
ライブラリは、すべての環境babel
の開始時にいくつかのcatcodesを通常の値にリセットしますが、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}