对于以下一行 LaTeX 代码:
y=\frac{1}{2}x^2
LaTeX2HTML 1.71
在我安装的部分TeX Live 2012
和 openSUSE-12.3 Linux 操作系统中,产生了相当于
y=Image x^2
而不是期望的等价物
y=(1/2)x^2
在用 Konqueror Web 浏览器打开的x
HyperTeXt 标记语言 (.html) 输出文件中,没有括号,带有水平分数线,并且后面带有上标 2。我一直怀疑我的和 openSUSE-12.3 Linux 安装中的某些内容阻止了 LaTeX2HTML 1.71 显示来自 LaTeX 代码的分数,例如。我请求(2008 年版 )和 的部分内容(尤其是在 Linux 操作系统的 openSUSE 发行版中命名的软件包)的用户尝试此实验并在此处报告您的结果和计算机环境:LaTeX2HTML 1.71
TeX Live 2012
\frac{1}{2}
LaTeX, LaTeX2HTML 1.71
LaTeX2HTML
TeX Live 2012
texlive-latex
使用文本编辑器将以下代码行复制并粘贴
LaTeX
到文本编辑器的空白文档中;并将该文件另存为MyFile.tex
:\documentclass[a4paper,12pt]{article} \usepackage{color,html,makeidx,amsmath,latexsym} \pagecolor{white} \setlength{\parskip}{20pt plus 2pt minus 2pt} \begin{document} \baselineskip=29pt \begin{equation} y=\frac{1}{2}x^2 \end{equation} \end{document}
执行以下命令两次:
latex MyFile.tex
。- 执行以下命令一次:
latex2html -debug -nonavigation -no_math -html_version 3.2,math -split 0 MyFile.tex
。该命令应MyFile
在执行该命令的目录中生成一个名为 的子目录。该子目录中MyFile
应有一个名为 的文件,该文件MyFile.html
由计算机程序生成LaTeX2HTML 1.71
。 - 双击该文件
MyFile.html
即可在您的默认 Web 浏览器(例如 Mozilla Firefox、Konqueror 等)中正确打开它。 - 看看以 开头的行
y=
。下一个表达式是单词Image
还是带有水平分数线的分数的等价物1/2
?如果是带有水平分数线的,请根据是否看到带有水平分数线且不带括号的1/2
等价物,分别选择选项“失败”或“成功”,并在此处写入:y=Image x^2
y=(1/2)x^2
使用中1/2
显示的分数成功TeX Live 2012
_______操作系统并在空白处填写您的操作系统,例如 openSUSE 12.2 Linux、Ubuntu-10.0 Linux 等等。
使用中1/2
显示的分数失败TeX Live 2012
_______操作系统并在空白处填写您的操作系统,例如 openSUSE 12.2 Linux、Ubuntu-10.0 Linux 等等。
通过这种方式,我希望确定TeX Live 2012
openSUSE-12.3 Linux 本身或者它如何“处理”新准备的文档中 LaTeX 编码分数的LaTeX2HTML 1.71
部分TeX Live 2012
原因或导致了问题。LaTeX2HTML 1.71
.tex
2013 年 8 月 20 日
经过几周的时间,我终于找到了解决这个问题的“变通方法”,我可以使用 Bob Tennent 提供的线索。http://www.tug.org/pipermail/tex-live/2011-November/030599.html他在互联网上写道,“...在某些 Linux 发行版中,latex2html 包将依靠在完全安装某些过时的软件(如 texlive-2007 或 tetex)时,安装过程会变得复杂”(我认为是 LaTeX2HTML)。 http://www.tug.org/pipermail/tex-live/2011-November/030604.html继续按照相同的电子邮件“链”继续,Bob Tennent 进一步写道:“从 CTAN(互联网上的综合 TeX 档案网络)的 tarball 安装 latex2html-2008 确实避免了依赖性问题,并且不太可能需要更新。” Bob Tennent 的这些文章让我感激不尽,那就是 LaTeX2HTML 1.71 可能与 TeX Live 2011 的部分内容配合得很好,但可能在某种程度上与 TeX Live 2012 的部分内容不兼容。因此,在尝试 Bob Tennent 的解决方案时,我从 CTAN 网页获取了文件 latex2html-2012.tgz。在 openSUSE-12.3 的 Yet another Software Tool 2(YaST2)的软件管理中,我删除了名为“latex2html”、“latex2html-doc”和“latex-pngicons”的 openSUSE-12.3 软件包的安装。我使用命令“tar xvzf latex2html-2012.tgz”将下载的文件 latex2html-2012.tgz 解压到一个新文件夹中,然后按照该 .tgz 文件中名为“INSTALL”的文件中的说明,在 openSUSE-12.3 Linux 操作系统中安装 TeX Live 2012 的部分内容,安装的内容实际上是 LaTeX2HTML 2012 (1.2)。执行此操作所需的基本命令是“./configure --prefix=/usr”、“make”和“make install”。结果是在目录 /usr/bin 中安装了一些可执行 LaTeX2HTML 文件,在目录 /usr/shared/lib/latex2html 中安装了一些共享库文件,在目录 /usr/lib/latex2html 中安装了一些非共享库文件,这三个目录都以输入“/url”作为“前缀”开头。删除与我的测试文件 Throwaway29.tex 相关的所有旧副本(除了文件 Throwaway29.tex 本身)后,值得庆幸的是,执行两次“latex Throwaway29.tex”和一次“latex2html -debug -nonavigation -no_math -html_version 3.2,math -split 0 Throwaway29.tex”后,在 Web 浏览器 Konqueror 中查看时,表达式 y=(1/2) x^2(不带括号且带有水平分数线)的等价表达式可以正确显示在输出文件 ..../Throwaway29/Throwaway29.html 中(在对另一个 .tex 文件进行类似处理后,显示其他数学运算时出现的一些问题已通过附录 II 中讨论的细微更改得到纠正)。之后,可以从我的计算机硬盘驱动器中删除从 CTAN 网页下载的 latex2html-2012.tgz 文件解压到的新文件夹。
上述成功表明 LaTeX2HTML 2012 (1.2) 可以在 openSUSE-12.3 Linux 操作系统中与 TeX Live 2012 的部分功能配合使用(截至 2013 年 8 月 14 日,TeX Live 2013 尚未从稳定的 openSUSE 12.3 的标准 openSUSE-12.3 存储库中安装。但根据 Harvey 在http://bbs.archlinux.org/viewtopic.php?pid=1299370在互联网上,有一条可能的线索表明 TeX Live 2013 可能与 2013 年 7 月 10 日发布的 LaTeX2HTML 2008-2 兼容,直到(但不包括)名为 texlive-core2013.30962-1 的 TeX Live 2013 更新。根据 Harvey 在该帖子结尾附近的笑话,以及该网页的统一资源定位器 [URL] 中有“linux”,我推测 Harvey 可能在他报告的结果中使用了某个 Linux 操作系统的发行版。他还写道,他报告了 LaTeX2HTML 2008-2 和 TeX Live 2013 的问题,这个问题与我遇到的 LaTeX 编码分数(如 \frac{1}{2})问题不同,是一个“错误”。我不确定他是否向 TeX Live 的开发人员或他当时使用的 Linux 操作系统发行版的开发人员报告了该软件“错误”,当时他发现了他猜测的可能是“错误”。)。无需深入研究所涉及的计算机代码,我有两个一般假设来解释这一成功:1) 与 Bob Tennent 报告的可能较早版本的 LaTeX2HTML 和某些我不知道的 Linux 操作系统发行版类似,也许在我安装的 openSUSE-12.3 Linux 操作系统中,LaTeX2HTML 2008 (1.71) 和 TeX Live 2012 的部分内容在某种程度上也存在不匹配的情况。2) 与 openSUSE 12.2 相比,我认为在 openSUSE 12.3 中对某些软件包的分组进行了一些更改。因此,openSUSE-12.3 方面可能存在问题,导致 LaTeX2HTML 1.71 无法与 TeX Live 2012 的部分功能正常运行。
对于让 LaTeX2HTML 在 Linux 操作系统中与 TeX Live 的部分功能良好配合这一普遍问题,我看到了短期、中期和长期解决方案。短期解决方案是我在本文前面两段中解释的解决方案,它成功地在 openSUSE-12.3 Linux 操作系统中运行,我希望它也能在其他 Linux 操作系统发行版中运行。中期解决方案是让 openSUSE-12.3 开发人员为从 openSUSE-12.3 软件存储库提供给 openSUSE-12.3 用户的 LaTeX2HTML 版本的用户修复该问题(事实上,我已经在一份“错误”报告中向 openSUSE 12.3 的开发人员提交了我在此处提到的问题。我用最近的成功案例和我在此处报告的其他一些内容更新了该“错误”报告。)---如果上述假设 1 是正确的,并且没有假设 2 带来的任何复杂性,那么中期解决方案可能很简单,只需将 openSUSE-12.3 开发人员从他们的在线存储库中提供的 LaTeX2HTML 版本从 2008 年更改为 CTAN 提供的 2012 年版本即可。但是,对于所有可能使用 TeX Live 的 Linux 和 Windows 操作系统发行版来说,长期且更通用的解决方案可能是将最新版本的 LaTeX2HTML 合并到最新版本的 TeX Live 中,并在分发 Tex Live 之前使用包含一些数学表达式的 .tex 文件在 TeX Live 中测试 LaTeX2HTML 和 LaTeX,以确保 TeX Live 中的 LaTeX2HTML 可以与 TeX Live 很好地配合使用。这就是我向使用和/或负责 TeX Live 的人推荐的方法。
我要求其他人使用 LaTeX2HTML 2008 (1.71) 和部分 TeX Live 2012 在 openSUSE-12.3 Linux 以外的操作系统上发布测试结果,这些结果可能仍然很有趣。例如,如果有人使用某个版本的 Ubuntu、Gentoo 或 Fedora Core Linux 和 LaTeX2HTML 2008 (1.71) 并安装了部分 TeX Live 2012,并在 LaTeX2HTML 2008 (1.71) 输出中看到与我相同的 LaTeX 代码 \frac{1}{2} 问题,那么我会倾向于假设 1 是正确的,即 LaTeX2HTML 2008 (1.71) 和 TeX Live 2012 之间可能存在某种不匹配,而这种不匹配并不局限于 Linux 操作系统的特定发行版。---或者,如果他得到的分数显示正确,那么我会倾向于假设 2 可能是正确的。此类测试结果可能会引起某些 openSUSE 用户或者那些试图解决我以软件“错误”报告形式发布的 openSUSE-12.3 Linux 问题的人的兴趣。
附录一:LaTeX2HTML 2012 (1.2) 许可
对于 LaTeX2HTML 2012 (1.2),我在从 CTAN 获得的 LaTeX2HTML 安装中的文件 /usr/share/lib/latex2html/docs/licence.tex 中找到了许可证信息:
“只要满足以下条件,就可以使用和复制本软件以及基于本软件编写衍生作品:\begin{itemize} \item 版权声明和整个声明应完整且醒目地包含在所有副本和支持文档中。\item 使用、复制或访问本软件不收取任何费用或报酬。您可以对实际传输副本的行为收取象征性的分发费用,但不得对程序本身收费。\item 如果您修改本软件,则必须在修改后的文件上附加醒目的声明(\texttt{ChangeLog}),描述更改、更改者以及更改日期。\item
任何全部或部分包含本软件或其任何部分或作为其衍生品的分发或出版作品均受本协议条款的约束。在存储卷或分发介质上将另一个不相关的程序与本软件或其衍生品聚合在一起并不会使另一个程序属于这些条款的范围。\end{itemize}”
附录 II:为避免由 LaTeX 和 LaTeX2HTML 2012 (1.2) 程序组合生成的超文本标记语言文件中出现某些数学图像的问题,必须对 LaTeX2HTML 2012 文件进行更改
这里讨论的 LaTeX2HTML 更改之前已由 Shigeharu Takeno 讨论过。例如,他在以下网址讨论了对 Perl 脚本文件 latex2html 的更改:http://tug.org/mailman/htdig/latex2html/2004-February/002688.html在互联网上。在文件 /usr/bin/latex2html 中,我在 16,454-16,455 行的每个 # 后添加了一个 ?,如下所示:
$math_verbatim_rx="verbatim_mark#?math(\d+)#";
$mathend_verbatim_rx="verbatim_mark#?mathend([^#]*)#";
与上面的行不同,上面的两行非空代码之间没有空行。我在 LaTeX2HTML 2012 (1.2) 中没有找到文件 latex2html.pm,因此没有在其中进行类似的修改。我在文件 /usr/share/lib/latex2html/versions/math.pl 中保留以下行不变:
$mathend_mark = "\n${verbatim_mark}mathend000#";
因为 $mathend_mark 在文件 math.pl 中被多次使用。我发现,通过在该行代码前面添加 # 来注释掉该行代码对于 LaTeX2HTML 成功呈现数学符号来说并不是必需的。此外,如果在文件 math.pl 中使用 $mathend_mark 的行被访问过,并且如果在 LaTeX2HTML 代码中的其他地方没有为文件 math.pl 有效定义 $mathend_mark,注释掉该行代码可能会导致 $mathend_mark 未定义。
在文件 /usr/lib/latex2html/l2hconf.pm 中,我在第 136 行前面添加了 #,如下所示:
#$DVIPSOPT='-Ppdf-E';
。同一文件的第 169 行已添加 #,如下所示:
#$DVIPSOPT .= " -Ppdf";
我将同一文件的第 151 行保留不变,如下所示:
$DVIPSOPT .= " -E";
。