예( xelatex a.tex -shell-escape
두 번 실행하거나 설치 xelatex a.tex
하지 않은 경우 에만 실행 dot
한 다음 생성된 파일을 수동으로 탐색):
\documentclass{article}
\usepackage[pdf]{graphviz}
\usepackage{polyglossia}
\setdefaultlanguage[babelshorthands=true]{russian}
\setmainfont{CMU Serif} % Fonts are loaded to avoid compilation errors
\setmonofont{CMU Typewriter Text}
\begin{document}
\digraph{test1}{
vertex[label="v1",pos="2,3!"];
}
\digraph{test2}{
vertex[label="v2"
,pos="2,3!"];
}
\digraph{test3}{
vertex[label=""]
}
\end{document}
첫 번째와 세 번째 그래프는 렌더링되지 않으며 해당 .dot
파일은 유효하지 않지만 두 번째 그래프는 괜찮습니다. 버릇없는 파일은
digraph test1 {
vertex[label="v1\penalty \@M \hskip .2em\ignorespaces pos="2,3!"];
}
그리고
digraph test3 {
vertex[label=\hskip \z@skip ]
}
올바른 파일:
digraph test2 {
vertex[label="v2"
,pos="2,3!"];
}
\digraph
Polyglossia가 파일에 쓰려고 할 때 명령 인수 내부의 일부 약어를 대체하는 것 같습니다 . ""
로 말해보세요 \hskip \z@skip
. 해당 동작을 일시적으로 비활성화하여 실행할 때 속기 교체가 수행되지 않도록 하려면 어떻게 해야 합니까 \digraph
? 아마도 일부 문자 클래스 조작만으로 충분할 것입니다.
\digraph
Graphviz 패키지의 명령꽤 간단 해 보인다그러나 나는 TeX 내부와 파일 처리에 대해 충분히 이해하지 못해 무엇을 해야할지에 대한 단서를 갖습니다.
답변1
\shorthandoff{"}
사용 전 \digraph
(및 이후) 에 사용해야 합니다 \shorthandon{"}
.
\digraph
올바른 작업을 수행하도록 패치하는 것이 가능합니다 . 보다 정확하게는 . 뒤에 \@digraph
삽입하려면 패치가 필요합니다 .\shorthandoff{"}
\begingroup
\documentclass{article}
\usepackage[pdf]{graphviz}
\usepackage{polyglossia}
\setdefaultlanguage[babelshorthands=true]{russian}
\setmainfont{CMU Serif} % Fonts are loaded to avoid compilation errors
\setmonofont{CMU Typewriter Text}
\makeatletter
\begingroup
\def\temp\begingroup#1\@nil{%
\endgroup\def\@digraph{\begingroup\shorthandoff{"}#1}%
}
\expandafter\temp\@digraph\@nil
\makeatother
\begin{document}
\digraph{test1}{
vertex[label="v1",pos="2,3!"];
}
\digraph{test2}{
vertex[label="v2"
,pos="2,3!"];
}
\digraph{test3}{
vertex[label=""]
}
\end{document}
예제를 실행한 후 세 파일의 내용은 다음과 같습니다.
digraph test1 {
vertex[label="v1",pos="2,3!"];
}
digraph test2 {
vertex[label="v2"
,pos="2,3!"];
}
digraph test3 {
vertex[label=""]
}
명령을 패치하는 이상한 방법이지만 특별한 트릭 때문에 다른 방법에는 상당히 저항적입니다.