Хорошо, я думаю, что это делает то, что вы хотите, но если вам действительно не нужно делать что-то подобное, другие решения лучше.
Чтобы использовать это решение, вам необходимо:
- включить экранирование оболочки в вашей команде Latex (
-shell-escape
опция командной строки). Экранирование оболочки по умолчанию отключено из соображений безопасности.
- имеет доступ к
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
Как я уже сказал, есть намного более приятные и лучшие решения, и если у вас действительно нет необходимости иметь один исходный файл, не делайте этого.