我使用了 tex4ht。
我需要创建列宽固定的长表。但是指定的宽度被忽略了。
例子:
\documentclass[9pt,oneside,a4paper,english,notitlepage]{book}
\usepackage{longtable}
\usepackage{array}
\begin{document}
\begin{longtable}{|l|p{10cm}|m{5cm}} \\\hline
First & Second text cell with width of 10 cm& Third cell with width of 5 cm\\ \hline
\end{longtable}
\end{document}
出了什么问题?有人能帮助我吗?
答案1
您可以使用p-width
命令行选项来保存列宽p
:
htlatex filename "xhtml,p-width"
默认情况下不支持m
列,但您可以使用此配置文件轻松添加对它们的支持my.cfg
:
\Preamble{xhtml,p-width}
\catcode`\:=11
\Configure{halignTD} {}{}
{<}{\HCode{ style="white-space:nowrap; text-align:left;"}}
{-}{\HCode{ style="white-space:nowrap; text-align:center;"}}
{>}{\HCode{ style="white-space:nowrap; text-align:right;"}}
{^}{\HCode{ style="vertical-align:top; white-space:nowrap;"}}
{=}{\HCode{ style="vertical-align:baseline; white-space:nowrap;"}}
{||}{\HCode{ style="vertical-align:middle; white-space:nowrap;"}}
{_}{\HCode{ style="vertical-align:bottom; white-space:nowrap;"}}
{p}{\HCode{ style="white-space:wrap; text-align:left;"}\Protect\a:HColWidth}
{m}{\HCode{ style="white-space:wrap; text-align:left; vertical-align:middle;"}\Protect\a:HColWidth}
{b}{\HCode{ style="white-space:wrap; text-align:left; vertical-align:baseline;"}}
{}
\catcode`\:=12
\begin{document}
\EndPreamble
魔法就在 中\Protect\a:HColWidth
。因为p-width
选项已插入\Preamble
命令中,所以您不再需要在命令行中指定它。使用以下方法进行编译
htlatex filename my
结果:
旧答案,我错了
由于tex4ht
重新定义了很多东西,我们似乎无法访问p
列的尺寸。设置样式的唯一方法是使用自定义 .cfg 文件和 CSS 样式。您的示例创建了这样的HTML
表:
<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><colgroup id="TBL-1-3g"><col
id="TBL-1-3" /></colgroup>
...
元素很重要<col id="TBL-1-2" />
,因为您可以使用它们来设置列的样式。 被id
解释为TBL
+ 表格数 + 列数。因此这是文档中第一个表格的第二列。现在,您可以使用此类.cfg
文件(例如hello.cfg
)轻松设置其样式:
\Preamble{xhtml}
\Css{\#TBL-1-2{width:10cm;}}
\Css{\#TBL-1-3{width:5cm;}}
\begin{document}
\EndPreamble
使用命令进行编译:
htlatex filename hello
结果:
请注意,您应该在文档完成后设置表格样式,因为如果您在已经具有样式的其他表格之前添加新表格,则该样式将用于另一个表格!