有没有办法改变导入的 EPS 文件中的样式?

有没有办法改变导入的 EPS 文件中的样式?

我知道如何替换导入的 EPS 中的简单文本标签文件psfrag;但为了确保文档中图形的外观一致,我还希望能够替换样式,特别是线条粗细和颜色等。有没有办法做到这一点,使用其中一种psfrag或其他技术?

我理解,原则上,由于 EPS “只是” 文本,我可以编写代码来执行任意替换;但这种方法既复杂又不稳定。此外,由于我将使用的几乎所有 EPS 文件都是从另一个工具导出的,因此生成的 EPS 的细节不受我的控制,并且将来可能会发生变化(就像过去一样)。

我特别感兴趣的是使用 Mathematica 8.0 作为 EPS 文件的来源可以实现什么。例如,虽然我可以使用类似

plot1 = Plot[{Cos[t], Sin[t]}, {t, 0, 2 \[Pi]}, 
  PlotStyle -> {Red, Green},
  AxesLabel -> {"e", "s"}, Ticks -> {{}, {}}];
Export["plot1.eps", plot1];

在 Mathematica 中创建一个 EPS 文件,然后我可以使用它将该文件合并到我的 LaTaX 文档中

\psfragfig{plot1}{
    \psfrag{e}{$\epsilon$}
    \psfrag{s}{$\Sigma$}}

执行简单的文本替换,我看不出有办法使用这种技术来强制图形使用统一的外观,例如

\definecolor{tflcentralred}{RGB}{220,36,31}         
\definecolor{tfldistrictgreen}{RGB}{0,114,41}
%...        
\psfragfig{plot1}{
    \psfrag{Red}{tflcentralred}         % Appears to be now way to do this
    \psfrag{Green}{tfldistrictgreen}    % Appears to be now way to do this
    \psfrag{e}{$\epsilon$}
    \psfrag{s}{$\Sigma$}}

有没有办法更改导入的 EPS 文件(尤其是由 Mathematica 创建的 EPS 文件)中的样式(例如颜色和线条粗细),无论是使用 LaTeX 中的技术和包,还是通过修改在 Mathematica 中生成的 EPS(另一个问题)?或者,在实践中(没有 EPS 编码),仅限于简单的文本替换。


\documentclass{article}  
\usepackage{pstool}
\usepackage{tikz}

\begin{document}

\definecolor{tflcentralred}{RGB}{220,36,31}         
\definecolor{tfldistrictgreen}{RGB}{0,114,41}

%Generate plot1.eps in Mathematica 8.0 using:
%   plot1 = Plot[{Cos[t], Sin[t]}, {t, 0, 2 \[Pi]}, 
%     PlotStyle -> {Red, Green},
%     AxesLabel -> {"e", "s"}, Ticks -> {{}, {}}];
%   Export["plot1.eps", plot1];
\psfragfig{plot1}{
    \psfrag{Red}{tflcentralred}                     % Appears to be now way to do this
    \psfrag{Green}{tfldistrictgreen}            % Appears to be now way to do this
    \psfrag{e}{$\epsilon$}
    \psfrag{s}{$\Sigma$}}

\begin{tikzpicture}[domain=0:2*3.14159,x=1.8cm,y=3cm,samples=500]
    \draw[-] (0,0) -- coordinate (x axis mid) (6.25,0) node[right] {$\epsilon$};
    \draw[-] (0,-1) -- coordinate (y axis mid)(0,1)node[above] {$\Sigma$};
    \draw[color=tflcentralred] plot (\x,{cos(\x r)});
    \draw[color=tfldistrictgreen] plot (\x,{sin(\x r)});
\end{tikzpicture}  

\end{document} 

答案1

我认为对你的问题最简单的回答是“不”。没有办法做到这一点。EPS 文件是一个任意复杂的 PostScript 程序,因此或多或少无法通过搜索输入来可靠地找到输出的任何特征。文本(通常)最终由原语显示,show因此可以psfrag通过本地重新定义它来获得,但总的来说,做更多的事情要求太多了。显然,对于特定的应用程序,您可能能够发现适合重新定义的特定习语,但它总是很脆弱。您总是最好改变生成(因此在这种情况下,尝试从 mathematica 自定义生成)。

相关内容