不止文字
在 Linux 中处理 MS Word 文档以及创建平台无关文档的方法。
作者:Jan Schaumann
我们被告知 Microsoft Word 文件可以在任何文本编辑器中查看,这可能就是为什么这么多人坚持将甚至简单的文本文档作为大型 Word 附件发送的原因:“这些下载文件是 Microsoft Word 6.0 格式。解压缩后,这些文件可以在任何文本编辑器中查看,包括所有版本的 Microsoft Word、写字板和 Microsoft Word Viewer”(来自 Microsoft 网站)。您多久收到一封电子邮件,其中附带 Word 文档,因为发件人只是假设每个人都使用 Microsoft Word(假设他们根本考虑过这个问题)?对于任何实际使用 Word 的人来说,打开可能包含宏病毒的附件不仅很危险,而且对于任何不使用 Microsoft 产品的人来说,它们已经成为真正的麻烦。实际上,即使是拥有 MS Word 的人也需要确保他们拥有最新版本(并可能购买升级),因为各个版本之间的差异如此之大,以至于有时 Word 无法读取 Word。本文试图通过详细阐述处理这些可怕文档的各种可能性,使您的(办公室)生活更轻松一些。
在拒绝任何非标准格式的文档(稍后会详细介绍)之前,在 Linux 中处理 MS Word 文档没有最佳方法。如上所述,有时甚至 Word 也无法读取 Word。但是,有很多方法可以打开大多数文档,甚至保留格式。
有功能齐全的文字处理器(与 Microsoft Word 非常相似)、一些文件转换器和一些非常规的方法来从 .doc 文件中提取信息。根据您的需求,您可以在不同的情况下选择不同的解决方案。
如果您需要进行大量文字处理,并且经常与同事交换文档,那么您肯定希望安装完整的办公套件。办公套件除了其他功能外,还配备了一个文字处理器,可让您读取(有时甚至写入)各种 MS Word 格式,即使它们都有自己的文档格式。适用于 Linux 的最常见的办公套件是 Applixware Office、Corel WordPerfect Office 2000、KOffice 和 StarOffice (OpenOffice)。
在上述所有套件中,Applixware Office 是唯一一个不是免费提供的。但是,Applix 非常友善地为我提供了一份他们的软件副本用于撰写本文(零售价为 99 美元)。我收到了一些彩色的盒子,里面装有 Applixware Office、Applixware Words(独立版)和 Applixware Spreadsheets(独立版)的副本。Office 套件附带一本精美的手册,一旦我设置好它,我肯定会欣赏它。
为了急于测试新软件,我尝试按照手册中的说明安装 Applixware Words。由于我运行的是 Debian,我不介意按 RPM 安装的说明缺少一个步骤(您需要再次更改目录才能找到 RPM 安装脚本,手册中没有提到这一点),并且我很高兴地执行了安装程序二进制文件。
起初,事情似乎进展顺利,但随后闭源软件的做法开始造成损失。安装脚本中似乎有一个小错误,导致我无法安装该软件。当我尝试安装到 /opt/applix(程序建议的)时,错误日志在安装失败后告诉我,它显然尝试安装到 /optapplix,即使它创建了 /opt/applix。
如果用户能够编辑安装脚本,这只是一个小麻烦,但由于这是闭源软件,我无能为力。我尝试了 /opt/applix 和其他一些技巧,但都无济于事。
由于未满足依赖项(在 Debian 系统上,似乎我没有安装任何最基本的 RPM),RPM 安装也失败了,因此在我最后一次尝试安装 Applixware Words 时,我使用 alien 从 RPM 生成了 .deb 包
mkdir /tmp/applix cp cdrom/RPMS/*.rpm /tmp/applix/ cd /tmp/applix/ alien *.rpm ... dpkg -i --force-overwrite *.deb
这似乎安装了软件包,但运行该应用程序导致了几个错误。我最终放弃并写了一封电子邮件给 Applix 询问这些问题。
虽然口碑相传这是一款可靠的产品——该套件的一个优点是其原生文件格式是纯 ASCII 文本,规范可从网站免费获得,这使得编写导入/导出过滤器变得容易——但这些类型的问题相当令人沮丧。
在我看来,拥有一本带有(据称)优秀产品的精美印刷手册的优势被它是闭源软件这一事实所抵消了。我无法进入并尝试自己修复错误,这让我感到无助。
Corel,最广为人知的是其 Linux 发行版 (Corel Linux) 和 CorelDRAW,还开发了一个非常强大的办公套件。Corel WordPerfect Office 2000 包括著名的 WordPerfect 文字处理器。WP 提供了人们可能希望在这种工具中获得的任何功能;它被许多人认为是优于 MS Word 的,并且适用于 Windows 和 Linux。奇怪的是,它不适用于 Mac,即使 Corel 为此平台提供了其他软件。
如果您想为整个办公室许可 WP Office 2000,您会发现价格不菲;但是,对于个人使用,您可以免费下载 WordPerfect 本身。我发现它安装和使用起来非常容易;它可以轻松打开我在硬盘驱动器上找到的所有 Word 文档,甚至可以正确显示数学公式。
由友好的 KDE 团队带给您的 KOffice 与 KDE 2.0 一起于 2000 年 10 月发布,作为 beta 软件。尽管如此,文字处理器 KWord 看起来令人印象深刻。它与所有其他 KDE 应用程序很好地集成,并整洁地导入了我提供的大多数 MS Word 文档。
当我尝试打开包含数学公式的文档时出现问题,但由于我被告知这些公式会使除最新版本之外的所有 Word 版本都崩溃(这不足为奇),我仍然会推荐它。到 KOffice 1.1 发布时,我确信 KWord 将很容易满足大多数需求。
当然,此办公套件在 GPL 下获得许可,并且可以从您最喜欢的镜像免费下载。Debian 的 apt-get install kword 为我处理了所有依赖项,但由于 KOffice 依赖于 KDE 2.0 和 Qt 2.2,您可能会发现自己升级了很多软件包才能使用此程序。
不久前,Sun Microsystems 收购了 StarOffice,这是一款适用于多种操作系统的办公套件。StarOffice 是最早能够与 Microsoft Office 竞争的办公套件之一。虽然 Sun 一直免费提供 StarOffice 下载,但直到最近他们才宣布向开源社区发布源代码,这最终促成了 OpenOffice 项目。因此,这是另一个 GPL 许可的项目。
StarOffice/OpenOffice 包括一个非常强大的文字处理器,它可以读取大多数 Word 文档,甚至可以写入 .doc 格式。但是,它有一个缺点:它很耗内存。完整的安装不仅需要大量的磁盘空间,而且还需要一段时间才能启动所有组件。如果您的机器速度较慢,这可能不是您的首选。另一方面,如果您有足够的空间和内存,我相信您会发现 StarOffice/OpenOffice 能够满足您的所有文字处理需求。
上述所有应用程序都是完整的办公套件,更适合那些实际执行大量文字处理,同时需要电子表格和演示文稿等应用程序的人。
对于那些只想使用文字处理器偶尔给房东写投诉信的人来说,有一些更轻量级的方法。最常见的轻量级文字处理器是 AbiWord。AbiWord 旨在“功能齐全且保持精简”,似乎实现了其目标。它速度快,适用于各种平台,免费(既是免费啤酒又是言论自由),并且正在大力开发中。但是,我确实要承认,它在某些文档上会卡顿,或者打开它们时不会保留原始格式。特别是,MS Word 处理表格的方式似乎会让 AbiWord 感到困惑。
另一个非常小巧轻便的文字处理器是 Pathetic Writer (pw),它是 Siag Office Suite 的一部分。我在这里提到 pw 而没有将其包含在功能齐全的办公套件中的原因是它似乎相当单薄。pw 不会打开 Microsoft 的 .docs,但它会愉快地执行您的日常文字处理,并且可以导入和导出大多数常见格式。Siag Office 与 AbiWord 一样,在 GPL 下发布,并且可以免费下载。
上述所有应用程序都有各种要求:有些严重依赖预安装的库(例如 KWord),有些相当耗费资源(StarOffice/OpenOffice),另一些则价格昂贵和/或不是开源的。但是,所有这些应用程序都试图保留某种样式或某种文档格式。
虽然这当然有用且重要,但我发现我根本不需要文字处理器,无论哪一个。在 90% 的情况下,当一些考虑不周的人向我发送 .doc 文件时,文档中包含的信息可以很容易地以纯文本形式以更小的文件大小进行交流。
所以现在让我们谈谈正事,看看我们如何从专有文件格式中提取必要的信息。有一些值得一提的工具,它们的优点在于我们甚至不需要 X,因为它们都是命令行工具。
antiword 将 Word 文档作为输入,并提取其中包含的信息,将其转换为纯 ASCII 文本或 PostScript。它试图尽可能地保持格式,并且在这方面做得相当不错。
它速度很快,而且由于它是一个命令行工具,我们可以将输出重定向到另一个进程或文件以进行进一步修改。要快速浏览文件的内容,您可以将输出管道传输到 less
antiword HUGE.DOC | less
或者,如果您想要一份纸质副本
antiword -p letter HUGE.DOC | lpr我发现 antiword 非常有用,以至于我用以下行替换了我以前用于处理 MS Word 文件的 mailcap 条目(我过去常常调用 abiword)
application/msword;antiword %s | vim -这使我可以从我的邮件阅读器 (mutt) 中阅读 .doc 附件,并且由于我将输出直接管道传输到我最喜欢的编辑器中,我甚至可以进行修改并将其保存到另一个文件中。请注意,通过将此条目放入我的 ~/.mailcap 中,所有尊重此文件的应用程序都将使用 antiword 和 vim 来显示 .docs。如果您使用的是图形浏览器(例如 Netscape),您可能需要使用不同的编辑器或使用 vim 的 -g 开关来生成 GUI 前端。
如果您是铁杆极简主义者,您会发现 command strings(GNU binutils 包的一部分)通常足以从 .doc 文件中提取纯文本信息。但是,antiword 比 strings 具有显着优势,因为它除了文本之外还可以提取图像。
有关各种选项的使用以及如何从 Word 文件中提取图像的详细信息,请参阅 antiword,网址为 www.winfield.demon.nl/index.html。
另一个应用程序,以前称为 mswordview,现在称为 wv,已经存在很长时间了。当我几年前第一次安装 Red Hat 5.2 时,Netscape 浏览器使用 mswordview 作为处理 .doc 文件的标准应用程序,因为它非常可靠地将它们转换为漂亮的 HTML。请注意,我不是在谈论 wordview,这是一款 Microsoft 产品。名称的相似性导致作者重命名了他的工具。
虽然浏览器使用将 Word 文件转换为 HTML 的应用程序当然很棒,但这并不总是理想的输出格式。因此,wv 现在包含一整套工具,可以将 Word 文档转换为各种格式,包括但不限于 ASCII 文本、HTML、LaTeX、PostScript 和 PDF。wv 在 GPL 下发布,并且可以免费下载。
到目前为止,我们已经了解了如何读取 Word 文档,甚至了解了有哪些选项可以编写文档,这些文档在 Winworld 中很可能是在 Word 中完成的。但我禁不住得出结论,文字处理器本身作为应用程序,在绝大多数情况下是不需要的或无用的。
例如,尝试编写简单进度报告的典型用户通常遵循一定的方案:写一些东西,使用鼠标突出显示文本,使用鼠标指向并单击并选择粗体,按 Return 键多次,按空格键多次,决定他/她不喜欢它,按 Delete 键多次,使用鼠标指向并单击并选择斜体,重复。
我完全意识到这不是利用强大的文字处理器的正确方法,但让我们面对现实,这正是大多数用户(那些为之设计这些“用户友好”应用程序的人)的工作方式。输入目录、参考书目、交叉引用等所需的工作量只能想象。
最终,结果是一个花费数小时准备的文档,并且只有在使用特定版本的此文字处理器的此平台上才能按预期显示。为了避免这种不良做法,让我们研究一些准备平台无关文档的替代方法。
正如我多次提到的,大多数文档中包含的信息是纯文本。有时,一些花哨的格式可能很好,但它是可选的。文档编写者的主要兴趣应该是传达信息。
简单、纯粹的 ASCII 文本通常足以将信息从一个人发送给另一个人——这正是例如电子邮件仍然是文本媒体的原因。电子邮件中的 HTML 不会为内容添加任何内容。ASCII 文本可以从任何地方使用任何编辑器读取(而不仅仅是“任何编辑器,包括 Microsoft Word...”)。通过清晰地组织文本,通过使用段落和由连字符构成的水平线,甚至通过使用 Usenet 上使用的 *粗体*、/斜体/ 和 _下划线_ 文本,可以编写清晰、易于阅读和理解,最重要的是,可移植的文档。
虽然纯 ASCII 文本应该是大多数情况下的选择,但不可否认的是,有时人们可能需要或想要更多格式。好吧,无需再次挖出旧的文字处理器。只需使用 LyX,LaTeX 的图形前端。
LaTeX 是一种惊人的排版引擎,源自 TeX。它以 .tex 文件作为输入并对其进行排版,生成 .dvi 文件。它适用于各种平台,并且使用 LaTeX 排版的文档看起来非常专业。但是,您可以使用您最喜欢的编辑器来创建输入文件,因为 LaTeX 是一个命令行工具。
使用 LaTeX 时,人们可以专注于文档的内容而不是其外观,因为排版引擎将负责布局。.tex 文件包含一些标签(可能让您想起 HTML)来确定文本的显示方式。
这是一种与文字处理器完全不同的文档编写方式;不再需要指向和单击以及突出显示和重新考虑等等。但是,对于习惯使用 GUI 的人来说,这可能令人生畏。
现在,这就是 LyX 的好人发挥作用的地方。他们为 LaTeX 开发了一个 GUI,使经验不足的用户能够利用 TeX 的强大功能,而无需从头开始学习(但仍然可以学习)。
乍一看,LyX 可能看起来类似于您普通的文字处理器,但如果您按照教程进行操作,您将很快看到差异,以及如何通过专注于您的工作和材料而不是视觉表示来提高工作效率。
如果您经常远程连接到您的机器来完成工作,您并不总是能够导出您的显示或转发 X。这时您会开始欣赏命令行的强大功能——您会发现您所需的一切都在您的指尖。通过使用您最喜欢的编辑器(在我的例子中是 vim)和 LaTeX,您可以通过连接到机器的单个终端轻松完成所有工作。
LyX 和 LaTeX 的另一个优点是您可以轻松地将文件导出为平台无关的格式,例如 PostScript 或 PDF。通过将 make 的强大功能与 LaTeX 的强大功能相结合,只需几个命令即可完成此操作。例如,本文档——我只需使用命令 make pdf 即可将输入文件转换为漂亮的 PDF(图 4)。
即使 Makefile 本身(见清单 1)很简单,它也允许我使用几个不同的命令行工具(例如 ps2pdf 和 latex2html)轻松地将文档转换为各种输出格式。
最后,LaTeX 是可扩展的——您可以编写自己的样式来实现不同的结果,具体取决于您正在编写的文档类型。但最有可能的是,其他人已经这样做了,并将其上传到了 Comprehensive Tex Archive Network(CTAN,TeX 相当于 Perl 的 CPAN)。
简而言之,无论您选择哪种方式处理文字处理,都需要强调以可移植文档格式传达信息的重要性。尽量向与您通信的人,向那些不断向您发送 MS Word 文档然后坚持要求您“修理您的计算机”的人解释清楚,当您告诉他们您无法打开它们或某些格式丢失时。我发现,如果以友好的方式解释 PDF 或 PS 例如如何几乎可以在每个平台上的任何人读取,偶尔可以教育除最顽固的 Winworld 公民之外的所有人。
就我个人而言,我确信您会发现 LaTeX 即使对于创建专业(外观)文档的这些日常小任务也远胜一筹。但是,为了利用 LaTeX 的优势,有必要将您的思想从您可能习惯的事物中解放出来。这可能需要一段时间,但不要害怕,那里有很多有用的文档。对于 LaTeX 初学者来说,最重要的文档可能是“LaTeX2 不太简短的介绍”,可从 Comprehensive TeX Archive Network (www.ctan.org) 获得。
在简短地浏览教程并最重要的是尝试一下并查看一些示例之后,您将永远不想回头。您可以相信我的话。
Jan Schaumann (jschauma@netmeister.org) 出生于德国伊瑟隆。他在德国阿尔特纳长大,并在德国马尔堡学习了两年现代德语文学和媒体以及美国研究,攻读硕士学位。他于 1998 年移居纽约市。