LaTeXML \itemize 创建奇怪的

LaTeXML \itemize 创建奇怪的

我对 LaTeXML 处理列表的方式感到惊讶/困惑。举个例子test.tex

\documentclass{article}
\begin{document}

Hello itemize:
\begin{itemize}
  \item one
  \item two
\end{itemize}

\end{document}

运行命令

latexml test.tex | latexmlpost - --destination=test.html

生成以下 HTML: (剪辑到有趣的部分)

<article class="ltx_document">
<div id="p1" class="ltx_para">
<p class="ltx_p">Hello itemize:</p>
<ul id="I1" class="ltx_itemize">
<li id="I1.i1" class="ltx_item" style="list-style-type:none;">
<span class="ltx_tag ltx_tag_itemize">•</span> 
<div id="I1.i1.p1" class="ltx_para">
<p class="ltx_p">one</p>
</div>
</li>
<li id="I1.i2" class="ltx_item" style="list-style-type:none;">
<span class="ltx_tag ltx_tag_itemize">•</span> 
<div id="I1.i2.p1" class="ltx_para">
<p class="ltx_p">two</p>
</div>
</li>
</ul>
</div>
</article>

这很奇怪,因为不仅项目符号的排版明确(这是我没有想到的),更重要的是列表的内容被包裹在标签divp,这意味着项目符号和项目之间有换行符!

在此处输入图片描述

显然,如果我使用 latexml CSS 文件,这不是问题,但我想在无法自定义所用 CSS 的上下文中重新使用 HTML。

有人对如何“改善”这里的输出有什么想法吗?

我正在使用版本

latexml (LaTeXML version 0.8.2; revision 644644a)

答案1

正如楼主所见github 问题,你现在可以使用

latexmlpost --dest=test.html --xsltparameter=SIMPLIFY_HTML:true test

获取 html

<article class="ltx_document">
<div id="p1" class="ltx_para">
<p class="ltx_p">Hello itemize:</p>
<ul id="I1" class="ltx_itemize">
<li id="I1.i1" class="ltx_item">
<div id="I1.i1.p1" class="ltx_para">
<p class="ltx_p">one</p>
</div>
</li>
<li id="I1.i2" class="ltx_item">
<div id="I1.i2.p1" class="ltx_para">
<p class="ltx_p">two</p>
</div>
</li>
</ul>
</div>
</article>

这将跳过 的任何可选参数\item[]。如果有人想将两者混合,他们可能需要\usepackage{latexml},添加一些\lxAddClass{simpleList},然后为 latexmlpost 创建自定义 xslt 以供使用。

答案2

有趣的情况;显然,您所要求的是您给出的案例的“正确”结果。LaTeXML 更通用的方法是尝试对 LaTeX 通常遇到的各种情况进行建模。例如,任何项目化都可以包含\item[$a+b$]需要标记而不是属性值的任意项,因此需要项目符号的跨度。更不用说,作者可能已经重新定义了\labelitemi。同样,任何项目都可以包含多个段落,因此需要 div、p 元素。所以,至少这是 LaTeXML 内部 XML 的借口。其他处理器如何处理这种情况?

我猜想一个解决方案可能是让 LaTeXML 的 xslt 检查非特殊情况的条目,然后简化它们。嗯... 真的没有可能偷偷将一些 CSS 放进去吗?

答案3

我认为 Bruce 的回答很有说服力,他表示 latexml 的输出在一般意义上是正确的。但是,就我的目的而言,我愿意做出妥协,以便 HTML 能够合理显示,而无需相关 CSS 文件进行正确渲染。

对我来说,这涉及使用正则表达式来去除导致问题的多余标记:

sed -ie 's/<span class="ltx_tag ltx_tag_itemize">•<\/span>//g' test.html
sed -ie 's/class="ltx_item" style="list-style-type:none;"/class="ltx_item"/g' test.html

简而言之,这只是删除了明确的项目符号并删除了关闭自动项目符号的指令。毫无疑问,我可能需要类似的东西enumerate,但description它已经运行得很好了。

相关内容