關於透過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有很大區別。

即使編譯成功後,所附的 pdf 檔案也很奇怪。圖中包含大量空白。如何消除空白? 在此輸入影像描述

相關內容