"인용문" 라이브러리의 기능을 사용하면 처음에는 오류가 발생했습니다.
나는 바벨의 언어를 "브라질"에서 "영어"로 변경했고 작동했습니다.
나는 문제를 해결한 후 "babel" 라이브러리에 대해 알게 되었습니다. 그것을 사용했기 때문에 "일반적인" 경우에는 작동했지만 내가 정의한 매크로 내부에서는 작동하지 않았습니다.
기본적으로 이것이 작동하는 방식입니다.
- 영어 + (견적 패키지 없음) = 모든 경우에 작동
- 브라질 + (견적 패키지 없음) = 작동하지 않음
- English + (인용 패키지) = 모든 경우에 적용 가능
- 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
올바른 catcode로 읽혀지지 않기 때문입니다. 라이브러리 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}