我试图让 graphviz latex 包生成的点文件中出现(不带引号)“\|”。为了澄清起见,我希望我的 DOT 文件内容类似于
digraph junk {
node [shape=record];
n1 [label="{ A | B\|C }"];
}
这将产生如下图像
具体来说,我需要转义管道符号以避免在记录中创建新单元格。关于如何实现这一点,您有什么想法吗?以下是我目前的设置:
f.tex:
\documentclass{article}
\usepackage[pdf]{graphviz}
\begin{document}
\digraph[]{junk}{
node [shape=record];
n1 [label="{ A | B\|C }"];
}
\end{document}
编译:
$ pdflatex -shell-escape f.tex
$ pdflatex f.tex
生成 DOT 文件:
digraph junk {
node [shape=record];
n1 [label="{ A | B\delimiter "026B30D C }"];
}
答案1
您必须将字符串传递给 GraphViz\|
最简单的方法是定义一个\pipe
命令
\documentclass{article}
\usepackage[pdf]{graphviz}
\edef\pipe{\string\|}
\begin{document}
\digraph[]{junk}{
node [shape=record];
n1 [label="{ A | B\pipe C }"];
}
\end{document}
更复杂,但允许输入\|
:
\documentclass{article}
\usepackage[pdf]{graphviz}
\usepackage{etoolbox}
\makeatletter
% consider \| unexpandable; it happens in a group, so nothing bad happens
\pretocmd{\@@digraph}{\let\|\relax}{}{}
\makeatother
\begin{document}
\digraph[]{junk}{
node [shape=record];
n1 [label="{ A | B\|C }"];
}
\end{document}
graphviz
该包定义了一个“转义字符”列表,在写入文件时不会被解释,这可能是有意义的.dot
。