我正在创建一个需要渲染图像的新文档类(例如标题页上有一个 (徽标) 。将图像与类一起分发的正确方法是什么?图像文件是否应与文件一起分发.cls
?这对我来说似乎是一种黑客行为,因为用户必须将该图像文件与使用该类的每个文档放在同一目录中,对吗?
我似乎记得(几年前)读过一种将图像嵌入文件.tex
本身的方法。这种方法似乎也容易出错,因为人们必须知道文档是使用pdftex
(要求图像是文件.pdf
)还是latex
(要求.eps
文件)呈现的。
我最终采用的方法是将徽标转换为 Ti钾z 代码,我将其嵌入到.cls
文件中。缺点是我的课程现在需要tikz
依赖项,而许多使用旧 LaTeX 安装的用户没有tikz
安装。
我的方法很有效,因为我的原始图像是简单的矢量图。如果它是光栅图像,该怎么办?
处理这个问题的正确方法是什么?
答案1
方法有很多种,其中‘最佳’方法取决于目标社区的性质。
方法一是使用.dtx
文件分发您的类。然后您可以.eps
在源中包含文件,并在解压时将其提取出来。我在chemstyle
包。现在,你最终需要使用latex
而不是pdflatex
在这种情况下,虽然可以使用自动转换auto-pst-pdf
包或 TeX Live 2010 中无需额外努力。
第二种方法是将您的文件作为可立即安装的“TDS 样式”.zip
文件分发。这里的想法是,您将所有内容包含在.zip
具有正确文件夹结构的文件中,只需在用户 PC 上的本地 texmf 文件夹中解压即可。在这种情况下,您可以同时包含图片的.eps
和.pdf
版本。此方法也最适合光栅图像,因为您可以拥有一个.jpeg
并将pdflatex
其转换为用户.eps
格式latex
。
第三种方法是像你说的那样使用tikz
。这样就不需要文件本身以外的任何东西.cls
,并且使用latex
和时也很容易pdflatex
。缺点是需要相当新的发行版。不过,您可能会发现最好要求某些东西是最新的,因为其他软件包也会随着时间的推移而发生很大变化。
最后,您可以不用太担心,只需提供一个.zip
包含必要附加内容的标准文件即可。这在期刊中很常见。然后由用户将正确的文件放在正确的位置,但这可能是最简单、最通用的方法。
正如我所说,在特定情况下什么是最好的,在某种程度上取决于具体情况。例如,通常只有组织内部才需要徽标。我开设了一个期刊课程,在“实际内容”中包含徽标,但这只是出版商最终印刷时才需要的。因此,用户版本只有一个空格!
答案2
我不知道正确的处理这个问题的方法是,但这里有一个想法。用 结束你的 .cls 文件\endinput
。之后,包含 eps 的内容。之后,放入一个标记线,然后包含 pdf 的内容。
然后,对于需要显示图像的代码,使用\openin
e-TeX 扩展\readline
逐行读取类文件,直到到达\endinput
。然后,您要写入的\openout
文件foo.eps
,读取并写入每一行,直到到达标记。然后,您写入\closeout
eps 文件,\openout
文件foo.pdf
,读取并写入每一行,直到\ifeof
为真。(e-TeX 扩展\unless
在循环中非常方便,例如\loop\unless\ifeof\file ...\repeat
。)最后是\closeout
pdf 和\closein
类文件。
然后您只需使用\includegraphics{foo}
它就会选择正确的一个。
有一些细节需要注意,比如处理\endlinechar
,但原则上,它应该可以工作。