⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sgml-guide-1.html

📁 Linux初学者最好的老师就是howto了。相当于函数man。
💻 HTML
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
 <TITLE>SGML-Tools 使用说明中译版: 简介</TITLE>
 <LINK HREF="SGML-Guide-2.html" REL=next>

 <LINK HREF="SGML-Guide.html#toc1" REL=contents>
</HEAD>
<BODY>
<A HREF="SGML-Guide-2.html">Next</A>
Previous
<A HREF="SGML-Guide.html#toc1">Contents</A>
<HR>
<H2><A NAME="s1">1. 简介</A></H2>

<P>这是一份 SGML-Tools 文件处理系统的使用说明.SGML-Tools 提供一个 SGML DTD (文件形态定义,Document Type Definition)
及一组「置换档(replacement files)」,可以将 SGML 转换为 groff, LaTeX, HTML, GNU info, LyX, 与 RTF 的原始档.
<P>SGML-Tools 主要以 
<A HREF="mailto:thomas.gordon@gmd.de">Tom Gordon</A> 的 QWERTZ DTD 为基础发展的.
<P>
<H2><A NAME="ss1.1">1.1 关於此文件</A>
</H2>

<P>这份文件以附在 SGML-Tools 上的 linuxdoc DTD 所撰写的.
它几乎包含所有使用这份 DTD 来写 SGML 文件所需知道的事情.
请参考 <CODE>example.sgml</CODE> 这份 SGML □例,你可以拿它当作你自己文件的□本.
<P>
<H2><A NAME="ss1.2">1.2 为何用 SGML?</A>
</H2>

<P>我选择使用 SGML 是因为 SGML 是专门用来转换成其它格式的.
SGML 是 Standard Generalized Markup Language 的简称,它允许你指定文件的<EM>结构</EM>---也就是,用何种事物来标示文件.
你使用一份 DTD (文件形态定义) 来指定文件的结构.linuxdoc 是一种指定 Linux HOWTOs 与其它文件的 DTD.
QWERTZ 是另一种 DTD; SGML 的标准提供书,文章,及其馀一般文件所使用的 DTD.
<P>DTD 指定文件中「组成元素」的名称.组成元素就是一种结构---例如章,节,段落,或是更小的像是这样的
<EM>强调文字</EM>.然而跟 LaTeX 不同的是,这些组成元素并非 SGML 本身内含的.linuxdoc DTD
就定义了类似 LaTeX 中的组成元素---你有章,节,或是「环境」等等.然而,利用 SGML 
你可以照你喜欢定义文件的任何结构.就某方面来说,SGML 就像是低阶的 TeX,而 linuxdoc DTD
则像是 LaTeX.
<P>别被这类比搞混了.SGML 并<EM>不是</EM>一种文件格式化系统.没有所谓的「SGML 格式」.
SGML 的原始档<EM>只是</EM>用来转换成其它格式以便处理的.还有,SGML 本身是用来指定文件的结构.
没有 SGML 本身的文字格式化工具或是「巨集」之类的.所有的一切都定义於 DTD 中.
没有 DTD 你不能使用 SGML,一份 DTD 定义了 SGML 该做什麽.
<P>
<H2><A NAME="ss1.3">1.3 它如何运作</A>
</H2>

<P>这里解释如何使用 SGML-Tools 处理文件.首先,你需要一份 DTD.我用的是 QWERTZ DTD,
它本来是一群人因为需要类似 LaTeX 的 DTD 而做的.我将 QWERTZ DTD 修改成 linuxdoc DTD
以符合我们的需求.DTD 不过设定了文件的结构.它看起来像是这个样子的:
<P>
<BLOCKQUOTE><CODE>
<PRE>
&lt;!element article - -
    (titlepag, header?, 
     toc?, lof?, lot?, p*, sect*, 
     (appendix, sect+)?, biblio?) +(footnote)>
</PRE>
</CODE></BLOCKQUOTE>
<P>这部份设定了「文件」的整个结构,就像是 LaTeX 的「documentstyle」.
这文件包含了一个书页名(<CODE>titlepag</CODE>),一个可有可无的标题(<CODE>header</CODE>),一个可选用的内容列表(<CODE>toc</CODE>),可选用的图形列表(<CODE>lof</CODE>)与表格列表(<CODE>lot</CODE>),任意数量的段落(<CODE>p</CODE>),任意数量的章节(<CODE>sect</CODE>),可选用的附录(<CODE>appendix</CODE>),一个可选用的参考书目(<CODE>biblio</CODE>)以及注解(<CODE>footnote</CODE>).
<P>你可看出,DTD 并未说明文件应如何被格式化,或它看起来长得怎麽样.
它只不过定义了文件由何种部份所组成.在文件的另一个地方定义了 
<CODE>titlepag</CODE>, <CODE>header</CODE>, <CODE>sect</CODE> 及其馀的组成元素.
<P>写文件时你并不需要知道任何关於 DTD 的文法规则.我只不过让你看一下它长得什麽样子还有它做了什麽.
但你<EM>必需</EM>熟悉这份 DTD 所定义的文件<EM>结构</EM>.否则,在尝试写文件时你可能会违反结构,
而且被错误讯息搞昏了.下面我们会描述 SGML 文件结构的细节.
<P>接下来就是用这份 DTD 所定义的结构来写文件了.再说一次,linuxdoc DTD 使得文件看起来长得像 
LaTeX---所以很容易遵从.用 SGML 的术语来说,使用某一个特别的 DTD 来撰写的单一文件叫做那份
DTD 的「案例(instance)」.
<P>为了将 SGML 原始档转换成其它格式(例如 LaTex 或 groff)以便处理,你所写的 SGML 原始档必须经
SGML <EM>解析器</EM>处理过.我用的是 James Clark(<CODE>
<A HREF="mailto:jjc@jclark.com">jjc@jclark.com</A></CODE>) 所写的 <CODE>sgmls</CODE> 解析器, 
他也是 <CODE>groff</CODE> 的作者.它用起来很方便.<CODE>sgmls</CODE> 读入你的文件,检查它遵循 DTD 所定义的结构.
它同时将你文件中的「巨集」和元素展开,以方便下一阶段的 <CODE>sgmlsasp</CODE> 来处理.
<P><CODE>sgmlsasp</CODE> 用来将 <CODE>sgmls</CODE> 的输出结果转换成另一种格式(如 LaTeX).
它使用<EM>置换档</EM>将原始 SGML 文件中的组成元素转换成「目标」格式(如 LaTeX 或 groff)对应的原始档.
<P>例如,一部份 LaTeX 的<EM>置换档</EM>长得像这样:
<BLOCKQUOTE><CODE>
<PRE>
&lt;itemize>    +    "\\begin{itemize}   +
&lt;/itemize>   +    "\\end{itemize}    +
</PRE>
</CODE></BLOCKQUOTE>

它说明了当你在 SGML 原始档中使用 <CODE>itemize</CODE> 元素时,应该被置换成 LaTeX 原始档中的
<BLOCKQUOTE><CODE>
<PRE>
\begin{itemize}
</PRE>
</CODE></BLOCKQUOTE>

(我说过了,DTD 中的元素像极了它们在 LaTeX 中的对应物.)
<P>因此,要将 SGML 转换成其它格式,你所要做的就是为此格式写一个新的<EM>置换档</EM>,
在新格式中为每一 SGML 组成元素指定适当的对应.事实上,没这麽简单---例如,
如果你尝试转换成和你的 DTD 完全不同的结构,你就有麻烦.不过,
比起要为每一种格式写单独的解析器与转换程式还是要简单的多.
SGML 提供一种一般的系统将一种原始档转换成许多格式.
<P>一但 <CODE>sgmlsasp</CODE> 转换完成,你就有与原先 SGML 原始文件相对应的 LaTeX 原始档,
你可以像一般的 LaTeX 档一样来使用它.下面我会示□如何做这样的转换与格式化.
你只要用一行指令就够了.
<P>不过首先,我要说明如何安装及设定 SGML-Tools.
<P>
<HR>
<A HREF="SGML-Guide-2.html">Next</A>
Previous
<A HREF="SGML-Guide.html#toc1">Contents</A>
</BODY>
</HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -