关于通过 latex+dvips+ps2pdf 编译 pgfplot/tikz 图形的问题

关于通过 latex+dvips+ps2pdf 编译 pgfplot/tikz 图形的问题

我在通过 latex+dvips+ps2pdf 链编译 pgfplots/tikz 图形时遇到了很多问题。我可以通过 pdflatex 成功编译同一组 pgfplots/tikz 图形。我需要通过 latex+dvips+ps2pdf 链进行编译的原因是因为 pdflatex 生成的 pdf 文件中没有嵌入一些数学符号。

我的问题如下。

  1. 如何使用 \includegraphics 包含 pdf 图形并通过 latex+dvips+ps2pdf 链进行编译?

如果此选项存在解决方案,那么我可以先将 pgfplots/tikz 图形编译为 pdf 输出图形。接下来,我可以使用 \includegraphics 包含 pdf 图形并通过 latex+dvips+ps2pdf 链进行编译。

  1. 通过 latex+dvips+ps2pdf 链编译 pgfplots/tikz 图形时的边界框问题。

MWE 的电话example.tex如下:

\documentclass{article}
\usepackage{filecontents}
\usepackage[dvips]{graphicx}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}
\usepgfplotslibrary{external}
\tikzexternalize
\tikzset{external/system call={latex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource"; dvips -o "\image".ps "\image".dvi}}
\tikzset{external/force remake}

\begin{filecontents}{data.dat}
CLFREQT 0.000000 0.500000 20 1.200000 5.883213
CLFREQT 5.883213 7.559856 20 1.000000 6.823011
CLFREQT 12.706224 14.382867 20 0.800000 7.633751
CLFREQT 20.339976 20.489868 20 1.000000 6.165892
CLFREQT 26.505868 26.655760 20 0.800000 7.780472
CLFREQT 34.286340 32.880138 20 0.600000 8.835256
CLFREQT 43.121595 38.181291 20 0.800000 9.379904
CLFREQT 52.501500 45.685215 20 1.000000 9.601305
CLFREQT 62.102805 55.286519 20 1.200000 9.431572
CLFREQT 71.534377 66.604406 20 1.000000 9.924455
CLFREQT 81.458832 76.528861 20 1.200000 9.469530
CLFREQT 90.928361 87.892297 20 1.000000 5.099208
CLFREQT 96.027570 92.991505 20 0.800000 8.763533
\end{filecontents}

\begin{filecontents}{Fig.tikz}
\tikzsetnextfilename{Fig}
\begin{tikzpicture}
    \begin{axis}[
        legend pos=north west,
        legend style={font=\small},
        xmode=linear,
        ymode=linear,
        axis x line*=bottom,
        axis y line*=left,
        tick label style={font=\small},
        grid=both,
        tick align=outside, 
        tickpos=left,
        xlabel=xlabel,
        ylabel=ylabel,
        xmin=0,xmax=100,
        ymin=0,ymax=100,
        width=0.45\textwidth,
        height=0.4\textwidth,
    ]
    \addplot+[mark=*,raw gnuplot,color=red] gnuplot {
        plot 'data.dat' using 2:3 w lp lw 3;
    };
    \addlegendentry{Legend};
    \end{axis}
\end{tikzpicture}
\end{filecontents}

\begin{document}

\begin{figure}[bth]
    \begin{tabular}{p{2.25in}}
        \scalebox{0.5}[0.5]{\includegraphics[]{Fig.tikz}}
    \end{tabular}
    \caption{\small This is the caption.}
\end{figure}

\end{document}

我通过以下方式编译 example.tex 文件

latex -interaction=nonstopmode -shell-escape example.tex; dvips -o example.ps example.dvi; ps2pdf example.ps

输出错误为:

! LaTeX Error: Cannot determine size of graphic in Fig.tikz (no BoundingBox).

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.61 ...ox{0.5}[0.5]{\includegraphics[]{Fig.tikz}}

<Fig.tikz> [1] (./example.aux) )
(see the transcript file for additional information)
Output written on example.dvi (1 page, 5416 bytes).
Transcript written on example.log.
This is dvips(k) 5.994 Copyright 2014 Radical Eye Software (www.radicaleye.com)
' TeX output 2014.10.02:1933' -> example.ps
</usr/local/texlive/2014/texmf-dist/dvips/base/tex.pro>
</usr/local/texlive/2014/texmf-dist/dvips/base/texps.pro>
</usr/local/texlive/2014/texmf-dist/dvips/base/special.pro>
</usr/local/texlive/2014/texmf-dist/dvips/base/color.pro>. 
</usr/local/texlive/2014/texmf-dist/fonts/type1/public/amsfonts/cm/cmr9.pfb>
</usr/local/texlive/2014/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb>
[1<./Fig.tikz>] 
Error: /undefined in \tikzsetnextfilename
Operand stack:

Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1900   1   3   %oparray_pop   1899   1   3   %oparray_pop   1883   1   3   %oparray_pop   1771   1   3   %oparray_pop   --nostringval--   %errorexec_pop   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--
Dictionary stack:
   --dict:1168/1684(ro)(G)--   --dict:0/20(G)--   --dict:86/200(L)--   --dict:181/300(L)--   --dict:66/200(L)--
Current allocation mode is local
Last OS error: Invalid argument
Current file position is 57618
GPL Ghostscript 9.10: Unrecoverable error, exit code 1

“LaTeX 错误:无法确定图形大小”错误的原因是什么?

  1. 我尝试通过 latex+dvips+ps2pdf 使用另一个 MWE 进行编译,如下所示。

    \documentclass{sig-alternate-10pt}
    
    \usepackage{lua-visual-debug}
    \usepackage{tikzscale}
    \usepackage{tikz}
    \usetikzlibrary{arrows,backgrounds,calc,shapes,patterns}
    \usetikzlibrary{er}
    \usepackage{tikz-3dplot}
    
    \usepackage{pgfplots}
    \usetikzlibrary{pgfplots.groupplots}
    
    \usepackage{pgfplotstable}
    \usepackage{currfile}
    \usepackage{lmodern}
    \usepackage{filecontents}
    
    \usetikzlibrary{spy}
    
    %\usepgflibrary{shapes.geometric}
    
    \usetikzlibrary{external}
    \tikzexternalize[prefix=figure-build/]
    %\tikzset{external/mode=list and make}
    %\tikzset{external/check=diff}
    
    %\tikzset{external/force remake}
    
    \pgfplotsset{compat=1.11}
    
    \tikzset{external/system call={latex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\string\def\string\myopts{\myopts}\texsource" && dvips -o "\image".ps "\image".dvi}}
    
    \usepackage{import}
    \usepackage[open-square,define-standard-theorems]{QED}
    \usepackage{listings}
    
    % available fonts (9/94) seem to be:
    % avantgarde bookman chancery lucida ncs palatino times
    \hyphenation{hy-phen-ation}
    
    % poor man's doublespacing (useful for less-than-exactly double spacing)
    % \renewcommand{\baselinestretch}{1.5}
    
    %\include{prooftree}
    \includeonly{}
    
    \begin{filecontents}{data.dat}
    CLFREQT 0.000000 0.500000 20 1.200000 5.883213
    CLFREQT 5.883213 7.559856 20 1.000000 6.823011
    CLFREQT 12.706224 14.382867 20 0.800000 7.633751
    CLFREQT 20.339976 20.489868 20 1.000000 6.165892
    CLFREQT 26.505868 26.655760 20 0.800000 7.780472
    CLFREQT 34.286340 32.880138 20 0.600000 8.835256
    CLFREQT 43.121595 38.181291 20 0.800000 9.379904
    CLFREQT 52.501500 45.685215 20 1.000000 9.601305
    CLFREQT 62.102805 55.286519 20 1.200000 9.431572
    CLFREQT 71.534377 66.604406 20 1.000000 9.924455
    CLFREQT 81.458832 76.528861 20 1.200000 9.469530
    CLFREQT 90.928361 87.892297 20 1.000000 5.099208
    CLFREQT 96.027570 92.991505 20 0.800000 8.763533
    \end{filecontents}
    
    \begin{filecontents}{Fig.tikz}
    \tikzsetnextfilename{Fig}
    \begin{tikzpicture}
        \begin{axis}[
            legend pos=north west,
            legend style={font=\small},
            xmode=linear,
            ymode=linear,
            axis x line*=bottom,
            axis y line*=left,
            tick label style={font=\small},
            grid=both,
            tick align=outside,
            tickpos=left,
            xlabel=xlabel,
            ylabel=ylabel,
            xmin=0,xmax=100,
            ymin=0,ymax=100,
            width=0.45\textwidth,
            height=0.4\textwidth,
        ]
        \addplot+[mark=*,raw gnuplot,color=red] gnuplot {
            plot 'data.dat' using 2:3 w lp lw 3;
        };
        \addlegendentry{Legend};
        \end{axis}
    \end{tikzpicture}
    \end{filecontents}
    
    \begin{document}
    
    %\include{exercises}
    %\baselineskip=0.22 in
    % \draftheader
    %\renewcommand{\theequation}{\Roman{section}.\Alph{equation}}
    \setcounter{Result}{0}
    
    %% this line is needed to work together with QED.sty
    \setcounter{equation}{0}
    
    \reversemarginpar
    
    \thispagestyle{empty}
    \setcounter{page}{1}
    
    \title{Dummy Title}
    
    %\date{}
    \maketitle
    
    \begin{figure}[bth]
        \begin{tabular}{p{2.25in}}
            \scalebox{0.5}[0.5]{\includegraphics[]{Fig.tikz}}
        \end{tabular}
        \caption{\small This is the caption.}
    \end{figure}
    
    \end{document}
    

我确实看不出 2. 和 3 中所示的 2 个 MWE 有什么大的区别。为什么 2. 中的 MWE 无法编译,而 3. 中的 MWE 可以编译?

即使编译成功,附件显示的pdf文件也很奇怪。图中有很多空白。如何去除空白? 在此处输入图片描述

相关内容