我一直在看这些帖子
如何使用 latex.exe 和 dvips 来生成 EPS 而不是 PS?
为了理解如何pdf
从eps
图形创建独立文件以及如何eps
从尚未替换标签的文件获取文件。上述帖子非常有用eps
。psfrag
我的eps
图形通常使用 Adobe Illustrator (AI) 制作,然后使用psfrag
latex 字体将 AI 图形中的原始标签替换为我需要的标签。效果很好。
这种工作流程的问题在于,eps
AI 的原始文件还没有正确的标签。这意味着我无法将eps
AI 中的这个文件发送给其他人。基于上述帖子,我创建了一个我认为不错的工作流程,以便生成一个独立eps
文件,其中所有psfrag
标签均已正确插入。我的目标是在最终eps
文件中仍嵌入所有字体。以下是我参考jeffcott.eps
此处存储的文件的工作流程:
http://petitlien.fr/epspicture
(A)检查 jeffcott.eps 的边界框
gswin32c -dNOPAUSE -dBATCH -q -sDEVICE=bbox jeffcott.eps
%%BoundingBox: 0 0 373 190
%%HiResBoundingBox: 0.000000 0.000211 372.617989 189.934025
(B). 转换为独立 pdf
\documentclass[convert]{standalone}
\usepackage[hiresbb,dvips]{graphicx}
\usepackage[dvips]{color}
\usepackage{psfrag}
\begin{document}
\psfrag{A}{$m$}
\psfrag{B}{$k,c$}
\psfrag{Y}{inner stator bore}
\includegraphics{E:/jeffcott.eps}
\end{document}
(C)eps
从上述结果pdf
文件中创建一个文件
pdfcrop --hires "standpdf.pdf" "standpdf-temp.pdf"
接下来发出pdftops
命令:
pdftops -level3 -eps standpdf-temp.pdf standpdf.eps
现在,standpdf.eps
已创建,但 Ghostscript 警告它无法找到其 bbox。问题是行%%BoundingBox
和%%HiResBoundingBox
似乎离顶部标题行很远。我有两个解决方案:
I:将与 bbox 对应的这两行移动到第一个 header 行之后
二:使用ps2eps
ps2eps -f --fixps standpdf.eps
该文件standpdf.eps.eps
由 Ghostscript 创建ps2eps
,并且能够加载该文件而不会出现任何异常。
检查 bbox 得出:
gswin32c -dNOPAUSE -dBATCH -q -sDEVICE=bbox standpdf.eps.eps
%%BoundingBox: 0 0 373 190
%%HiResBoundingBox: 0.000000 0.000352 372.617989 189.935994
但是当我在文本编辑器中打开该文件时standpdf.eps.eps
,我可以看到 bbox
%%BoundingBox: 0 1 372 190
%%HiResBoundingBox: 0.000000 1.000000 372.000000 190.000000
我的问题:
从上面可以看出
part (c)
,Ghostscript 并不总是读取文件的正确 bboxeps
。为什么会这样?ps2eps
在文件上使用该命令是否正确eps
。我尝试过使用,epstool
但似乎该工具只能将 bbox 从一个文件复制到另一个文件,而不能修复它。我想在一台
Windows
机器上创建一个批处理文件,以自动执行部分 (B) 和 (C) 中的任务并standpdf-temp.pdf
在此过程中删除临时文件。我查看了本文开头提到的一些帖子中列出的批处理文件,但它们不起作用。更进一步
Question 3
,我想创建一个批处理文件,它将处理pdf
文件夹中的所有文件并创建相应的eps
文件。如何做到这一点?还有一个相关的问题:在哪里可以学到如何创建批处理文件
Windows
?我还没有找到任何全面的信息来源。
更新:
xport 提供的批处理文件运行良好。但是有一个小错误。查看BatchF.bat
,在使用处理后ps2eps
,后面的行根本没有得到处理。Ps2eps
将控制权交还给命令提示符,但批处理文件在那里停止。如何修复?
由于这篇文章太长了,我创建了一个新文章:
谢谢。
答案1
我将为您提供 6 个批处理文件。每个文件都采用 (La)TeX 输入文件名没有扩展名。它将编译单个 (La)TeX 输入文件以生成 PDF 和 EPS 格式的输出。在开发阶段,您可以使用 6 个批处理文件中的每一个编译相同的 (La)TeX 输入文件,并研究哪一个最适合您。6 个批处理文件中的每一个都在内部使用不同的步骤处理单个 (La)TeX 输入文件。在下一个解释中,描述将更清楚。
在生产阶段,您应该已经决定将其中哪一个应用于您拥有的一堆 (La)TeX 输入文件。由于将批处理文件应用于一堆 (La)TeX 输入文件是一项非常繁琐的工作,因此我为您提供了一个额外的批处理文件来自动化该过程。因此总共有 7 个批处理文件。
批处理文件A
rem batchA.bat
rem echo off
latex -interaction=nonstopmode %1
dvips -R -t unknown %1
ps2pdf -dAutoRotatePages#/None -dCompatibilityLevel#1.5 -dPDFSETTINGS#/prepress %1.ps %1-temp.pdf
pdfcrop --restricted --hires %1-temp %1.pdf
pdftops -level3 -eps %1.pdf
rem acrord32 %1.pdf
del %1.log
del %1.aux
del %1.dvi
del %1.ps
del %1-temp.pdf
- 它可以用于任何纸张尺寸的输入文件。
- 脚步:
TEX -> DVI -> PDF -> cropping -> EPS
。 pdfcrop
裁剪需要花费大量时间。如果您不需要裁剪,请不要使用此批处理文件。
批处理文件
rem batchB.bat
echo off
latex -interaction=nonstopmode %1
dvips -R -t unknown %1
ps2pdf -dAutoRotatePages#/None -dCompatibilityLevel#1.5 -dPDFSETTINGS#/prepress %1.ps
pdftops -level3 -eps %1.pdf
rem acrord32 %1.pdf
del %1.log
del %1.aux
del %1.dvi
del %1.ps
- 它只能用于具有紧的纸张尺寸。
- 脚步:
TEX -> DVI -> PDF -> EPS
。 - 它比 运行得更快,
batchA.bat
因为无需裁剪pdfcrop
。缺点是您必须严格指定纸张尺寸。
批处理文件
rem batchC.bat
echo off
latex %1
dvips -t unknown %1
gswin32c -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=%1.pdf %1.ps
pdftops -eps %1.pdf
rem acrord32 %1.pdf
del %1.log
del %1.aux
del %1.dvi
del %1.ps
- 它几乎与相同,
batchB.bat
但是开关更少,以加快编译速度。 - 它只能用于具有紧的纸张尺寸。
- 脚步:
TEX -> DVI -> PDF -> EPS
。 - 它比 运行得更快,
batchA.bat
因为无需裁剪pdfcrop
。缺点是您必须严格指定纸张尺寸。
批处理文件
rem batchD.bat
echo off
tex %1
dvips -t unknown %1
gswin32c -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=%1.pdf %1.ps
pdftops -eps %1.pdf
rem acrord32 %1.pdf
del %1.log
del %1.aux
del %1.dvi
del %1.ps
- 它与 几乎相同,
batchC.bat
但使用tex.exe
代替latex.exe
。输入文件必须是纯 TeX 格式。我希望它比 更快methodC.bat
,但尚未测试,因为我在将输入文件从 LaTeX 转换为纯 TeX 时遇到了很多麻烦。基准测试将很快完成。 - 它只能用于具有紧的纸张尺寸。
- 脚步:
TEX -> DVI -> PDF -> EPS
。 - 它比 运行得更快,
batchA.bat
因为无需裁剪pdfcrop
。缺点是您必须严格指定纸张尺寸。
批处理文件
rem batchE.bat
rem echo off
latex -interaction=nonstopmode %1
dvips -R -t unknown -E %1 -o %1-temp.eps
epstool --copy --bbox %1-temp.eps %1.eps
epstopdf --hires %1.eps
rem acrord32 %1.pdf
del %1.log
del %1.aux
del %1.dvi
del %1-temp.eps
- 它可以用于任何纸张尺寸的输入文件。
- 脚步:
TEX -> DVI -> EPS -> bounding box correction -> PDF
。 - 生成的 EPS 文件大小比前 4 个批处理文件(a、b、c、d)生成的 EPS 文件大小更大。
批处理文件
rem batchF.bat
echo off
latex -interaction=nonstopmode %1
dvips -R -t unknown %1 -o %1-temp.ps
ps2eps %1-temp.ps
epstool --copy --bbox %1-temp.eps %1.eps
epstopdf --hires %1.eps
rem acrord32 %1.pdf
del %1.log
del %1.aux
del %1.dvi
del %1-temp.ps
del %1-temp.eps
- 它可以用于任何纸张尺寸的输入文件。
- 脚步:
TEX -> DVI -> PS -> EPS -> bounding box correction -> PDF
。 - 生成的 EPS 文件大小比前四个批处理文件(a、b、c、d)生成的 EPS 文件大小更大。
batchE.bat
我忘记了与进行比较的基准结果batchF.bat
。
自动化脚本
rem automate.bat
rem it takes a single character from {a,b,c,d,e,f}.
rem the options are case-insensitive.
rem for example: automate a
rem another example: automate F
echo off
for %%x in (*.tex) do batch%1.bat %%~nx
pause
如果您有任何问题,请发表评论。
针对您的误用进行更新。
batchA.bat
{ , batchB.bat
, batchC.bat
, batchD.bat
, batchE.bat
, }中的每个batchF.bat
都接受一个不带扩展名的输入文件名。例如,如果您想使用batchE.bat
for helloworld.tex
,则必须输入batchE helloworld
并按回车键。
如果您想要使用batchE.bat
存在于所有批处理文件所在的同一目录中的一组输入文件,则请键入automate E
并按回车键。
答案2
部分回答了...其余的将稍后添加...
如何创建批处理文件
请先浏览下面的示例并尝试理解,而无需阅读后面的解释。
rem this is a batch file named xport.bat
rem it need a single argument which is a name of TeX input file.
rem don't include the trailing .tex please!
echo off
latex %1
dvips -t unknown %1
gswin32c -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=%1.pdf %1.ps
pdftops -eps %1.pdf
acrord32 %1.pdf
del %1.log
del %1.aux
del %1.dvi
del %1.ps
rename %1.pdf xport.pdf
解释:
批处理文件可以采用可选参数。如果使用
xport.bat
以下参数执行,xport mytexinputfilewithoutextension
将
%1
被设置为mytexinputfilewithoutextension
。rem
是批量注释的关键字。它与%
TeX 中的类似。echo off
用于不显示正在执行的命令的语法。latex %1
代表执行的文件为latex
.和不需要文件扩展名,但是、和、需要文件扩展名。%1
myinputfilewithoutextension
latex
dvips
gswin32c
pdftops
acrord32
del
rename
del %1.log
用于删除文件%1.log
。并
rename %1.pdf xport.pdf
用于重命名%1.pdf
为xport.pdf
。
答案3
有一个很好的工具可以解决这些问题墨景它是一款矢量图形编辑器,但也可以在命令行上运行。它适用于 Linux、Max 和 Windows。但是,它本身需要使用 Ghostscript 等附加软件。
如果您使用该-D
选项,则文件将被拖至绘图。它可以导出 EPS 和 PDF 以及 SVG,这对网站来说很有用。
步骤如下:
latex file
dvips file
inkscape -D --export-eps file.eps file.ps
这给了我一个 A4 文档中带有单个绘图的漂亮 EPS 文件。如果您替换--export-eps
为--export-pdf
,您将获得 PDF 输出。