
패키지 에서는 bodeplot
(그래픽 외부화 문제를 피하기 위해 이렇게 정의됨 tikz
) 을 사용하여 새로운 환경을 정의했습니다.
\documentclass{standalone}
\usepackage{pgfplots,xparse}
\pgfplotsset{compat=1.18}
\NewDocumentEnvironment{MyEnv}{O{}mm+b}{
\begin{tikzpicture}
\begin{semilogxaxis}[xmin={#2},xmax={#3},ymin=0,ymax=1]
#4
\end{semilogxaxis}
\end{tikzpicture}
}{}
사용자가 새로운 환경을 사용하여 이와 같은 작업을 수행할 수 있기를 바랍니다.
\begin{document}
\begin{MyEnv}[]{1e-1}{1e4}
\draw[thick,blue,dashed] (axis cs:1,0) -- (axis cs:100,1);
\addplot[variable=t,domain=1e-1:1e4] gnuplot {(t>100)?0.2:0.5};
\end{MyEnv}
\end{document}
이 모든 것은 영어 문서에 적용됩니다. 그러나 사용자가 babel
일부 문자를 활성화하는 언어를 사용하면 #4
문서를 컴파일할 수 없습니다. 예를 들어 추가하면
\usepackage[french]{babel}
\usetikzlibrary{babel}
서문에 컴파일 오류가 발생합니다.
frenchbsetup
나는 그것을 확인 하고 사용하여 프랑스어 작업에 적합하도록 만들었습니다.
\AddToHook{env/MyEnv/begin}{\shorthandoff{;:!?}}
감지된 경우. 그러나 모든 언어의 모든 활성 문자에 대해 이와 같은 작업을 수행하는 것은 이 문제를 해결하기 위한 잘못된 접근 방식처럼 보입니다.
에서 지원하는 모든 언어에서 작동하는 이와 같은 매크로의 활성 문자를 감지하고 관리하는 더 좋은 방법이 있습니까 babel
?
답변1
catcode를 어떻게 처리하는지 잘 모르겠지만 tikz
어떻게든 기본값인 12('기타')로 변경해야 한다고 가정합니다. 유일한 방법은 \shorthandoff
(또는 낮은 수준 \catcode
)을 사용하는 것입니다.
\dospecials
그러나 아마도 다음 아이디어가 도움이 될 것입니다. '특수' 문자를 저장하는 매크로가 있고 babel
여기에 약칭을 추가합니다. 매크로로 저장되기 때문에(즉, ;
로 저장됨 \;
) 실제 문자를 얻으려면 몇 가지 트릭이 필요합니다. 그런 다음 다음을 사용할 수 있습니다 \ifbabelshorthand
.
\documentclass{article}
\usepackage[french]{babel}
\makeatletter
\let\shorthandlist\@empty
\def\do#1{%
\begingroup
\lccode`\~=`#1\relax
\lowercase{\ifbabelshorthand~{\g@addto@macro\shorthandlist{~}}{}}
\endgroup}
\dospecials
\makeatother
\show\shorthandlist
에 ->~:;!?.
의해 추가된 문자를 제거하면 가 표시됩니다 . 당신에게는 효과가 없을 수도 있지만 적어도 나는 시도했습니다.\show
~:;!?