如果您可以花一周时间在 Windows 上研究将 LaTeX 转换为 HTML 的各种方法,然后实际实施一种基于看似最成功/最流行的方法的方法,那么以加速的方式实现这一目标的步骤是什么?
答案1
经过大量尝试,并在论坛上花费了大量时间后,我终于可以整理出一份描述,说明我所学到的基于 MiKTeX 安装的 tex4ht 程序在线获取美观的 LaTeX 文章或书籍的最快方法。如果您使用其他 LaTeX 编译器,请不要担心,因为 MiKTeX 中对 tex4ht 的访问已经得到深入开发,并会在合理的时间内保持更新。TeX 社区中也有很多 Linux 用户,有时,论坛回复默认为在 Linux 中有效的方法,这就是我为 Windows 10 社区提供此描述的原因。
以下是我的方法,得到了 SE TeX 论坛成员的大力帮助。按照以下步骤操作,大约一两个小时后,您应该能够生成一份非常漂亮的在线文档。将此时间(1-2 小时)与使此方法奏效所需的 4-6 天全职调试和反复试验进行比较。
假设您已经用 LaTeX 准备并编译了一本书(文章)(假设您的书是在文件 mybook.tex 中准备的,并且存储在磁盘上的 d:\mylatexfiles 中),请下载并安装 MiKTeX 2.9(或更高版本,2019 年 6 月)
从 github 下载 pdf2svg 并将文件解压到任意目录(最好将其放在 C:\Users\username\AppData\Local\pdf2svg-windows-master 文件夹中)。确保将所有 .dll(文件)和 pdf2svg.exe 文件复制回此文件夹,因为它们可能会被解压到同名的子文件夹中。换句话说,文件夹 C:\Users\username\AppData\Local\pdf2svg-windows-master\ 中需要包含文件 pdf2svg.exe 以及所有 .dll 库文件。
使用命令提示符(在 Windows 搜索框中输入“command”,然后按回车键 - 请注意不要使用管理员权限),然后转到从 .zip 文件中提取 pdf2svg.exe 和所有 .dll 文件的文件夹。在 DOS 中(黑屏)在此文件夹中输入:
set PATH=%PATH%;C:\Users\username\AppData\Local\pdf2svg-windows-master\
(我将 pdf2svg 安装在 C:\Users\username\AppData\Local\pdf2svg-windows-master 文件夹中)。注意:PATH 命令末尾需要有斜杠。
在包含 mybook.tex 的“mylatexfiles”文件夹中,创建一个新的文本文件并将其重命名为 myfile.cfg。将以下“序言”代码粘贴到 myfile.cfg 中:
\Preamble{xhtml}
\DeclareGraphicsExtensions{.svg,.png,.jpg}
%Use SVG graphic outputs for inline And display equations, as well as all images
\Configure{Picture}{.svg}
\Configure{graphics*}
{eps}
{\openin15=\csname Gin@base\endcsname\PictExt\relax%
\ifeof15%
\Needs{"epstopdf \csname Gin@base\endcsname.eps && pdf2svg \csname Gin@base\endcsname.pdf \csname Gin@base\endcsname.svg"}
%\Needs{"magick convert -trim -density 110x110 -transparent \#FFFFFF \csname Gin@base\endcsname.eps \csname Gin@base\endcsname\PictExt"}%
\fi%
\closein15%
{\Configure{Needs}{File: \csname Gin@base\endcsname\PictExt}\Needs{}}%
\Picture[\csname a:GraphicsAlt\ endcsname]{{\csname Gin@base\endcsname\PictExt} \csname a:Gin-dim\endcsname
}}
\ifdefined\HCode\else .... \fi
%Clear the ugly lines that separate sections, tables, figures from text (by default)
\DeclareMathSizes{12}{14}{10}{8}
\ConfigureEnv{tabular}
{\HCode{}}{\HCode{}}{}{}
\ConfigureEnv{figure}
{\HCode{}}{\HCode{}}{}{}
\Configure{float}
{\ifOption{refcaption}{}{\csname par\endcsname\ShowPar \leavevmode}}
{\HCode{}}
{\ifvmode \IgnorePar \fi\EndP \HCode{}\csname par\endcsname\ShowPar}
%Center text on page, use wide margins on left And right
\Css {body {margin-top: 100px;
Margin-Right: 400px;
Margin-Bottom: 10px;
Margin-Left: 400px;
}
}
%Use Helvetica fonts throughout:
\Css{body{ font-family "Helvetica Neue", Helvetica, "Nimbus Sans", Arial, sans-serif;}}
%Use 1.5 line spacing:
\Css{body{ line-height 17pt;}}
\begin{document}
%Format section colors:
\def\sechead#1#2{.#1Head #2,.like#1Head #2}
\def\sections#1{\sechead{chapter}{#1}, \sechead{section}{#1}, \sechead{subsection}{#1}, \sechead{subsubsection}{#1}, \sechead{paragraph}{#1} }
\let\oldchaptername\chaptername
\renewcommand{\chaptername}{\Tg<span class="chapname">\oldchaptername\Tg</span>}
\Css{\sections{}{color:green;}}
\Css{\sections{br}{display:none;}}
\Css{\sections{.titlemark}{color:green;}}
\Css{\sections{.titlemark:after}{content:" ";}}
\Css{\sechead{chapter}{.titlemark}{
display: block;
Font-Size: .8em;
Margin-Bottom: 1.6em;
border-Bottom: 1px solid black;
Text-align: Right;
}}
\Css{\sechead{chapter}{}{
Margin-Top: 2em; margin-bottom:1em;
Text-align: center;
}}
\Css{\sechead{subsection}{}{
Font-Size: 1.1em;
Text-align: Left;
}}
\Css{\sechead{subsubsection}{}{
Font-Size: 1.1em;
Text-align: Left;
}}
\Css{\sechead{paragraph}{}{
color: navy;
Font-Size: 1.1em;
Text-align: Left;
}}
\EndPreamble
- 重新启动计算机。
- 编辑 mybook.tex 文件并修改整本书(文章)中的每个 \includegraphics 命令,以便仅
width=?
使用并且图像文件名包含“.eps”扩展名,如下例所示:
\includegraphics[bb=38 185 721 543,width=6in,keepaspectratio]{correlation.eps}
(如果省略 .eps 后缀,您可能无法在 html 输出中看到图像!)
另外,在 mybook.tex 中,在 mybook.tex 文件顶部的“preamble”中,在 \begin{documents} 命令之前添加以下命令:
\usepackage{titlesec}
\usepackage{titletoc}
\ifx\HCode\undefined
\titleformat{\section}[block]{}{\thesection.}{50pt}{}
\fi
我们还将指定 Helvetica san serif 字体,而不是默认的 serif roman 字体,方法是将以下命令放在 mybook.tex 文件顶部的“序言”中,位于 \begin{documents} 命令之前:
\usepackage[scaled]{helvet}
\renewcommand\familydefault{\sfdefault}
\usepackage[T1]{fontenc}
- 保存 mybook.tex
- 接下来,在 Windows 搜索框(屏幕左下方)中输入“命令”以打开 DOS 命令(黑色)窗口。
- 在 DOS 中,转到 d:\mylatexfiles 文件夹。将以下文本粘贴到命令提示符窗口中(然后按回车键):
c:
cd Users
cd username(you)
cd AppData
cd Local
cd pdf2svg-windows-master
set PATH=%PATH%;C:\Users\username\AppData\Local\pdf2svg-windows-master\
这将重置 PATH,以便 MiKTeX 的 tex4ht 从您的书籍(文章).tex 文件所在的文件夹中“看到”pdf2svg 程序。
在步骤 6 中运行上述代码后,运行以下命令将您的书(文章)编译为 html:
d:
cd mylatexfiles
htlatex mybook.tex "myfile.cfg,charset=utf-8,pic-m" " -utf8 -cunihft"
(在编译 mybook.tex 文件的命令行中,“htlatex”运行 MiKTeX 的 tex4ht 算法。tex4ht 前导码通过将“myfile.cfg”作为引号中的参数来指定。如果不这样做,那么您可能不会在 mybook.html 输出文件中产生太多内容。保留提供的所有 utf-8 编码,因为这些是默认设置。)
- 等待处理完成,如果有任何错误,请按照屏幕上的指示进行操作。如果 \tableofcontents 出现错误,则只需键入“s”并覆盖(忽略)错误 - 我每次编译时都会执行 3 次,因为编译器会对 LaTeX 代码进行 3 次运行。要查看结果,请双击 mybook.html 以在浏览器中查看。
每次打开和关闭 DOS 命令提示符或重新启动时,您都必须将步骤 6 中的 DOS 命令复制并粘贴到命令提示符中(黑色 DOS 屏幕),以便 MiKTeX 和 tex4ht 能够看到 pdf2svg 程序。打开 DOS 提示符后(黑屏并且您已经运行了步骤 6 中的命令),您可以通过将步骤 9 中的 DOS 命令粘贴到 DOS 命令提示符窗口中来编译您的书籍(文章)。
要更改 html 输出中的图像(图片)大小,我了解到您只需要在 \includegraphics 行中指定宽度,例如将输出图像的大小加倍:
只需更改(在 mybook.tex 中):
\includegraphics[bb=38 185 721 543,width=6in,keepaspectratio]{correlation.eps}
到
\includegraphics[bb=38 185 721 543,width=12in,keepaspectratio]{correlation.eps}
在前言命令(在 myfile.cfg 中)中使用的一些其他特殊命令如下。
\Preamble{xhtml}
指定您想要 xhtml。如果您将其更改为 {html} 或 {xhtml,mathml},则输出中将不会提供更高分辨率的方程式。事实上,如果您指定 html 或 mathml,html 输出中的许多优秀数学功能将被关闭,因此请保留 {xhtml}。
\Configure{Picture}{.svg}
指定您希望所有图片和方程式都使用更高分辨率的 .svg 图像。
此外,前言命令:
\Needs{"epstopdf \csname Gin@base\endcsname.eps && pdf2svg \csname Gin@base\endcsname.pdf \csname Gin@base\endcsname.svg"}
会将您的所有 EPS 图像转换为 PDF,然后通过 epstopdf 和 pdf2svg 程序转换为 SVG。Tex4ht 通常使用 ImageMagick 进行图像转换,但如果您查看一些论坛,您会发现 ImageMagick 在矢量图形 (EPS、PDF) 文件上的表现并不好。我多次尝试使用 magick convert 命令来调用 ImageMagick 将 EPS 文件转换为 SVG,但结果并不理想,并且总是导致图像分辨率太低且太小。使用我们采用的 epstopdf 和 pdf2svg 方法,您实际上可以在 convert_graphics 文件夹中拥有最初由 GIF、PNG 等生成的 EPS 文件,这些文件具有各种像素尺寸和 dpi 值(分辨率),图像效果仍然会非常好 - 比使用 ImageMagick 好得多。但是,如果您想删除 % 注释并尝试一下,magick convert 行位于序言中 - 但我不想浪费时间。
序言中的\ConfigureEnv{tabular}
、\ConfigureEnv{figure}
和\Configure{float}
命令可删除默认 html 输出中的丑陋规则(线条),这些规则默认将表格、图形、章节、小节等彼此分隔开。
首先\Css
命令 (myfile.cfg) 指示 tex4ht,您希望文本在网页上居中,左右边距约为 400 像素。这些命令可防止书籍(文章)文本宽度与浏览器窗口一样宽,这很不美观。您希望您的在线资料看起来像 github wiki 页面,或像讲座一样https://cs231n.github.io/convolutional-networks/#overview
序言中的第二条\Css
命令 (myfile.cfg) 指示 tex4ht 确保文档宽字体样式为 Helvetica。如果没有此命令,某些环境(例如表格)将默认为 Times Roman。
序言中的第三个\Css
命令(myfile.cfg)稍微增加了行距,因为默认值太紧了。
最后一系列\Css
命令改变了章节标题的颜色,并增加了章节、小节和段落的字体大小,因为默认情况下这些字体有点小 - 而且看起来不正确。
命令行中使用的另一个参数是pic-m
,它指示 tex4ht 您希望书籍(文章)中的每个数学符号、内联方程和显示方程都具有更高分辨率的图像。如果不在pic-m
命令行中使用该命令进行编译,方程的分辨率会较低,看起来模糊或有点模糊,但使用该命令,方程将非常清晰,分辨率较高。
答案2
您的问题是如何将 LaTeX 转换为 HTML,在“一周”内,有很多非常好的途径供您研究。许多途径将提供一些保真度尝试,从而允许往返,这样您就可以捕获 html 并尝试将其放回到空白 TeX 文件中。但请考虑 tex 原语可能来自哪个 html 空间 = #em \includegraphics 指令可能来自哪里。简而言之,它始终是单程旅行。
一种方式 ==> LaTeX > PDF > HTML
pdfxxTeX 的目的是创建一个固定排版渲染,足以进行高质量查看和打印。HTML 的目的是允许通用浏览,包括重排和缩放。目前最好的桥梁是将静态 PDF 页面嵌入查看器(非常常见)或使用 SVG 将 PDF 转换为 HTML,这两种方法都可以在几秒钟内完成,效果还不错,所以左边是 page16.htm,右边是 page16.pdf。除了源代码之外,不需要 TeX,命令行转换器可以在任何没有 TeX 的机器上运行,在这个阶段只需要一个基本的 PDF 2 HTM 任务。