我正在尝试使用 tex4ht 将 Latex 文档转换为电子书。该文档包含许多表格,对于电子书来说,这些表格太大太复杂了。经过一番研究,我发现了“pic-tabular”选项,它看起来很有希望,只是表格中不显示图形。在使用 pic-tabular 选项时,有没有办法包含图形?
Latex 文件:
\documentclass{book}
\begin{document}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{units}
\usepackage{graphicx}
\usepackage{booktabs}
\begin{table}[h]
\centering
\caption{caption}
\begin{tabular}{|l|l|l|}
\hline
text & \includegraphics[width=\linewidth]{picture} & text \\
\hline
\end{tabular}
\end{table}
\end{document}
配置.cfg:
\Preamble{xhtml,pic-tabular}
\Configure{graphics*}
{jpg}
{%
\Picture[pict]{\csname Gin@base\endcsname .jpg
\space width="\the\dimexpr \expandafter\csname
Gin@req@width\endcsname * 1.5"
}%
}
\Configure{graphics*}
{png}
{%
\Picture[pict]{\csname Gin@base\endcsname .png
\space width="\expandafter\the\csname Gin@req@width\endcsname"
}%
}
\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}
}
\begin{document}
\CssFile[custom.css]
/* css.sty */
\EndCssFile
\Configure{CoverMimeType}{image/jpg}
\EndPreamble
自定义.css
div.figure img {
text-align:center;
}
body {
font-family: "Georgia", Times, serif;
font-size: 1em;
line-height: 1.35em;
}
body
{
font-family: "Georgia", serif;
font-size: 1em;
line-height: 1.35em;
hyphens: auto;
text-align: left;
}
h2.titleHead
{
line-height: 1.5em;
}
h1,
h2,
h3,
h4
{
text-align: left;
}
table
{
width: 100%
margin-top: 1em;
margin-bottom: 1em;
/*font-family: "Arial Narrow"; use a narrow font, if space is an issue*/
}
div.caption
{
margin-bottom: 1em;
font-style: italic;
}
答案1
问题是图片需要通过 DVI 处理命令进行处理,例如 Dvipng 或 Dvisvgm。这意味着必须以图片能够理解的方式插入图片,在这种情况下不能使用 tex4ht 配置。这也意味着必须将所有图片转换为 EPS 格式(我也尝试过 TIFF,但似乎无法正常工作)。
因为tex4ht重新定义\includegraphics
的方式无法在图片内部使用,所以我的解决方案是保存原始\includegraphics
定义并在命令中使用\Picture*
。以下是完整配置:
\let\origincludegraphics\includegraphics
\Preamble{xhtml,pic-tabular}
\Configure{graphics*}
{jpg}
{%
\Picture[pict]{\csname Gin@base\endcsname .jpg
\space width="\the\dimexpr \expandafter\csname
Gin@req@width\endcsname * 1.5"
}%
\special{t4ht+@File: \csname Gin@base\endcsname.jpg}
}
\Configure{graphics*}
{png}
{%
\Picture[pict]{\csname Gin@base\endcsname .png
\space width="\expandafter\the\csname Gin@req@width\endcsname"
}%
\special{t4ht+@File: \csname Gin@base\endcsname.png}
}
\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}
}
\Configure{Picture*}{\let\includegraphics\origincludegraphics}{}
\Configure{Picture+}{\let\includegraphics\origincludegraphics}{}
\begin{document}
\CssFile[custom.css]
/* css.sty */
\EndCssFile
\Configure{CoverMimeType}{image/jpg}
\EndPreamble
重要的几行如下:
\let\origincludegraphics\includegraphics
...
\Configure{Picture*}{\let\includegraphics\origincludegraphics}{}
\Configure{Picture+}{\let\includegraphics\origincludegraphics}{}
它将保存\includegraphics
为\origincludegraphics
,然后将 tex4ht 版本重新定义\includegraphics
回图片内的原始版本。
我还更新了图片配置以使用\special{t4ht+@File: \csname Gin@base\endcsname.ext}
,因为所有应打包到 Epub 中的文件都需要以这种方式注册。HTML 和 CSS 文件开箱即用,但图片配置需要明确注册。事实上,tex4ht
已经包含类似的配置,因此您的配置\Configure{graphics*}
并不是必需的。
结果如下: