tex4ht,使用 pic-tabular 选项在表格中包含图形

tex4ht,使用 pic-tabular 选项在表格中包含图形

我正在尝试使用 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*}并不是必需的。

结果如下:

在此处输入图片描述

相关内容