我使用两种类型的图形:用于网络的彩色图形和用于打印的黑白图形。
但是,这两个文件都位于同一文件夹中,其命名如下。
abcdef.eps
用于印刷图形
abcdef_online.eps
用于网页图形
期间,我需要调用 Web PDFabcdef_online.eps
并打印abcdef.eps
。
是否有任何自动化脚本可以从同一个文件夹中自动选择不同阶段的图形?
请注意,对于网络 PDF,并非所有图形都是彩色的,例如 6 个图形中只有 3 个图形(1、3 和 5)是彩色的。
one_online.eps
two.eps
three_online.eps
four.eps
five_online.eps
six.eps
有人可以指导我吗?
答案1
如果你是仅有的使用 EPS 图像的编译序列进行工作和提供图像名称没有扩展,以下重新定义\includegraphics
将会起作用:
\usepackage{graphicx}% http://ctan.org/pkg/graphicx
\let\oldincludegraphics\includegraphics
\makeatletter
\renewcommand{\includegraphics}[2][]{%
\IfFileExists{#2_online.eps}{\oldincludegraphics[#1]{#2_online.eps}}{% 1 Online/colour
\oldincludegraphics[#1]{#2.eps}% 2 Regular
}% 3
}
您将使用
\includegraphics{abcdef}
包含图像(无扩展名)。 的更新版本\includegraphics
将检查是否abcdef_online.eps
存在,并包含它,否则将默认为abcdef.eps
。 注释掉第 1 行和第 3 行将完全删除颜色选项(适用于印刷媒体)。
上述限制将您限制在特定的编译顺序中(例如,对于 PDF 输出,LaTeX > dvips > epstopdf)。如果您希望使用 pdflatex 并提供了相应的 PDF 图像,则可以在 的重新定义中更改相应的行\includegraphics
。如果您希望上述技术在本质上更具通用性(因此可以自动适用于任何序列),则必须根据图形驱动程序指示的扩展名搜索文件的存在 - 虽然成本稍高,但可行。
答案2
这取决于你如何制作文件。下面是我的做法。
\documentclass{article}
\usepackage{graphicx}
\newcommand{\cincludegraphics}[2][]{%
\ifdefined\onlineversion
\IfFileExists{#2_online.eps}%
{\includegraphics[#1]{#2_online}}%
{\includegraphics[#1]{#2}}%
\else
\includegraphics[#1]{#2}%
\fi
}
\begin{document}
Something with a picture
\cincludegraphics{abcdef}
\end{document}
如果我编译此文件,one.tex
例如
latex one
文件abcdef.eps
将被加载。如果我用
latex -jobname one-online "\def\onlineversion{}\input{one}"
然后abcdef_online.eps
将被加载(或者,如果不存在,则abcdef.eps
)。