我有包含以下内容的 .dot 文件:
digraph world { size="7,7";
{rank=same; S8 S24 S1 S35 S30;}
{rank=same; T8 T24 T1 T35 T30;}
{rank=same; 43 37 36 10 2;}
{rank=same; 25 9 38 40 13 17 12 18;}
{rank=same; 26 42 11 3 33 19 39 14 16;}
{rank=same; 4 31 34 21 41 28 20;}
{rank=same; 27 5 22 32 29 15;}
{rank=same; 6 23;}
{rank=same; 7;}
S8 -> 9;
S24 -> 25;
S24 -> 27;
S1 -> 2;
S1 -> 10;
S35 -> 43;
S35 -> 36;
S30 -> 31;
S30 -> 33;
9 -> 42;
9 -> T1;
25 -> T1;
25 -> 26;
27 -> T24;
2 -> {3 ; 16 ; 17 ; T1 ; 18}
10 -> { 11 ; 14 ; T1 ; 13; 12;}
31 -> T1;
31 -> 32;
33 -> T30;
33 -> 34;
42 -> 4;
26 -> 4;
3 -> 4;
16 -> 15;
17 -> 19;
18 -> 29;
11 -> 4;
14 -> 15;
37 -> {39 ; 41 ; 38 ; 40;}
13 -> 19;
12 -> 29;
43 -> 38;
43 -> 40;
36 -> 19;
32 -> 23;
34 -> 29;
39 -> 15;
41 -> 29;
38 -> 4;
40 -> 19;
4 -> 5;
19 -> {21 ; 20 ; 28;}
5 -> {6 ; T35 ; 23;}
21 -> 22;
20 -> 15;
28 -> 29;
6 -> 7;
15 -> T1;
22 -> T35;
22 -> 23;
29 -> T30;
7 -> T8;
23 -> T24;
23 -> T1; }
我该如何呈现它并完成一个页面?
答案1
我会使用这种方法。我已经安装了图形可视化,修改了系统 PATH(Windows),然后我创建了一个独立的 PDF 文件,dot
之后对其进行了裁剪。我们可以使用dot2tex
工具和dot2texi
包。优点是你可以从点文件中获取 TikZ 代码,缺点是你需要 Python 和 EasyInstall 才能使其工作。在 Windows 下设置它并不容易,我建议尝试dottex
和graphviz
首先介绍一下软件包。
我们正在自动或手动获取mal-dots-dot2tex-fig1.dot
文件。我们以这种方式处理文件,结果是一个独立的 PDF 文件。
点-Tpdf -O mal-dots-dot2tex-fig1.dot
pdfcrop --hires --margins 0 mal-dots-dot2tex-fig1.dot.pdf
下一个任务是包含 PDF 文件并将其放入页面中。我测量并比较\paperwidth
图片\paperheight
的宽度和高度。有了这四个尺寸,我们可以在两种纸张模式(纵向、横向)中正确缩放更宽/更高的图像。对于这些测试,我们使用mwe
包裹。
最后一项任务是将图片放置在页面中间。我使用绝对定位TikZ
包。它需要运行两次 TeX。我正在使用,lualatex
但xelatex
和pdflatex
引擎也可以使用。对于普通的,latex
我们需要获取eps
文件。
lualatex mal-dots.tex
lualatex mal-dots.tex
您可能想尝试background
或者fancyhdr
如果您想在更多页面上放置图片,可以使用软件包。我想情况并非如此。我附上了 dot 和 TeX 文件以及排版页面的预览。
文件mal-dots-dot2tex-fig1.dot
:
// I am the mal-dots-dot2tex-fig1.dot file...
digraph world { size="7,7";
{rank=same; S8 S24 S1 S35 S30;}
{rank=same; T8 T24 T1 T35 T30;}
{rank=same; 43 37 36 10 2;}
{rank=same; 25 9 38 40 13 17 12 18;}
{rank=same; 26 42 11 3 33 19 39 14 16;}
{rank=same; 4 31 34 21 41 28 20;}
{rank=same; 27 5 22 32 29 15;}
{rank=same; 6 23;}
{rank=same; 7;}
S8 -> 9;
S24 -> 25;
S24 -> 27;
S1 -> 2;
S1 -> 10;
S35 -> 43;
S35 -> 36;
S30 -> 31;
S30 -> 33;
9 -> 42;
9 -> T1;
25 -> T1;
25 -> 26;
27 -> T24;
2 -> {3 ; 16 ; 17 ; T1 ; 18}
10 -> { 11 ; 14 ; T1 ; 13; 12;}
31 -> T1;
31 -> 32;
33 -> T30;
33 -> 34;
42 -> 4;
26 -> 4;
3 -> 4;
16 -> 15;
17 -> 19;
18 -> 29;
11 -> 4;
14 -> 15;
37 -> {39 ; 41 ; 38 ; 40;}
13 -> 19;
12 -> 29;
43 -> 38;
43 -> 40;
36 -> 19;
32 -> 23;
34 -> 29;
39 -> 15;
41 -> 29;
38 -> 4;
40 -> 19;
4 -> 5;
19 -> {21 ; 20 ; 28;}
5 -> {6 ; T35 ; 23;}
21 -> 22;
20 -> 15;
28 -> 29;
6 -> 7;
15 -> T1;
22 -> T35;
22 -> 23;
29 -> T30;
7 -> T8;
23 -> T24;
23 -> T1; }
文件mal-dots.tex
:
%! *latex mal-dots.tex
% (twice)
% Needed tool: http://www.graphviz.org/
% Recommended tools: http://code.google.com/p/dot2tex/ and dot2texi package
\documentclass[a4paper]{article} % landscape
\pagestyle{empty}
\usepackage{tikz}
\usepackage[multidot]{grffile}
% \usepackage{mwe}
\begin{document}
\def\malname{mal-dots-dot2tex-fig1.dot-crop.pdf}
% example-image-16x9
% example-image-9x16
\newbox\malbox
\setbox\malbox=\hbox{\includegraphics{\malname}}
\begin{tikzpicture}
[remember picture, overlay]
\node at (current page) {%
\ifnum\paperwidth<\paperheight % portrait: page
\ifnum\wd\malbox<\ht\malbox % portrait: picture
\includegraphics[height=\paperheight]{\malname}%
\else % landscape: picture
\includegraphics[angle=90,height=\paperheight]{\malname}%
\fi % end of \ifnum picture
\else % landscape: page
\ifnum\wd\malbox<\ht\malbox % portrait: picture
\includegraphics[angle=90,width=\paperwidth]{\malname}%
\else % landscape: picture
\includegraphics[width=\paperwidth]{\malname}%
\fi % end of \ifnum picture
\fi % end of \ifnum paper
};%
\end{tikzpicture}%
\end{document}