我正在尝试通过以下方式生成 HTML 输出
htlatex <filename>
但当pgfpages
包含包时,我之前会收到一些随机图像和内容之后。结果HTML在 Safari 中查看如下:
我查看了一下pdfpages.sty
,发现有一个\AtBeginDocument
,但不知道它是如何将这些随机图像插入到内容之前的。此外,也没有找到,\AtEndDocument
所以无法理解内容处理后发生了什么。
代码:
\documentclass{article}
\usepackage{pdfpages}
\begin{document}
% \includepdf{foo.pdf}% Cover page
Some content following cover page.
\end{document}
答案1
pdfpages
显然是导致加载失败的包之一tex4ht
。此类包的其他一些示例是fontspec
。唯一的解决方案是在加载时阻止使用此类包tex4ht
,并为文档中使用的宏提供替代定义。
为了简化这个过程,我创建了简单的包,称为alternative4ht.sty
:
\ProvidesPackage{alternative4ht}
\newcommand{\altusepackage}[2][]{%
\ifx\HCode\relax%
\usepackage[#1]{#2}%
\else%
\IfFileExists{#2-alt4ht.sty}{%
\usepackage[#1]{#2-alt4ht}%
}{\typeout{alternative4ht: no patch file for #2}}
\fi%
}
\endinput
定义了一个命令,\altusepackage
它使用普通 LaTeX 加载包,但使用tex4ht
它来加载替代定义,如果不存在这样的替代定义,它什么也不做。
您可以修改您的来源:
\documentclass{article}
\usepackage{alternative4ht}
\altusepackage{pdfpages}
\begin{document}
%\includepdf{foo.pdf}% Cover page
Some content following cover page.
\end{document}
\includepdf
您可以在文件中提供定义pdfpages-alt4ht.sty
:
\ProvidesPackage{pdfpages-alt4ht}
\RequirePackage{graphicx}
\newcommand\includepdf[2][]{%
\includegraphics{#2}
}
\endinput
并且您需要使用自定义配置文件添加对 pdf 图像包含的支持peter.cfg
:
\Preamble{xhtml}
\makeatletter
\Configure{graphics*}
{pdf}
{\Needs{"convert \csname Gin@base\endcsname.pdf
\csname Gin@base\endcsname.png"}%
\Picture[pict]{\csname Gin@base\endcsname.png}%
\special{t4ht+@File: \csname Gin@base\endcsname.png}
}
\makeatother
\begin{document}
\EndPreamble
现在你可以使用以下命令编译该文档:
htlatex <filename> peter
生成的 html 内容如下:
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd-->
<html xmlns="http://www.w3.org/1999/xhtml"
>
<head> <title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" />
<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" />
<!-- html,xhtml -->
<meta name="src" content="sample.tex" />
<meta name="date" content="2014-10-06 09:55:00" />
<link rel="stylesheet" type="text/css" href="sample.css" />
</head><body
>
<!--l. 6--><p class="noindent" ><img
src="foo.png" alt="pict"
/>
</p><!--l. 8--><p class="indent" > Some content following cover page. </p>
</body></html>