在 GraphViz 图表中包含 LaTex 引文

在 GraphViz 图表中包含 LaTex 引文

我正在尝试生成一个图表来显示参考书目中论文之间的关系。我在 LaTex 文档中使用 GraphViz 来生成图表。到目前为止一切顺利:图表生成正确。

出现这个问题是因为我想在图表内有引用。

我知道可以使用 Tikz 而不是 GraphViz 来做类似的事情,但我愿意坚持使用 GraphViz,因为我发现设置图表要容易得多。

这是我能运行的代码,带有图表外的引用:

\documentclass[a4paper,10pt]{article}
\usepackage[pdf]{graphviz}
\begin{document}

Some text with a citation~\cite{lecun1990handwritten}.

\digraph{bibliography}{
  {
  /* Timeline */
  node[shape=plaintext, fontsize=15];
  1980 -> 1985 -> 1990;
  }

  /* Papers */
  {
  node[shape=plaintext, fontsize=13];
  NeoCognitron [ label=<NeoCognitron> ]
  BackPropagation [ label=<BackPropagation> ]
  LeNet [ label=<LeNet> ]
  }

  /* Year-paper relation */
  { rank=same; 1980; NeoCognitron; }
  { rank=same; 1985; BackPropagation; }
  { rank=same; 1990; LeNet; }

  /* Paper-to-paper influence */
  BackPropagation -> LeNet
  NeoCognitron -> LeNet
}

\bibliographystyle{plain}
\bibliography{deepLearningBibliography}
\end{document}

这是我得到的结果:未引用的图表示例

如果我将引用放在图表中,像这样,编译会成功,但会出现一些错误,并且引用不会出现在图表中:

  LeNet [ label=<LeNet\cite{lecun1990handwritten}> ]

我收到的第一个错误是:

./example.tex:30:Use of \Gin@ii doesn't match its definition }

如果这些信息有用,我正在 Ubuntu 上通过 Kile 使用 PdfLaTeX。

我的目标是将引文嵌入到图中,作为节点标签的一部分。

提前感谢你的帮助!

答案1

graphviz包允许psfrag使用替换来添加引用\usepackage[psfrag]{graphviz}

梅威瑟:

\documentclass[a4paper,10pt]{article}
\usepackage[psfrag]{graphviz}
\begin{document}

Some text with a citation~\cite{book1}.

\psfrag{lenetref}[cc][cc]{Lenet\cite{book1}}
\psfrag{neocognitronref}[cc][cc]{NeoCognitron\cite{misc1}}
\psfrag{backproprefabcdef}[cc][cc]{BackPropagation\cite{article1}}
\Large
\digraph{bibliography}{
  {
  /* Timeline */
  node[shape=plaintext, fontsize=15];
  1980 -> 1985 -> 1990;
  }

  /* Papers */
  {
  node[shape=plaintext, fontsize=13];
  NeoCognitron [ label=<neocognitronref> ]
  BackPropagation [ label=<backproprefabcdef> ]
  LeNet [ label=<lenetref> ]
  }

  /* Year-paper relation */
  { rank=same; 1980; NeoCognitron; }
  { rank=same; 1985; BackPropagation; }
  { rank=same; 1990; LeNet; }

  /* Paper-to-paper influence */
  BackPropagation -> LeNet
  NeoCognitron -> LeNet
}

\bibliographystyle{plain}
\bibliography{sample1}
\end{document}

结果:

在此处输入图片描述

此解决方案的主要缺点是您无法将其用于pdflatex编译,因为这会干扰 的 PostScript 处理psfrag。因此,您需要运行latex --shell-escape yourfile.tex两次,然后 ,dvips yourfile.dvi然后ps2pdf yourfile.ps。此外,字体看起来与标准 Graphviz 字体不同,但如果您的所有节点都包含引用,这可能不一定是个问题。第三,节点的定位由 Graphviz 根据替换前原始标签的大小确定,因此您需要确保标签和替换的大小大致相同,否则图形布局可能会偏离(例如backproprefabcdef上面的标签,其中abcdef添加了部分以使标签更长)。

相关内容