您可以嵌入图像以便无需将其存储为单独的文件吗?

您可以嵌入图像以便无需将其存储为单独的文件吗?

我想知道是否可以将图像文件嵌入到 LaTeX 代码中,这样图片就会出现在生成的 PDF 文件中,而无需在处理过程中将其存储在单独的 .eps 文件中。

原因是我正在动态生成 LaTeX 代码(使用 PHP)并在 chroot 环境中运行 pdflatex,因此在调用 pdflatex 之前,我必须复制所有所需的文件。由于我生成了许多不同的 PDF,它们都使用不同的图像文件。我的选择如下:

  • 对要复制的 .eps 文件进行硬编码,并在每次图像更改时更改 PHP 代码以匹配 LaTeX 代码(不好,难以维护)
  • 复制每一个 .eps 文件,无论是否使用(不好,慢)
  • 将图像嵌入源 LaTeX 代码中(理想)

我找到的所有资料\includegraphics似乎都表明只能从外部文件读取图像。有没有办法将 .eps 文件嵌入到 LaTeX 代码中?

答案1

下面是我在评论中所说的荒谬的例子(提醒;使用LaTeX-> PS -> PDF但不能LaTeX -> PDF用于发现目录中的文件):

\documentclass{article}
\usepackage{filecontents,graphicx}

\begin{filecontents*}{myepsfile.eps}
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Ipelib 70010 (Ipe 7.0.10)
%%CreationDate: D:20120309025807
%%LanguageLevel: 2
%%BoundingBox: 143 511 305 577
%%HiResBoundingBox: 143.8 511.8 304.2 576.2
%%EndComments
%%BeginProlog
%%BeginResource: procset ipe 7.0 70010
/ipe 40 dict def ipe begin
/np { newpath } def
/m { moveto } def
/l { lineto } def
/c { curveto } def
/h { closepath } def
/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
      neg 0 rlineto closepath } def
/d { setdash } def
/w { setlinewidth } def
/J { setlinecap } def
/j { setlinejoin } def
/cm { [ 7 1 roll ] concat } def
/q { gsave } def
/Q { grestore } def
/g { setgray } def
/G { setgray } def
/rg { setrgbcolor } def
/RG { setrgbcolor } def
/S { stroke } def
/f* { eofill } def
/f { fill } def
/ipeMakeFont {
  exch findfont
  dup length dict begin
    { 1 index /FID ne { def } { pop pop } ifelse } forall
    /Encoding exch def
    currentdict
  end
  definefont pop
} def
/ipeFontSize 0 def
/Tf { dup /ipeFontSize exch store selectfont } def
/Td { translate } def
/BT { gsave } def
/ET { grestore } def
/TJ { 0 0 moveto { dup type /stringtype eq
 { show } { ipeFontSize mul -0.001 mul 0 rmoveto } ifelse
} forall } def
<<
/PatternType 1
/PaintType 2
/TilingType 2
/BBox [ 0 0 100 4 ]
/XStep 99
/YStep 4
/PaintProc { pop 0 0 100 1 re fill} bind
>>
[ 0.5 -0.866025 0.866025 0.5 0 0 ]
makepattern
/Pat95 exch def
<<
/PatternType 1
/PaintType 2
/TilingType 2
/BBox [ 0 0 100 4 ]
/XStep 99
/YStep 4
/PaintProc { pop 0 0 100 1 re fill} bind
>>
[ 0.866025 0.5 -0.5 0.866025 0 0 ]
makepattern
/Pat96 exch def
/patg { [/Pattern /DeviceGray ] setcolorspace setcolor } def
/patrg { [/Pattern /DeviceRGB ] setcolorspace setcolor } def
end
%%EndResource
%%EndProlog
%%BeginSetup
ipe begin
%%EndSetup
0 J 1 j
q 192 576 m
192 512 l
256 512 l
256 576 l
h 0.4 w S
Q
q 144 544 m
192 544 l
0.4 w S
q q 192 544 m
185 546.331 l
185 541.669 l
h q f* Q S
Q
Q
Q
q 256 544 m
304 544 l
0.4 w S
q q 304 544 m
297 546.331 l
297 541.669 l
h q f* Q S
Q
Q
Q
showpage
%%Trailer
end
%%EOF
\end{filecontents*}

\begin{document}
\begin{figure}%
\includegraphics[width=\columnwidth]{myepsfile}%
\caption{adsf}%
\label{fig:asdfasd}%
\end{figure}
\end{document}

相关内容