📄 sgml-guide.txt
字号:
SGML-Tools 使用说明中译版 作者: Matt Welsh. Updated by Greg Hankins.译者: [1]C.W.Huang [2]cwhuang@phys.ntu.edu.tw v0.99.0, 29 November 1996. 翻译日期: 4-15 August 1997 _________________________________________________________________ 这份文件是 SGML-Tools 的使用说明,一种以 SGML 为基础,让你产生不同输出 格式的工具.你可以用单一的 SGML 原始文件产生纯文字档 (ASCII 与 ISO-8859-1), DVI, PostScript, HTML, GNU info, LyX, 与 RTF 档.这份文件 说明以 SGML-Tools 0.99.0. 为准. _________________________________________________________________ 1. 简介 * 1.1 关於此文件 * 1.2 为何用 SGML? * 1.3 它如何运作 2. 安装 * 2.1 安装软体 * 2.2 编排 SGML 文件 * 2.3 ISO 8859-1 字元集 3. 使用 SGML-Tools 撰写文件 * 3.1 基本概念 * 3.2 特殊字元 * 3.3 Verbatim 与 Code 环境 * 3.4 文件内容概观 * 3.5 交互参考 * 3.6 字型 * 3.7 列表 * 3.8 更进一步的资讯 _________________________________________________________________ 1. 简介 这是一份 SGML-Tools 文件处理系统的使用说明.SGML-Tools 提供一个 SGML DTD (文件形态定义,Document Type Definition) 及一组「置换 档(replacement files)」,可以将 SGML 转换为 groff, LaTeX, HTML, GNU info, LyX, 与 RTF 的原始档. SGML-Tools 主要以 [3]Tom Gordon 的 QWERTZ DTD 为基础发展的. 1.1 关於此文件 这份文件以附在 SGML-Tools 上的 linuxdoc DTD 所撰写的. 它几乎包含所有使 用这份 DTD 来写 SGML 文件所需知道的事情. 请参考 example.sgml 这份 SGML □例,你可以拿它当作你自己文件的□本. 1.2 为何用 SGML? 我选择使用 SGML 是因为 SGML 是专门用来转换成其它格式的. SGML 是 Standard Generalized Markup Language 的简称,它允许你指定文件的结构--- 也就是,用何种事物来标示文件. 你使用一份 DTD (文件形态定义) 来指定文件 的结构.linuxdoc 是一种指定 Linux HOWTOs 与其它文件的 DTD. QWERTZ 是另 一种 DTD; SGML 的标准提供书,文章,及其馀一般文件所使用的 DTD. DTD 指定文件中「组成元素」的名称.组成元素就是一种结构---例如章,节,段 落,或是更小的像是这样的 强调文字.然而跟 LaTeX 不同的是,这些组成元素 并非 SGML 本身内含的.linuxdoc DTD 就定义了类似 LaTeX 中的组成元素---你 有章,节,或是「环境」等等.然而,利用 SGML 你可以照你喜欢定义文件的任 何结构.就某方面来说,SGML 就像是低阶的 TeX,而 linuxdoc DTD 则像是 LaTeX. 别被这类比搞混了.SGML 并不是一种文件格式化系统.没有所谓的「SGML 格式 」. SGML 的原始档只是用来转换成其它格式以便处理的.还有,SGML 本身是用 来指定文件的结构. 没有 SGML 本身的文字格式化工具或是「巨集」之类的.所 有的一切都定义於 DTD 中. 没有 DTD 你不能使用 SGML,一份 DTD 定义了 SGML 该做什麽. 1.3 它如何运作 这里解释如何使用 SGML-Tools 处理文件.首先,你需要一份 DTD.我用的是 QWERTZ DTD, 它本来是一群人因为需要类似 LaTeX 的 DTD 而做的.我将 QWERTZ DTD 修改成 linuxdoc DTD 以符合我们的需求.DTD 不过设定了文件的结 构.它看起来像是这个样子的: <!element article - - (titlepag, header?, toc?, lof?, lot?, p*, sect*, (appendix, sect+)?, biblio?) +(footnote)> 这部份设定了「文件」的整个结构,就像是 LaTeX 的「documentstyle」. 这文 件包含了一个书页名(titlepag),一个可有可无的标题(header),一个可选用的 内容列表(toc),可选用的图形列表(lof)与表格列表(lot),任意数量的段落(p) ,任意数量的章节(sect),可选用的附录(appendix),一个可选用的参考书 目(biblio)以及注解(footnote). 你可看出,DTD 并未说明文件应如何被格式化,或它看起来长得怎麽样. 它只不 过定义了文件由何种部份所组成.在文件的另一个地方定义了 titlepag, header, sect 及其馀的组成元素. 写文件时你并不需要知道任何关於 DTD 的文法规则.我只不过让你看一下它长得 什麽样子还有它做了什麽. 但你必需熟悉这份 DTD 所定义的文件结构.否则, 在尝试写文件时你可能会违反结构, 而且被错误讯息搞昏了.下面我们会描述 SGML 文件结构的细节. 接下来就是用这份 DTD 所定义的结构来写文件了.再说一次,linuxdoc DTD 使 得文件看起来长得像 LaTeX---所以很容易遵从.用 SGML 的术语来说,使用某一 个特别的 DTD 来撰写的单一文件叫做那份 DTD 的「案例(instance)」. 为了将 SGML 原始档转换成其它格式(例如 LaTex 或 groff)以便处理,你所写的 SGML 原始档必须经 SGML 解析器处理过.我用的是 James Clark( [4]jjc@jclark.com) 所写的 sgmls 解析器, 他也是 groff 的作者.它用起来很 方便.sgmls 读入你的文件,检查它遵循 DTD 所定义的结构. 它同时将你文件 中的「巨集」和元素展开,以方便下一阶段的 sgmlsasp 来处理. sgmlsasp 用来将 sgmls 的输出结果转换成另一种格式(如 LaTeX). 它使用置换 档将原始 SGML 文件中的组成元素转换成「目标」格式(如 LaTeX 或 groff)对应 的原始档. 例如,一部份 LaTeX 的置换档长得像这样: <itemize> + "\\begin{itemize} +</itemize> + "\\end{itemize} + 它说明了当你在 SGML 原始档中使用 itemize 元素时,应该被置换成 LaTeX 原 始档中的 \begin{itemize} (我说过了,DTD 中的元素像极了它们在 LaTeX 中的对应物.) 因此,要将 SGML 转换成其它格式,你所要做的就是为此格式写一个新的置换档 , 在新格式中为每一 SGML 组成元素指定适当的对应.事实上,没这麽简单--- 例如, 如果你尝试转换成和你的 DTD 完全不同的结构,你就有麻烦.不过, 比 起要为每一种格式写单独的解析器与转换程式还是要简单的多. SGML 提供一种 一般的系统将一种原始档转换成许多格式. 一但 sgmlsasp 转换完成,你就有与原先 SGML 原始文件相对应的 LaTeX 原始档 , 你可以像一般的 LaTeX 档一样来使用它.下面我会示□如何做这样的转换与 格式化. 你只要用一行指令就够了. 不过首先,我要说明如何安装及设定 SGML-Tools. 2. 安装 首先从这个地方 * [5]ftp://sunsite.unc.edu/pub/Linux/utils/text/sgml-tools-0.99.0.ta r.gz 取得 sgml-tools-0.99.9.tar.gz. 你可以从 [6]SGML-Tools WWW Page 取得最新的资讯. sgml-tools-0.99.0.tar.gz 包含了所有你需要用来写 SGML 文件并转换为 groff, LaTeX, HTML, GNU info, LyX, 与 RTF 的东西.除此之外,你可能还需 要下列的工具---SGML 系统并不需要这些,但我建议你取得这些工具以方便你转 换文件,在你公开散布你的文件前将先确定它们看起来没问题. 1. groff. 你必须使用 1.08 或更新的版本.你可以从 [7]ftp://prep.ai.mit.edu/pub/gnu 取得.在 [8]ftp://sunsite.unc.edu/pub/Linux/utils/text 可找到 Linux 的执行档 .你必需使用 groff 让你的 SGML 文件产生纯文字档. nroff 不行! 2. TeX 与 LaTeX. 这几乎在每个地方都有,你应该可以毫无困难地找到并安装 (在 [9]sunsite.unc.edu 可以找到 Linux 的执行档) 当然,如果你要用 LaTeX 来格式化你的 SGML 文件你才需要 TeX/LaTeX. 3. flex. lex 可能不行.你可以从 [10]ftp://prep.ai.mit.edu/pub/gnu 取得 . 4. gawk 与 GNU info tools, 用来格式化与预视 info 档案. 在 [11]ftp://prep.ai.mit.edu/pub/gnu, 或 [12]ftp://sunsite.unc.edu/pub/Linux/utils/text 可以找到 gawk, 还有 [13]ftp://sunsite.unc.edu/pub/Linux/system/Manual-pagers 可找到 GNU info tools. awk 不行. 5. LyX (一个半所见即所得(quasi-WYSIWYG) 的 LaTeX 界面),可在 [14]ftp://ftp.via.ecp.fr 找到. 2.1 安装软体 安装与设定 SGML-Tools 所需的步骤是: 1. 首先,在某处解开 sgml-tools-0.99.0.tar.gz 的压缩档. 它将产生 sgml-tools-0.99.0 的目录.在那里解开都没有关系,只是不要把里面的东 西搬离 sgml-tools-0.99.0 目录就行. 2. 阅读 INSTALL 档,它包含了安装过程的细节. 如果一切顺利,你就可以使用它了. 译注: 其实就是执行 install 这支 shell script,回答它的问题就行了! 2.2 编排 SGML 文件 例如说你想要编排一份 SGML 文件叫 foo.sgml,这里有一份简短的说明如何输出 成不同的格式.完整的选项列表请参考 man pages. 产生纯文字输出 如果你想产生纯文字档,使用这个指令: % sgml2txt foo.sgml 请注意我已调整 groff 转换为纯文字输出.也就是说,我将页首,页码,边框等 去掉. 经过一些修改你可以从 groff 的输出产生 PostScript 与 DVI 格式,但 我建议你用 LaTeX 比较好. 你可以为 man pages 产生 groff 的原始档,而用 groff -man 将其编排. 执行 这个指令: % sgml2txt -man foo.sgml 产生 LaTeX, DVI 或 PostScript 输出 要从 SGML 原始档产生 LaTeX 文件,就用: % sgml2latex foo.sgml 如果你希望产生 PostScript 输出(经由 dvips),可用 -p 选项: % sgml2latex -p foo.sgml 或者你可以加上 -d 选项产生 DVI 档: % sgml2latex -d foo.sgml 产生 HTML 输出 如果你希望输出 HTML 档,用这指令: % sgml2html -img foo.sgml 这将产生 foo.html, foo-1.html, foo-2.html, 等等 --- 每一章一个档案 .foo.html 是首页,可以用你的 WWW 浏□器观看. 确定你所有的 HTML 档在同 一目录下,因为它们是用相对的 URL 彼此参考的. HTML 档的图示目录指向 $SGMLTOOLSLIB/icons 所定义的目录. 这些档都应被拷贝到最後的位置上 .$SGMLTOOLSLIB/ 定义在 SGML 转换程序的最开头. 如果你使用 sgml2html 而没有加上 -img 选项的话,产生的 HTML 文件会加上导 读用的 "Previous", "Next", 以及 "Table of Contents" 标签. 你可以藉由在 $SGMLTOOLSLIB/rep/html/<filename> 建立一个档案以盖过这些预设, 并且以你 自己的话来取代它们.该档案的格式如下所示: he following format: PrevPage: newvalue NextPage: newvalue TOC: newvalue □例请参阅 deutsch. 产生 GNU Info 格式的输出 如果你想要将你的档案编排成 GNU Info 浏览程式接受的格式,只要使用下列指 令: % sgml2info foo.sgml 产生 LyX 格式的输出 欲产生 LyX 格式的出,使用这个指令: % sgml2lyx foo.sgml 产生 RTF 格式的输出 如果你想产生 RTF 格式的输出,执行这个指令: % sgml2rtf foo.sgml 这将会产生 foo.rtf, 以及 foo-1.rtf, foo-2.rtf, 等等档案---文件的每一节 自成一个档案. 检查 SGML 语法 如果你只是想从 SGML 转换中抓出你的错误,可以使用 sgmlcheck 这个指令稿. 例如: % sgmlcheck foo.sgml2.3 ISO 8859-1 字元集 ISO 8859-1 (latin1) 字元集可以用在纯文字 LaTeX, HTML, LyX, 以及 RTF 输 出的国际字元(GNU Info 未来可能支援 ISO 8859-1). 要使用这项功能的话,可 以加上 -l 选项给编排指令稿,例如: % sgml2txt -l foo.sgml 你也可以在 SGML 原始文件中使用 ISO 8859-1 字元,它们会自动被转换成对应 文件格式的适当逸出字元(escape codes). 3. 使用 SGML-Tools 撰写文件 使用 SGML-Tools DTD 撰写文件的过程大部分是非常容易的,而且有点类似 LaTeX. 然而,仍然有些限制要注意.这一节我将介绍 SGML 文件的撰写. SGML 文件□例(及写作指引)请参阅 example.sgml 档案,你可以拿来当作自己文 件的□本. 在此我将讨论 SGML 的各项功能,但是以原始文件作为□例不是很有 可读性. 因此,印出 example.sgml 的原始码(编排後的输出),如此你就有真实 的参考□例。 3.1 基本概念 仔细看□例文件的原始文件,你会注意到里面有许多以角括号(< 及 >)标示的「 标签(tags)」. 标签单纯地指出某组成元素的起始,这里所谓的组成元素是一节 ,一段,一句斜体的文句,列表中的一个项目,以及诸如此类的结构. 使用标签 就像使用 LaTeX 指令如 \item 或是 \section{...} 等一般. 举个简单的例子,要产生这一段 粗体文字,我在原始码中键入 举个简单的例子,要产生这一段 <bf>粗体文字</bf>, ... <bf> 是这段粗体文字的开头,而 </bf> 是结尾. 你也可以使用这个简略形式: 举个简单的例子,要产生这一段 <bf/粗体文字/, ... 就是用斜线将粗体文字包住.(当然,如果被包含的文字含有线,你就必须使用长 的形式, 例如 Unix 的档案名称.) 关於特殊字元还有其它得要注意的问题 (这就是为什麽如果你仔细观察原始文件 就会注意到这些看起来很怪异 "&" 表示式;我将简短地说明这些符号). 在某些情况下,特定的组成元素之结尾标签是可选用的. 例如,你在某一节的开 始使用 <sect> 这个标签,然而,该节的结尾标签 (可以出现在该节主体本身结 束的地方,而不只是该节的名称後面!) 是可选用的而当你在同一个层次开始另外 一节的时候也就暗示著该节的结束. 一般来说你不需要担心这些细节;只要跟著 使用在 example.sgml 指引里的□例就可以了。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -