Как бы вы поместили небольшую графику в ваш источник латексных документов? - PullRequest
2 голосов
/ 16 декабря 2009

У меня есть маленький рисунок, который является частью моего документа. Это PDF, 193 строки и некоторые двоичные данные, смешанные с его постскриптом. В настоящее время я использую пакет graphicx и включаю pdf в отдельный файл. Есть ли способ, которым я могу вставить это непосредственно в мой источник латекса?

Ответы [ 5 ]

1 голос
/ 17 декабря 2009

Вот решение, которое я разработал:

  1. конвертирует pdf в postscript, используя pdftops (часть пакета xpdf ),
  2. преобразовать постскриптум только в ASCII и
  3. встраивает постскриптум с использованием пакета graphicx и макроса \special.

Недостатком является то, что для встраивания postscript с использованием \ special требуется, чтобы я использовал 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}}

Я сделал гист на github , который предоставляет полный пример.

0 голосов
/ 17 декабря 2009

Хорошо, я думаю, что это делает то, что вы хотите, но если вам действительно не нужно делать что-то подобное, другие решения лучше.

Чтобы использовать это решение, вам необходимо:

  • включить экранирование оболочки в вашей команде 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

Как я уже сказал, есть намного более приятные и лучшие решения, и если у вас действительно нет необходимости иметь один исходный файл, не делайте этого.

0 голосов
/ 16 декабря 2009

Я не думаю, что есть способ встроить двоичные данные в LaTeX. Вы можете воссоздать графику как изображения векторного типа с различными пакетами (например, Asymptote, рекомендованным lpthnc). Если вы действительно сообразительны, вы можете написать TeX для хранения данных в формате массива и воссоздать их, но я не думаю, что есть пакет, чтобы сделать это просто.

0 голосов
/ 16 декабря 2009

Вы также должны взглянуть на пакет pdfpages. всевозможные варианты для включения PDF в ваш PDF документ.

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

0 голосов
/ 16 декабря 2009
...