tex4ht 可以支持具有不同行距的方正文本吗?

tex4ht 可以支持具有不同行距的方正文本吗?

是否可以tex4ht支持方格对齐文本并且我可以指定不同的行距(1、1.15、1.5、2 等)?

Sloppypar允许我在 pdf 中将段落对齐,但网络浏览器中的 html 文件不会反映这一点。同样\onehalfspacing没有任何效果。

如果我在 MS Word 中编辑 PDF 并更改行距和方格对齐,则浏览器中显示的 HTML 文档会反映出所需的外观。所以我希望有一个环境选项可以模拟这些设置排版tex4ht

没有 MWE,因为我没有想到要尝试任何包或宏。

答案1

tex4ht不设置普通文本的对齐方式,它保留默认值,即 raggedright。您可以使用\Css自定义配置文件中的命令轻松为文本提供对齐方式:

\Css{text-align:justify;}

因为网络浏览器不是 TeX,所以它们的对齐非常糟糕,您经常会看到单词之间有很大的空格。如果您启用连字功能(这是 的最新功能),则可以解决此问题。CSS要启用连字功能,您必须声明文档语言,默认情况下不会这样做tex4ht,但您可以在文件中.cfg再次配置它。

示例sample.cfg文件可能如下所示:

\Preamble{xhtml}
\Css{body{text-align:justify;width:15em;margin:0 auto;}}
\Css{p{-webkit-hyphens: auto;
  -moz-hyphens: auto;
  -ms-hyphens: auto;
hyphens:auto;}}
\Configure{HTML}{\HCode{<html xmlns="http://www.w3.org/1999/xhtml"  
 lang="en">\Hnewline}}{\HCode{</html>}}{}{}
\begin{document}
\EndPreamble

现在我们来看看具体的声明:

\Css{body{text-align:justify;width:15em;margin:0 auto;}}

这将文本设置为两端对齐,宽度只有 15em,这只是为了显示连字符,您应该使用更大的值,大约 40em。将margin: 0 auto文本水平居中。

\Css{p{-webkit-hyphens: auto;
  -moz-hyphens: auto;
  -ms-hyphens: auto;
 hyphens:auto;}}

因为连字符是最近的CSS3功能,所以您需要使用浏览器前缀在所有支持的浏览器中启用它。

\Configure{HTML}{\HCode{<html xmlns="http://www.w3.org/1999/xhtml"  
 lang="en">\Hnewline}}{\HCode{</html>}}

这将配置<html>元素以包含lang="en"属性,这是启用连字符所必需的。当然,如果文档语言不是英语,请使用不同的快捷方式。

第二个问题是行距。对于tex4ht,较新的使用切换命令,如onehalfspacing,因为这无法配置为生成正确的 html 标记。始终为此使用环境。简单示例:

\ProvidesPackage{myspacing}
\RequirePackage{setspace}
\newenvironment{onehalf}{\onehalfspacing}{}

\endinput

将其另存为。myspacing.sty现在我们必须提供配置:tex4htmyspacing.4ht

\ConfigureEnv{onehalf}{%
\ifvmode\IgnorePar\fi \EndP\HCode{<div class="onehalf">}\par}
{\ifvmode\IgnorePar\fi \EndP\HCode{</div>}\par}
{}{}
\Css{.onehalf{line-height:150\%;}}

这些\ifvmode\IgnorePar\fi \EndP是为了正确的段落处理而来的,重要的是\HCode{<div class="onehalf">}它将产生<div>具有类的元素onehalf,然后将其配置css为具有 1.5 倍间距。

我们可以用一些简单的文档来测试我们的配置:

\documentclass{article}

\usepackage{myspacing}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{onehalf}
    \lipsum[2]
\end{onehalf}
\lipsum[3]

\end{document}

编译它

htlatex filename sample

结果:

在此处输入图片描述

(请注意,lang="la"在该示例中使用了,因为 lipsum 是拉丁文本)

相关内容