为什么 tex4ht 会忽略 \vspace{}?或者如何减少两个段落之间的垂直空间?

为什么 tex4ht 会忽略 \vspace{}?或者如何减少两个段落之间的垂直空间?

我花了一个小时在这上面,却不知道如何让 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 中,它按预期工作:

Mathematica 图形

make4ht bug.tex忽略了它并给出了这个 HTML

Mathematica 图形

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 内容如下:

在此处输入图片描述

相关内容