我有一个小图片,是我文档的一部分。这是PDF,是193行,并且有一些二进制数据与其postscript混合。我目前正在使用graphicx包,并将pdf作为单独的文件包含在内。有没有办法可以直接在我的乳胶源中内嵌它?
答案 0 :(得分:1)
这是我设计的解决方案:
pdftops
(xpdf包的一部分)将pdf转换为postscript,\special
宏嵌入postscript。缺点是使用\ 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)
好吧,我认为这可以做你想要的,但除非你真的需要做这样的事情,否则其他解决方案会更好。
为了能够使用此解决方案,您需要:
-shell-escape
命令行选项)中启用shell转义。出于安全原因,默认情况下禁用Shell转义。uuencode
和uudecode
程序。假设您的图片为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
正如我所说,有更好更好的解决方案,除非你真的必须有一个源文件,否则不要这样做。