我正在寻找一个好的图表工具,并发现图形布局引擎。我能否将用 GLE 编写的代码包含在 latex 文档中?目的不是将其作为文件包含在文档中,而是作为 latex 脚本中的脚本,可以吗?
谢谢
答案1
\VerbatimOut
您可以在文档中插入 GLE 代码,将其写入临时文件,在此文件上调用 GLE,并将输出作为图像包含。可以使用包将环境内容写入文件fancyvrb
,请参阅将环境主体逐字写入文件。可以使用以下命令调用外部程序\immediate\write18
(例如,参见https://stackoverflow.com/questions/3252957/how-to-execute-shell-script-from-latex),需要--shell-escape
在编译文档时进行该标志。
glenum
如果您想编译多个图形,则可以使用名为 的计数器来通过创建不同的文件名来防止缓存。
梅威瑟:
\documentclass{article}
\usepackage{graphicx}
\usepackage{fancyvrb}
\newcounter{glenum}
\setcounter{glenum}{0}
\newenvironment{GLEinclude}[1]
{\xdef\mywd{#1}\VerbatimOut{\jobname.\theglenum.gle}}
{\endVerbatimOut%
\immediate\write18{gle -output \jobname.\theglenum.gle.pdf \jobname.\theglenum.gle}%
\includegraphics[width=\mywd]{{\jobname.\theglenum.gle}.pdf}%
\stepcounter{glenum}%
}
\begin{document}
Here is a tree fractal compiled with GLE:
\begin{GLEinclude}{5cm}
size 32 22
a = 3; b = 4; c = sqrt(a^2+b^2)
sub pythagorean n
local red = (34+n*92)/(n+1)
local green = (139+n*64)/(n+1)
local blue = (34+n*51)/(n+1)
box c c fill rgb255(red,green,blue)
if n = 0 then return
begin translate c c
begin rotate todeg(-acos(a/c))
begin scale a/c a/c
begin translate -c 0
pythagorean n-1
end translate
end scale
end rotate
end translate
begin translate 0 c
begin rotate todeg(acos(b/c))
begin scale b/c b/c
pythagorean n-1
end scale
end rotate
end translate
end sub
begin translate 16 0
pythagorean 10
end translate
\end{GLEinclude}
Also known as a \textbf{Pythagorean tree}.
\end{document}
结果: