你会如何在乳胶文件来源中放置一个小图形?

时间:2009-12-16 14:29:08

标签: latex pdflatex

我有一个小图片,是我文档的一部分。这是PDF,是193行,并且有一些二进制数据与其postscript混合。我目前正在使用graphicx包,并将pdf作为单独的文件包含在内。有没有办法可以直接在我的乳胶源中内嵌它?

5 个答案:

答案 0 :(得分:1)

这是我设计的解决方案:

  1. 使用pdftopsxpdf包的一部分)将pdf转换为postscript,
  2. convert the postscript to ASCII-only
  3. 使用graphicx包和\special宏嵌入postscript。
  4. 缺点是使用\ special嵌入postscript需要我发出dvi而不是pdf。很高兴改进这个解决方案以允许直接发射pdf。

    乳胶来源看起来像这样。

    \noindent\vbox to 112pt{\vfil\hbox to 248pt{\special{" gsave
    currentfile /ASCIIHexDecode filter cvx exec
           25  21  50  53  2d  41  64  6f  62  65  2d  33  2e  30  20  45
           50  53  46  2d  33  2e  30  0a  25  20  50  72  6f  64  75  63
           65  64  20  62  79  20  78  70  64  66  2f  70  64  66  74  6f
           70  73  20  33  2e  30  32  0a  25  25  43  72  65  61  74  6f
    ...
           65  72  0a  65  6e  64  0a  25  25  44  6f  63  75  6d  65  6e
           74  53  75  70  70  6c  69  65  64  52  65  73  6f  75  72  63
           65  73  3a  0a  25  25  45  4f  46  0a
    >
    grestore
    }
    \hfil}}
    

    我制作了一个gist at github,提供了一个完整的例子。

答案 1 :(得分:0)

答案 2 :(得分:0)

我认为没有办法在LaTeX中内联二进制数据。您可以使用各种包(例如lpthnc推荐的Asymptote)将图形重新创建为矢量类型图像。如果你真的很聪明,你可以编写一些TeX来以数组格式存储数据并重新创建它,但我认为没有一个软件包可以简单地完成它。

答案 3 :(得分:0)

您还应该查看pdfpages包。在PDF文档中包含PDF的各种选项。

pdfpages:http://www.ctan.org/tex-archive/macros/latex/contrib/pdfpages/pdfpages.pdf

答案 4 :(得分:0)

好吧,我认为这可以做你想要的,但除非你真的需要做这样的事情,否则其他解决方案会更好。

为了能够使用此解决方案,您需要:

  • 在Latex命令(-shell-escape命令行选项)中启用shell转义。出于安全原因,默认情况下禁用Shell转义。
  • 可以访问您正在编译文件的uuencodeuudecode程序。

假设您的图片为graphic.png,主要文档为doc.tex。首先,编码graphic.png并将其追加到末尾(编码数据全是文本):

$ cat graphic.png | uuencode graphic.jpg >>doc.tex

然后,在doc.tex

中包含图形之前,请确保已拥有此功能
\immediate\write18{cat \jobname.tex | uudecode}

例如,这是我创建的文档:

\documentclass{article}
\immediate\write18{cat \jobname.tex | uudecode}
\usepackage{graphicx}
\begin{document}
\includegraphics[width=\textwidth]{graphic}
\end{document}
%%% Do not touch the data below, this is added by uuencode.
begin 644 graphic.png
..... (stripped a lot of lines) ...
`
end

然后,这将有效:

$ pdflatex -shell-escape doc

正如我所说,有更好更好的解决方案,除非你真的必须有一个源文件,否则不要这样做。