psfrag 有什么作用?它可以与 pdflatex 一起工作吗?

psfrag 有什么作用?它可以与 pdflatex 一起工作吗?

我正在获取一份迄今为止由其他人创建的文件,但该人无法接受询问。

我模糊地知道这样做的目的是什么:

\clearpage
\begin{figure}[h!]
\psfrag{F}{$F_c$}
\psfrag{M}{$M_0$}
\psfrag{V}{$V$}
\psfrag{Y}{$Y$}
\psfrag{X}{$X$}
\psfrag{T}{Thin film}
\psfrag{A}{Adhesive layer}
\psfrag{R}{Rigid surface}
\includegraphics{figure1a}
\end{figure}

(还有 2 个图形,分别是 b 和 c)

“图 1 示意图.....”为页面底部的标题。

我可以latex毫无错误地完成它,但是当我尝试pdfltex...它时,我收到一条错误消息,指出:

I could not locate the file with any of the extensions: .png, .pdf, .jpg, .mps, .jpg, .jbig2, .jb, .PNG, .PDF, .JPG, .JPEG, .JBIG2, .JB2 Try typing <return> to proceed.

之后latexxdvi文件显示所需的图形,但页面左侧的文本被挤压,图形左侧部分显示“F_c”(正确格式)到连续行上的 X,然后是“薄膜,粘合层”,然后是“刚性表面”。图形右侧是图形的指示字母 (a)。

就在图的左边距上方,“F_c”是一个截断词,以“g”结尾,我认为是“g 替换”。

当我pdflatex尝试创建 PDF 文件时,出现上述错误消息,我只能浏览它。生成的 PDF 是空白页,除了页面中心下方一列中的图形字母标识 (a)、(b) 和 (c),页面底部有“图 1...”标题。

Figure1a 与 figure1a.fig 以及 figure1a.eps 文档文件位于同一目录中。

我从 Leslie Lamport 的书中获得了一些帮助。

你能告诉我这项psfrag业务的具体内容吗?

我曾经将图形导入自己的文档中,但不是这种方式。如果我能创建更好的东西并在过程中学习新技术,我讨厌重新设计这个。

答案1

psfrag 包用于从.eps图形中删除标签和其他文本,并用标签替换它们LaTeX。这可用于确保图形中的字体与文档正文中的字体一致,无论您的图形软件是否可以访问它们。它对于插入公式和符号特别有用,因为文件中的标签eps可以用(或多或少)任意LaTeX代码替换。在此示例中,单词“typography”被当前字体中的斜体版本替换。

\documentclass{article}
\usepackage{graphicx}
\usepackage{psfrag}
\begin{document}
\begin{center}
\includegraphics[width=70pt]{small}
\end{center}
\begin{center}
\psfrag{typography}{\textit{typography}}
\includegraphics[width=70pt]{small}
\end{center}
\end{document}

文件“small.eps”如下:

%!PS-Adobe-2.0 EPSF-2.0
%%Title: test.eps
%%BoundingBox: 0 0 100 50
/Times-Roman findfont
15 scalefont
setfont
20 20 moveto
(typography) show
showpage
%EOF

碎片

但是,正如您所发现的,psfrag只有通过 编译时才有效latex -> dvips -> ps2pdf;它无法与 一起使用pdflatex。有一个名为工具可以解决这个问题。如果启用了 shell escape,此版本的示例将与 一起使用pdflatex

\documentclass{article}
\usepackage{pstool}
\begin{document}
\begin{center}
\includegraphics[width=70pt]{small.eps}
\end{center}
\begin{center}
\psfragfig*[width=70pt]{small}{\psfrag{typography}{\textit{typography}}}
\end{center}
\end{document}

答案2

要将 psfrag 与 pdflatex 一起使用,首先要

pdflatex -synctex=1 -interaction=nonstopmode --shell-escape %.tex

在 pdflatex 编译中您应该像之前的文本一样添加“--shell-escape %.tex”。

之后你应该加载 auto-pst-pdf 和 psfrag

\documentclass[border={0pt 5pt 0pt 0pt}]{standalone}
\usepackage{graphicx}
\usepackage{auto-pst-pdf} 
\usepackage{psfrag}
\begin{document}
\begin{psfrags}
    \psfrag{G}{0.2}
    \psfrag{H}{0.15}
    \includegraphics[width=15cm,height=12cm]{aeee.eps}
\end{psfrags}
\end{document}

相关内容