如何自动调用不同文件名但位于同一艺术文件夹中的印刷品和网页图形

如何自动调用不同文件名但位于同一艺术文件夹中的印刷品和网页图形

我使用两种类型的图形:用于网络的彩色图形和用于打印的黑白图形。

但是,这两个文件都位于同一文件夹中,其命名如下。

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)。

相关内容