像字处理器一样简单的 EZ
AUIS 的根源可以追溯到 1982 年,当时卡内基梅隆大学和 IBM 公司决定联合开发一个基于个人计算机的校园计算设施,以取代当时校园内的分时系统。IBM 不仅提供了慷慨的资金,还提供了一些有才华的人才和 IBM 开发项目的访问权限。
结果是一个我们所知的图形用户界面,即 Andrew 用户界面系统,以及一个文件系统,即 Andrew 文件系统。该文件系统构成了 Transarc 公司分布式文件系统 (DFS) 的基础,并作为开放系统基金会软件的一部分提供。
由多家公司和大学组成的 Andrew 联盟为 AUIS 的当前开发提供资金。AUIS 可在各种平台上使用,包括 Linux、AIX、Solaris、Ultrix 和 HP UX 以及其他平台。
6 月,Andrew 联盟发布了 Andrew 用户界面系统 (AUIS) 的 6.3 版本。此版本提供了对 Linux 的支持,此后不久,软件包 auis63L0-wp.tgz 在 sunsite.unc.edu 的 /pub/Linux/X11/andrew 中提供。这个特定的软件包仅包含 AUIS 的一小部分,适合作为文字处理器使用。本文将介绍 AUIS 的一些文字处理方面。Linux Journal 的未来文章将介绍 AUIS 的其他部分。
ez 是最简单、最通用的 AUIS 应用程序。它加载文档(或创建一个新文档)并在窗口中显示它。仅此而已。其他所有事情都由文档本身控制。例如,如果您正在编辑文本文档,您将获得所有文本编辑命令。如果您正在编辑图片,您将获得图片编辑命令。如果您正在编辑带有图片的文本文档,您将同时获得两者,具体取决于您当时正在处理的部分。应用程序 ez 并不关心(好像任何软件真的会关心一样)。
乍一看,您在 ez 中看到的文档显示似乎是所见即所得 (WYSIWYG)。但是,经过进一步调查,您会发现它实际上并非如此。虽然文档以各种字体和图片显示,就像您在纸上看到的那样,但应用程序不强制执行任何“页面”概念。如果您使屏幕非常宽或窄,文本将重新排版以适应窗口,而不是页面的某些符号。文档以 PostScript™ 格式打印(嗯,不完全是,但最终结果就是这样),当然 X 字体与打印时使用的字体不太匹配。因此,ez 可能更适合称为“几乎所见即所得”编辑器。一位评论员称之为 “WYSLRN”(你看到的看起来真漂亮)。
在图 1 中,您可以看到一个小文档的示例。应用程序和文件名显示在标题栏中。文档底部显示一个小消息区域。请注意,文档顶部有一个用于下拉菜单的菜单栏。您可以像通常期望的那样选择这些菜单。作为快捷方式,当您按下鼠标中键(或对于双键鼠标同时按下两个按钮)时,AUIS 应用程序将弹出菜单。
滚动条看起来有点像 Motif,但行为不同。您可以像往常一样按鼠标左键向前滚动,但与某些滚动条不同,您可以通过按鼠标右键向后滚动。在较大的文档中,您可以“抓取”滚动条中的“框”以快速滚动浏览文档。
最常用的功能已分配给一系列键。许多常见的 Emacs 键绑定适用于 ez(例如 ^x^c)。几个功能键已被分配有用的绑定。F1-3 将调用复制、剪切和粘贴功能。AUIS 应用程序将记住过去几个复制/剪切缓冲区,F4 将允许您将它们粘贴到文档中,然后循环浏览它们。这允许您通过简单地按几次 4 来粘贴两到三个对象,而无需重复选择-复制-粘贴序列。我一直使用此功能,并且在使用没有此功能的其他系统时感到束手束脚。
F5 将使选定的文本变为斜体,F6 将使其变为粗体。F7(普通)将删除应用于区域的最后一个样式。例如,如果您按 F5、F6,然后按 F7,您的文本将保留斜体,因为普通功能删除了粗体样式。F8(最普通)将删除应用于该区域的所有嵌套样式。
AUIS 应用程序是高度可定制的。到目前为止描述的几乎所有内容都可以使其行为不同。我在此处描述的外观和感觉反映了 auis63L0-wp 发行版。未来的一篇文章将描述各种配置文件和设置,以及您如何控制这些文件和设置。
此 AUIS 发行版包含超过 800KB 的帮助文本(这大约是总量的三分之一)。有关于如何使用系统所有方面的广泛帮助信息,包括其配置和个性化文件。安装 AUIS 后,新手可能输入的第一个命令是 auishelp。
图 2 显示了同一文件的第二个窗口。当然,您可以一次编辑多个文件。您也可以在同一数据上打开两个窗口。如果您在任一窗口中输入数据或进行更改,另一个窗口会立即更新(如果更改在文档的可见部分中)。
如果您工作了几分钟但没有保存,ez 会自动为您保存。当底部消息行突然显示“正在检查点...”,然后显示“已检查点”时,您就可以知道正在发生这种情况。该文件被写入一个单独的文件,该文件的名称与原始文件名相同,只是附加了 “.CKP”。因此,如果您编辑 test.d,检查点文件将是 test.d.CKP。当您使用“保存”命令时,您的原始文件将被新版本替换,并且检查点文件将被删除。
重要的是要理解,ez 创建的文字处理文件具有自己独特的格式,就像您最喜欢的商业文字处理器一样。从一开始就方便地设计了这种格式,以允许 ez 文档通过传统的电子邮件系统发送。
这种格式是使 ez 如此简单的“魔力”。数据实际上定义了可以对其执行的操作。当读取数据时,与数据匹配的程序会自动为您加载。ez 不是一个单独的程序,而是一组可以相互协作的程序,每个程序都知道如何操作某种类型的对象。如果 ez 读取包含文本的文档,则文本编辑程序编辑文本对象。如果 ez 读取包含位图(图片)的文档,则位图编辑程序编辑位图对象。如果您的文档有几个不同的对象,则所有不同的程序会协同工作以编辑这些对象。
但是,您需要做的不仅仅是编辑文档。您需要打印它们并将它们发送给其他人,包括电子方式和纸质方式。因此,已经编写了过滤器以将 AUIS 文档转换为几种不同的格式。要打印文档,您可以将它们转换为 PostScript。要与运行其他文字处理系统的人员交换文档,您可以将它们转换为 RTF 格式,这是最常见的文档交换格式。您甚至可以将文档转换为纯 ASCII,尽管当然所有字体和图片都将丢失。
您可以使用 ez 执行的最简单的事情之一是向文档添加样式。样式显示为菜单项。如果您查看菜单,您会发现可以选择很多样式。在图 1 中,您可以看到一些更常见的样式——斜体、粗体、居中或左/右对齐,以及各种字体大小等等。
大多数样式可以和平共处——斜体和粗体形成粗斜体。其他样式会相互抵消——例如居中和右对齐文本。有些样式您可以多次应用——通过连续应用更大的字体来更改字体大小。要删除样式,请选择一个区域并选择“普通 (F7)”菜单项。要删除所有样式,请选择“最普通 (F8)”菜单项。您可以通过将光标放在文档中的某个点,然后输入“Esc-s”(按 Esc 键,然后按 “s” 键)来查看已应用哪些样式。在屏幕底部的消息区域中,您将看到适用于该点的样式的描述。
在图 1 中,您可以看到我们的文档有两种类型的数据——传统文本和小图片。从技术上讲,这些都是 ez 的嵌入对象。嵌入对象只是插入到其他数据(其他对象)中的一块数据(一个对象)。嵌入对象的行为方式与它是一个单独的文档完全相同。唯一的区别是它可能没有滚动条。
可以配置 ez,以便在创建文件时,某个嵌入对象将成为默认对象。例如,如果您在名为 test.d 或 test.doc 的文件上调用 ez,则菜单将包含文本嵌入对象以及编写像本文这样的论文所需的菜单项。当然,一旦文件被创建,ez 将自动使用数据本身指示的嵌入对象。类似地,编辑名为 test.ras 的文件会导致创建光栅嵌入对象。编辑 test.html 会导致创建 html 嵌入对象。
要在文本文档中创建新的嵌入对象,请将光标移动到您希望嵌入对象存在的位置,然后从“媒体”菜单中选择一个项目(或按 Esc-Tab)。在图 1 中,我选择了“光栅”嵌入对象。这将导致创建一个光栅对象,最初显示为一个空框。许多嵌入对象(但不是全部)允许将其他嵌入对象嵌入其中。添加光栅嵌入对象后,您正在编辑两个文档——每个文档都具有不同的属性。“编辑器”(对象)控制权基于光标所处的位置。在本例中,如果您单击光栅框,菜单卡将更改为光栅程序的菜单卡。单击框外的文本区域,文本菜单将返回。
某些嵌入对象对于文本文档的格式化具有特殊含义。它们通常有自己的菜单。如果您选择“插入分页符”菜单项,屏幕上会出现一条细水平线。这会导致文档打印或预览时开始新的一页。
可以使用“插入脚注”菜单项将脚注添加到文档中。脚注将显示为一个带有星号的小方块。可以通过简单地单击框来打开或关闭脚注。它们以内联方式显示,如图 3 所示,但在页面底部打印,正如您通常期望的那样。
可以通过在“媒体”菜单卡上插入页眉/页脚嵌入对象来为文档指定页眉或页脚。如图 3 所示,您可以指定各种字段。有一些特殊的 $-关键字可用于可变数据。选择“AUIS 帮助”菜单,然后选择“显示关于...的帮助”。当提示时,输入 headers 以获取有关页眉的更多详细信息。或者,您可以在 xterm 窗口中输入 auishelp headers。
ez 附带的样式列表通常足以满足简单文档的需求。但是,您可能需要更好地控制制表位、段落缩进或凸出,或双倍行距。也许您想要自己的组合样式,该样式可以通过单个菜单项设置边距、字体、磅值大小。所有这些以及更多都可以通过选择“编辑样式”菜单选项来完成。这将弹出一个分为几个面板的第二个窗口,如图 4 所示。
样式编辑器窗口有自己的菜单。窗口的上半部分(双线以上)用于选择要编辑的样式。左侧面板是包含样式选项的所有菜单卡的列表。如果您选择一个菜单卡名称,它将被突出显示,并且其样式列表将显示在右侧面板中。一旦您选择了一个菜单卡和样式名称,面板的其余部分将变为活动状态。它显示适用于所选样式的属性。
要更改样式的属性,请突出显示属性面板中的不同选项。文档在重新绘制之前不会更改。您可以选择“更新文档”以强制重新绘制。
选择菜单项“添加样式”以创建您自己的样式。当您执行此操作时,屏幕底部的消息区域会提示您输入菜单名称。您应该输入一对名称,例如“区域,我的方式”。这将在“区域”菜单中添加一个菜单项“我的方式”。然后,您应该为您新的“我的方式”样式选择所需的属性。
当您使用样式编辑器编辑或添加样式时,更改只会影响您当前正在编辑的文档。它们保存在数据中,并在您稍后编辑文档时存在。如果您复制包含新样式的文本并将其粘贴到新文档中,则该样式将传输到新文档,但该样式的属性将不会传输。这是因为样式的属性保存在您看不到的文件顶部的区域中。因此,当您复制选定区域时,您只会获得样式的名称,而不会获得样式的定义(您看不到)。您将需要向第二个文档添加新的“我的方式”样式,或了解模板。
模板是一组现成的格式化信息或指令,您可以将其应用于文本文档。模板描述两种类型的信息
样式规范,它确定可以应用于文档的格式化样式(例如粗体和居中),以及它们如何准确地更改您应用它们的文本的外观。因此,模板通过使样式始终看起来相同,为文档赋予标准外观。
设置文本,即您希望在许多文档中一遍又一遍地包含的文本。在这种情况下,模板可以为您节省时间,因为您只需键入一次该文本。ez 为您提供了广泛的模板集。其中大多数仅包含样式规范,但有些也包含设置文本(例如,用于创建备忘录的模板)。在线帮助中详细描述了创建模板的方法(在 xterm 窗口中输入命令 auishelp templates)。
整个 AUIS 系统都设计为使用 PostScript 打印。这是多年前做出的决定,并且仍在过渡中。在此版本中,AUIS 对象都生成 troff 输出——以及大量的嵌入式 PostScript。然后处理 troff 以生成必要的 PostScript。在 auis63L0-wp 发行版中,默认打印命令将调用 shell /usr/andrew/etc/atkprint。默认预览命令调用 shell /usr/andrew/etc/atkpreview。这些 shell 中的每一个都将调用 groff 格式化程序来生成 PostScript 输出。在 atkpreview 中,groff 输出通过管道传输到 ghostview。
如果您没有 PostScript 打印机,您可以修改 atkprint 以通过管道将 PostScript 输出传输到 ghostscript,以生成适合您打印机的正确流。Andreas Klemm andreas@knobel.knirsch.de 编写了一个过滤器 apsfilter(可从 ftp. germany.eu.net 的 /pub/comp/i386/Linux/Local. EUnet/People/akl/apsfilter* 获取),该过滤器与您的 /etc/printcap 条目一起使用,并将自动将 PostScript 转换为正确的 DeskJet 流。我有一台 DeskJet 500 打印机,在这种模式下工作得非常好。
还有其他方法可以控制 AUIS 的打印/预览。这些将在未来一篇关于定制 AUIS 应用程序的文章中讨论。
邮件列表可在 info-andrew@andrew.cmu.edu 获取(发送电子邮件至 info-andrew-request@andrew.cmu.edu 进行订阅)。新闻组 comp.soft-sys.andrew 专门讨论 AUIS。World Wide Web 主页可以在 www.cs.cmu. edu:8001:/afs/cs.cmu.edu/project/atk-ftp/ web/andrew-home.html 找到。Prentice-Hall 出版了一本书,《使用 Andrew 工具包进行多媒体应用程序开发》(ISBN 0-13-036633-1)。可以从联盟获得一份优秀的教程,方法是发送电子邮件至 info-andrew-request@andrew.cmu.edu 索取手册《AUIS 用户指南》。
Terry 在 IBM 工作了 20 多年后,于去年离开了蓝色巨人。尽管他使用 Un*x 和 AUIS 超过六年,但他对于 Linux 来说还是一个相对的新手。Terry 从事合同编程,教授 C/C++ 和 Unix 课程,并撰写偶尔的技术文档。您可以通过 Software Toolsmiths 联系他,电话号码是 (507) 356-4710,或者通过电子邮件 tpg@mr.net。