带有图像的表格行的垂直对齐。由 htlatex 生成的 PDF 与 HTML

带有图像的表格行的垂直对齐。由 htlatex 生成的 PDF 与 HTML

我有一张有两列的表格。左列是文本,右列是图像。我希望行与顶部对齐。这样文本和图像就从同一水平开始。 根据这个答案我发现我可以使用adjustbox包来做到这一点。

上述解决方案有效,但仅在使用 pdflatex 时有效。在同一个 tex 文件上使用 htlatex 时,HTML 仍显示行未对齐。似乎 htlatex 不支持adjustbox。如果是这样,有人知道如何做到这一点,以便 HTML 和 pdf 看起来相同吗?

这是乳胶文件:

\documentclass[]{article}
\usepackage{graphicx}
\usepackage{longtable}
\usepackage{adjustbox}

\begin{document}
\begin{longtable}{|p{3in}|p{3in}|}
\\\hline
text text text text
& 
\adjustbox{valign=t}{\includegraphics[scale=0.6]{mma_e1}} 
\\\hline
\end{longtable}
\end{document}

使用的命令是

pdflatex foo.tex
htlatex foo.tex

Linux 上的 Texlive 2012。

这是生成的 PDF 和 HTML 的屏幕截图。你可以看到它们是不一样的 在此处输入图片描述

笔记:longtable由于表格有好几页长,我需要使用。使用tabulartabularx与其他东西一起m{}居中对齐将不起作用,尽管 htlatex 似乎可以使用此选项。longtable不支持m{}行对齐,否则我可以使用此选项。

附录 htlatex 生成的 HTML 源代码,如果需要,请复制如下

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
  "http://www.w3.org/TR/html4/loose.dtd">  
<html > 
<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 --> 
<meta name="src" content="index.tex"> 
<meta name="date" content="2013-05-17 01:15:00"> 
<link rel="stylesheet" type="text/css" href="index.css"> 
</head><body 
>
<a 
 id="x1-2r1"></a>   <!--l. 8--><div class="longtable"> <table id="TBL-1" class="longtable" 
cellspacing="0" cellpadding="0" rules="groups" 
><colgroup id="TBL-1-1g"><col 
id="TBL-1-1"></colgroup><colgroup id="TBL-1-2g"><col 
id="TBL-1-2"></colgroup>
<tr  
 style="vertical-align:baseline;" id="TBL-1-1-"><td  style="white-space:wrap; text-align:left;" id="TBL-1-1-1"  
class="td11">
<!--l. 8--><p class="noindent" >                                         </td>
</tr><tr 
class="hline"><td><hr></td><td><hr></td></tr><tr  
 style="vertical-align:baseline;" id="TBL-1-2-"><td  style="white-space:wrap; text-align:left;" id="TBL-1-2-1"  
class="td11">
<!--l. 9--><p class="noindent" >text text text text                                         </td><td  style="white-space:wrap; text-align:left;" id="TBL-1-2-2"  
class="td11">
<!--l. 11--><p class="noindent" >
<img 
src="index0x.png" alt="PIC" class="graphics" width="180.67683pt" height="180.67683pt" ><!--tex4ht:graphics  
name="index0x.png" src="mma_e1.eps"  
-->    </td>
</tr><tr 
class="hline"><td><hr></td><td><hr></td></tr><tr  
 style="vertical-align:baseline;" id="TBL-1-3-"><td  style="white-space:wrap; text-align:left;" id="TBL-1-3-1"  
class="td11">                                         </td>
</tr><tr  
 style="vertical-align:baseline;" id="TBL-1-4-"><td  style="white-space:wrap; text-align:left;" id="TBL-1-4-1"  
class="td11">                                         </td>
</tr><tr  
 style="vertical-align:baseline;" id="TBL-1-5-"><td  style="white-space:wrap; text-align:left;" id="TBL-1-5-1"  
class="td11">
<!--l. 13--><p class="noindent" >                                         </td>
</tr><tr  
 style="vertical-align:baseline;" id="TBL-1-6-"><td  style="white-space:wrap; text-align:left;" id="TBL-1-6-1"  
class="td11">
<!--l. 13--><p class="noindent" >                                         </td>
</tr><tr  
 style="vertical-align:baseline;" id="TBL-1-7-"><td  style="white-space:wrap; text-align:left;" id="TBL-1-7-1"  
class="td11">                                         </td><td  style="white-space:wrap; text-align:left;" id="TBL-1-7-2"  
class="td11"></td></tr>
   </table></div>

</body></html> 

答案1

我找到了解决方案。所以我把它发布在这里,希望将来有人会觉得它有用。

需要添加\Css以控制表行的垂直对齐方式。htlatex 默认使用<tr style="vertical-align:baseline;"HTML 中的默认设置。

添加\Css{td {vertical-align:middle;}}到 htlatex 配置文件可以修复此问题。

(请注意,它td在上面,而不是tr)。以下是网页的屏幕截图

在此处输入图片描述

以上内容\Css添加到 htlatex 配置文件的此处:

\Preamble{ext=htm,xhtml,charset="utf-8",p-width,pic-align}

\begin{document}
\EndPreamble
\Css{td {vertical-align: middle;}}  %add here

相关内容