私はXSLT(v1.0)が新しく、XSLTを使って複雑なXHTMLテーブルをLaTeXに変換することはできません。XSLTを使ってXHTMLテーブルをLaTeXに変換する
私が複雑なテーブルを言ったのは、異なる数の列を持つテーブルのことです。つまり、td
とcolspan
があります。
すなわち(XHTMLテーブル)
<table border="1" cellspacing="0" cellpadding="0">
<tr>
<td valign="top" width="68" colspan="3"> <p>Values</p> </td>
</tr>
<tr>
<td valign="top" width="68"> <p>95</p> </td>
<td valign="top" width="68"> <p>169</p> <p> </p> </td>
<td valign="top" width="68"> <p>180</p> <p> </p> </td>
</tr>
</table>
私はXSLファイルでやってる何がある:
<xsl:template match="xhtml:table[@border='1']">
<xsl:text>\begin{center}</xsl:text>
<xsl:text>\begin{tabular}{</xsl:text>
<xsl:for-each select="xhtml:tr[1]/*">
<xsl:text>c</xsl:text>
<xsl:if test="position() = last()">
<xsl:text>} </xsl:text>
</xsl:if>
</xsl:for-each>
<xsl:text>\toprule </xsl:text>
<xsl:for-each select="xhtml:tr">
<xsl:if test="position() != 1">
<xsl:text>\midrule </xsl:text>
</xsl:if>
<xsl:if test="position() = 2">
<xsl:text>\midrule </xsl:text>
</xsl:if>
<xsl:for-each select="xhtml:td|xhtml:th">
<xsl:if test="name() = 'th'">{\bf </xsl:if>
<xsl:apply-templates />
<xsl:if test="name() = 'th'">}</xsl:if>
<xsl:if test="position() != last()">
<xsl:text>&</xsl:text>
</xsl:if>
</xsl:for-each>
<xsl:text> \\ </xsl:text>
</xsl:for-each>
<xsl:text>\bottomrule </xsl:text>
<xsl:text>\end{tabular} </xsl:text>
<xsl:text>\end{center} </xsl:text>
</xsl:template>
しかし、あなたが見ることができるように、このコードは欠かせ、簡単な表のために働きますcolspan属性。コードは最初のtr
の周りをループし、td
のそれぞれについて、 "c"を書き込みます。したがって、上記の場合、1つの列テーブルのみが作成されます。
td
の数と、存在する場合はcolspansの数を数え、3列の正しい表を作成します。
これを行う方法を知っている人はいますか?前もって感謝します。
:-) 1993年に廃止されました(これは非常にアクティブなXSLTタグを持っています)それはTeXの質問ではありません –