如何将“\|”插入到 graphviz.sty 包创建的点文件中

如何将“\|”插入到 graphviz.sty 包创建的点文件中

我试图让 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

在此处输入图片描述

相关内容