TeX4ht: \includegraphics[page=10]{foo.pdf}

TeX4ht: \includegraphics[page=10]{foo.pdf}

У меня есть длинный документ LaTeX с большим количеством рисунков, которые были включены с помощью команд вида

\includegraphics[page=10]{foo.pdf}

Все отлично компилируется с pdfLaTeX. Я планировал преобразовать документ в HTML с помощью TeX4ht, но, похоже, TeX4ht не понимает атрибуты page=в \includegraphics.

Есть ли какие-то простые решения? В идеале я бы предпочел оставить свой основной исходный код Latex без изменений и просто подправить преамбулу.

решение1

Извините за опоздание. Следующий код, вероятно, поможет Юкке:

\makeatletter

\@ifundefined{Configure}
 {\def\Includegraphics[#1]#2{\includegraphics[page={#1}]{#2}}}
 {\def\Includegraphics[#1]#2{\def\GPT@page{#1}\includegraphics{#2}}
  \Configure{graphics*}
   {pdf}
   {\Needs{"
    pdftops -eps -f \GPT@page\space -l \GPT@page\space \[email protected] \Gin@base-\[email protected]"
    ;
    convert \Gin@base-\[email protected] \Gin@base-\[email protected]
    "}%
    \Picture[pict]{\Gin@base-\[email protected]}%
   }%
  }%
\makeatother

\Includegraphics[10]{foo.pdf}Теперь должно работать как с pdfLaTeX, так и с TeX4ht.

решение2

TeX4ht не использует pdfTeX в режиме PDF, а вместо этого использует dvips. Однако dvipsне может читать ни файлы PDF, ни многостраничные файлы. Страница 10 может быть извлечена и преобразована в eps с epstopdfпомощью xpdf:

epstopdf -eps -f 10 -l 10 foo.pdf foo-10.eps

Или ghostscriptможно использовать, например:

gs -dFirstPage=10 -dLastPage=10 -sDEVICE=epswrite -dBATCH -dNOPAUSE -sOutputFile=foo-10.eps foo.pdf

Далее в источнике:

\ifpdf
  \includegraphics[page=10]{foo.pdf}
\else
  \includegraphics{foo-10.eps}
\fi

И пакет ifpdfнеобходим в преамбуле:

\usepackage{ifpdf}

Связанный контент