是否可以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
现在我们必须提供配置:tex4ht
myspacing.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 是拉丁文本)