Использование функционала из библиотеки «quotes» изначально приводило к ошибке.
Я изменил язык Babel с «бразильского» на «английского», и это сработало.
Я занялся исправлением и узнал о библиотеке «babel», использовал ее, и она работала в «нормальных» случаях, но не внутри определенного мной макроса.
В принципе, вот как все работает:
- английский + (пакет без цитаты) = подходит для всех случаев
- бразильский + (пакет без кавычек) = не работает
- английский + (пакет цитат) = работает во всех случаях
- бразильский + (пакет цитат) = работает вне макросов, но не внутри них.
Минимальный рабочий пример:
\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}