使用 Pdflatex 在 LaTeX 中 gnuplot,无需 gnuplottex

使用 Pdflatex 在 LaTeX 中 gnuplot,无需 gnuplottex

我想知道是否有可能找到一个类似的解决方案来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.texthesis-gnuplottex-fig1.gnuplot和(0 字节)中的文件。可以通过写入选项来删除该文件。尽管如此,文档内容仍会根据需要显示图。是否可以为 ? 定义类似的“自定义依赖项” ?可以在?的命令行中。thesis-gnuplottex-fig1.tex.gnuplotcleanupgnuplottexthesis.pdfpdflatexpdflatex

提前谢谢你的帮助。

答案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):

  1. 在调用 pdflatex 时在命令行中 添加-shell-escape或:-enable-write18pdflatex.exe -enable-write18 -synctex=1 -interaction=nonstopmode %.tex
  2. 将 Windows 路径目录添加gnuplot.exe到命令 ($Path) 中的附加搜索路径。例如,在我的情况下:C:\Program Files (x86)\gnuplot\bin
  3. 需要以下软件包import:(建立相对于目录的输入) 和filemod提供文件修改时间并进行比较)你必须将它们添加到你的序言中: \usepackage{import, filemod-expmin}
  4. /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
    
  5. 将以下代码添加到文档的序言中(例如,在我的情况下:)/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}}%
       }
    
  6. 当通过 包含图像时,如果文件发生更改,它将自动再次\includegnu导出到(请注意,必须指定图像而不指定文件扩展名):PdflatexGnuplot.plt

            \begin{figure}[H]
                 \centering
                 \includegnu{cascade}
                 \caption[My caption]{The caption}
                 \label{fig:fig_11}
            \end{figure}
    

还有其他方法可以改进这些代码吗?可能是newcommands

或者其他可能的解决方案?

先感谢您

相关内容