LaTeX2HTML:将科学发布到网络
具有讽刺意味的是,在万维网问世 20 年后,在网络上发布数学密集的科学文档仍然很困难。像 MathML 这样的新标准已经出现,但在流行的网络浏览器支持它们之前,接触最大受众的最佳方法仍然是将数学公式作为 HTML 文档中的内联图形。
在离线世界中,TeX/LaTeX 包以生成格式最佳的科学文档而闻名。事实上,LaTeX 是许多学术期刊的标准格式。对于科学家和研究人员来说,两全其美的方法是用 LaTeX 编写,然后在网络上发布。LaTeX2HTML 是实现这一目标的完美工具。
LaTeX2HTML 最初由 Nikos Drakos 于 1993 年编写,作为一个开源项目。它由开源社区的许多成员改进和增强。LaTeX2HTML 将 LaTeX 文档转换为标准 HTML 格式。由于 HTML 是一种文本格式,它将所有非文本元素转换为内联图形。它是一个 Perl 应用程序,可在包括大多数 UNIX/Linux 和 Windows 版本在内的多个平台上运行。
在本文中,我首先给出一个如何将简单的 LaTeX 文档转换为 HTML 的示例,并讨论该程序如何处理内联图形和样式文件。然后,我解释 LaTeX2HTML 特定的 LaTeX 命令/环境。最后,我讨论 LaTeX2HTML 的更具创造性的用途——在服务器端使用它。为简单起见,术语“公式”指的是 LaTeX 数学模式中的任何内容。这包括简单的文本内数学符号、“displaymath”公式和编号方程。
该命令的用法非常简单。如果您想将您的 LaTeX 文档 mydoc.tex 发布到网络,请运行
latex2html -local_icons mydoc.tex
LaTeX2HTML 创建一个新的子目录 (mydoc/),并将所有 HTML 文件和图像文件放入其中。您现在可以将 mydoc/ 复制到您的 Web 服务器的文档树下,您的文档即可在 http://yourserver/path/mydoc/index.html 上访问。
标题、标题和强调文本都使用 HTML 标签正确标记。所有公式/表格/图形以及普通 HTML 无法显示的内容都转换为内联图形。
如果 mydoc.tex 有多个节/子节,LaTeX2HTML 会为每个节生成一个 HTML 文件,并生成一个包含指向每个节的链接的目录。每个页面都有一个导航栏,其中包含指向下一节/上一节和目录的链接。如果您只想生成一个大的 HTML 文件,请使用 -split 0 命令行开关。
LaTeX2HTML 需要知道在哪里找到导航栏上的图标图像。最简单的解决方案是使用 -local_icons 命令行开关,它指示 LaTeX2HTML 将导航图标复制到 mydoc/ 目录中。您还可以通过用您自己的图标替换 mydoc/*motif*.gif 文件来使用自定义导航图标。
我以数学公式为例来说明 LaTeX2HTML 如何处理内联图形。它对浮动对象(如图形和表格)执行相同的操作。
LaTeX2HTML 扫描 mydoc.tex 并将所有数学公式提取到一个名为 images.tex 的文件中。在 images.tex 中,每个公式都在单独的页面上。然后,它调用 latex images.tex 和 dvips -S 1 -i 为每个公式生成一个单页 PostScript 文件。Ghostscript 用于将 PostScript 文件转换为 GIF 或 PNG 图像并调整其大小。LaTeX2HTML 将记住图像名称并将链接插回到从 mydoc.tex 生成的 HTML 文件中。
有几个命令行开关可以控制图像生成过程。例如,开关 ps_images 指示 LaTeX2HTML 使用指向外部 PostScript 文件的链接,而不是内联图形。
LaTeX2HTML 对文本和内联图形以不同的方式处理样式文件。当 LaTeX2HTML 从 mydoc.tex 生成主文本 HTML 文件时,它会忽略任何样式文件。但是,样式文件通常定义不能忽略的新命令和环境。作为一种解决方法,LaTeX2HTML 允许用户以 Perl 格式重写样式文件。当 LaTeX2HTML 遇到样式文件时,它会搜索 Perl 翻译并将其合并到主脚本中。幸运的是,许多流行的样式文件已经被翻译成 Perl。编写此类翻译需要对 LaTeX2HTML 内部结构有工作知识。这是一项艰巨的任务,但您拥有源代码。
我们希望公式、图形和表格看起来与在纸上打印出来完全一样,具有所有自定义符号、字体和间距。因此,images.tex 包括 mydoc.tex 使用的所有样式文件。由于 images.tex 由 LaTeX 处理,因此样式文件得到正确处理。
LaTeX2HTML 在将现有文档转换为 Web 格式方面非常强大。LaTeX2HTML 提供了一组自定义 LaTeX 命令和环境,允许您在文本中包含自己的 HTML 标记。您可以充分利用普通的 HTML:您可以向文档添加 Web 表单、可点击的图像地图、外部链接/图形,甚至 Java applet/script。例如,如果您想在生成的 HTML 页面中包含指向外部网页的链接,您只需在 mydoc.tex 中插入以下内容
\htmladdnormallink{link title}{http://yourlink}
或者更通用地,
\begin{rawhtml} <A HREF="http://yourlink">link title</a> \end{rawhtml}如果您想打印出该 HTML 增强文档的纸质版本,您可以包含样式文件 html.sty,然后使用普通 LaTeX 处理它。大多数 LaTeX2HTML 特定的命令/环境都会被 LaTeX 忽略。
LaTeX2HTML 也可在服务器端使用,以促进基于网络的数学通信。列表 1 演示了一个 Perl 函数,该函数接受数学模式的 LaTeX 字符串,并返回用于显示公式的图像的 HTML 标记。还有其他更有效的方法可以做到这一点,但这只是 LaTeX2HTML 可以做什么的一个说明。它可以在聊天室或公告板中使用,以允许用户输入和广播复杂的数学公式。
电子邮件:juntao@astro.as.utexas.edu
Michael Yuan 是德克萨斯大学奥斯汀分校天体物理学博士候选人。他研究遥远的类星体(200 多亿光年之外),以了解我们宇宙的历史和演变。当他不观察类星体时,他喜欢使用 Java 和 Perl 等世俗语言开发有用的软件。