我想知道是否有可能找到一个类似的解决方案来pdflatex
代替latex
,参见LaTeX 中的 gnuplot,无需 gnuplottex。
将代码更改gnuplot
为:
\begin{gnuplot}[terminal=cairolatex, terminaloptions= pdf input]
set samp 100;
set iso 40;
set xrange [0:1];
set yrange [0:1];
set zrange [0.8:2];
unset key;
unset colorbox;
set hidden3d front;
a = 1;
set xyplane at a;
f(x,y) = (x+y)/(2*sqrt(x*y));
set xlabel "$\\tau_I$";
set ylabel "$\\tau_D$";
set zlabel "$\\zeta$";
set output "figures/cascade.tex"
splot f(x,y) with pm3d at b, f(x,y) with lines;
unset output
\end{gnuplot}
并且使用pdflatex
(-shell-escape
启用)进行编译不仅会生成路径图中的.pdf
和.tex
文件cairolatex
,还会生成Tex 路径根( thesis.tex
)thesis-gnuplottex-fig1.gnuplot
和(0 字节)中的文件。可以通过写入选项来删除该文件。尽管如此,文档内容仍会根据需要显示图。是否可以为 ? 定义类似的“自定义依赖项” ?可以在?的命令行中。thesis-gnuplottex-fig1.tex
.gnuplot
cleanup
gnuplottex
thesis.pdf
pdflatex
pdflatex
提前谢谢你的帮助。
答案1
我已经找到了一种解决这个问题的方法,我的基本latex
技能考虑到了 Inkscape 的类似解决方案,请参阅子小节3.3.2. LATEX 代码在第 3 页如何在 LATEX 中包含 SVG 图像由 Johan BC Engelen 于 2013 年创作。
文件结构:
/main/
|-- main.tex
|-- macros/
|-- newcommands.tex
|-- content/
|-- chapter.tex
|-- images/
|-- gnuplot/
|-- cascade.plt
|-- figures/
|-- cascade.tex
|-- cascade.pdf
请遵循以下步骤(Windows 7、Gnuplot Miktex
、TexStudio 和Pdflatex
):
- 在调用 pdflatex 时在命令行中 添加
-shell-escape
或:-enable-write18
pdflatex.exe -enable-write18 -synctex=1 -interaction=nonstopmode %.tex
- 将 Windows 路径目录添加
gnuplot.exe
到命令 ($Path) 中的附加搜索路径。例如,在我的情况下:C:\Program Files (x86)\gnuplot\bin
- 需要以下软件包
import
:(建立相对于目录的输入) 和filemod
(提供文件修改时间并进行比较)你必须将它们添加到你的序言中:\usepackage{import, filemod-expmin}
该
/main/images/gnuplot/cascade.plt
文件包含:cd 'images\figures' set terminal cairolatex pdf input set output 'cascade.tex' set dummy u, v set parametric set isosamples 21, 21 set hidden3d back offset 1 trianglepattern 3 undefined 1 altdiagonal bentover set style data lines set title "Real part of complex square root function" set urange [ -3.00000 : 3.00000 ] noreverse nowriteback set vrange [ -3.00000 : 3.00000 ] noreverse nowriteback splot u**2-v**2,2*u*v,u notitle unset output
将以下代码添加到文档的序言中(例如,在我的情况下:)
/main/macros/newcommands.tex
:\newcommand{\executeiffilenewer}[3]{% \ifnum\pdfstrcmp{\pdffilemoddate{#1}}% {\pdffilemoddate{#2}}>0% {#3}% \fi% } \newcommand{\includegnu}[1]{% \IfFileExists{images/gnuplot/#1.plt}{% \IfFileExists{images/figures/#1.tex}{% \executeiffilenewer{images/gnuplot/#1.plt}{images/figures/#1.tex}{\immediate\write18{gnuplot images/gnuplot/#1.plt}}}{% \immediate\write18{gnuplot images//gnuplot//#1.plt}}% \subimport{images/figures/}{#1.tex}}% {\errmessage{LaTeX Error: 'images/gnuplot/#1.plt' not found, input line \the\inputlineno}}% }
当通过 包含图像时,如果文件发生更改,它将自动再次
\includegnu
导出到(请注意,必须指定图像而不指定文件扩展名):Pdflatex
Gnuplot
.plt
\begin{figure}[H] \centering \includegnu{cascade} \caption[My caption]{The caption} \label{fig:fig_11} \end{figure}
还有其他方法可以改进这些代码吗?可能是newcommands
?
或者其他可能的解决方案?
先感谢您