我花了一个小时在这上面,却不知道如何让 tex4ht 简单地减少两个段落之间的间距(在选定的位置,而不是在整个文档的全局范围内)。
我尝试了我所知道的所有方法,它们在 pdf 中都可以正常工作,但是 tex4ht 只是忽略了我所有的 latex 命令来减少该位置的垂直空间。
这肯定是那些在 PDF 中可以正常工作但在 tex4ht 到 HTML 中却不行的事情之一。在我花更多时间尝试是否需要添加直接 HTML 代码来执行此操作之前,我想问一下。这是 MWE
\documentclass[11pt]{article}
\setlength\parindent{0pt}
\begin{document}
line one
line two
\vspace*{-.1in}
line three
\end{document}
在 PDF 中,它按预期工作:
但make4ht bug.tex
忽略了它并给出了这个 HTML
HTML 允许人们减少垂直空间,使用类似p { margin-top: -20px; }
或类似网络上位置显示的内容。例如如何减少 p 标签之间的间距。我不是 HTML 或 CSS 专家,这就是为什么我使用 tex4ht 将 Latex 转换为 HTML,这样我就不必编写 HTML。
问题是: 能否使用 latex 命令让 tex4ht 减少选定位置的垂直空间,还是需要在该位置插入一些特定的 HTML 代码才能实现?如果可以,该怎么做?
2016年纺织展
which make4ht
/usr/local/texlive/2016/texmf-dist/scripts/make4ht/make4ht
生成的 HTML 是
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd-->
<html xmlns="http://www.w3.org/1999/xhtml"
>
<head><title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)" />
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)" />
<!-- xhtml,html -->
<meta name="src" content="bug.tex" />
<link rel="stylesheet" type="text/css" href="bug.css" />
</head><body
>
<!--l. 5--><p class="noindent" >line one
</p><!--l. 7--><p class="noindent" >line two
</p><!--l. 10--><p class="noindent" >line three </p>
</body></html>
答案1
tex4ht
不支持,\vspace
因为它在 LaTeX 宏中用到了很多地方,如果在每个用到的地方都插入某些内容,可能会导致 HTML 非常糟糕。最好插入语义上有意义的标签,并使用 CSS 设置垂直间距。
在您的示例中,我会使用一些有意义的宏,而不是直接\vspace
使用。这样,在处理文档时,通过tex4ht
插入一些 HTML 来完成工作,重新定义该宏就变得相当容易了。
包装 mycommands.sty
:
\ProvidesPackage{mycommands}
\newcommand\negativespace{\vspace*{-.1in}}
\endinput
配置文件mycommands.4ht
:
\renewcommand\negativespace{\ifvmode\IgnorePar\fi\EndP\HCode{<p class="negativespace"></p>}\par}
\Css{.negativespace{margin-top: -1em;padding:0;}}
\endinput
并修改了 TeX 文件:
\documentclass[11pt]{article}
\usepackage{mycommands}
\setlength\parindent{0pt}
\begin{document}
line one
line two
\negativespace
line three
\end{document}
渲染后的 HTML 内容如下: