?? sgml-guide-1.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 文件處理系統(tǒng)的使用說明.SGML-Tools 提供一個 SGML DTD (文件形態(tài)定義,Document Type Definition)
及一組「置換檔(replacement files)」,可以將 SGML 轉(zhuǎn)換為 groff, LaTeX, HTML, GNU info, LyX, 與 RTF 的原始檔.
<P>SGML-Tools 主要以
<A HREF="mailto:thomas.gordon@gmd.de">Tom Gordon</A> 的 QWERTZ DTD 為基礎(chǔ)發(fā)展的.
<P>
<H2><A NAME="ss1.1">1.1 關(guān)於此文件</A>
</H2>
<P>這份文件以附在 SGML-Tools 上的 linuxdoc DTD 所撰寫的.
它幾乎包含所有使用這份 DTD 來寫 SGML 文件所需知道的事情.
請參考 <CODE>example.sgml</CODE> 這份 SGML □例,你可以拿它當(dāng)作你自己文件的□本.
<P>
<H2><A NAME="ss1.2">1.2 為何用 SGML?</A>
</H2>
<P>我選擇使用 SGML 是因為 SGML 是專門用來轉(zhuǎn)換成其它格式的.
SGML 是 Standard Generalized Markup Language 的簡稱,它允許你指定文件的<EM>結(jié)構(gòu)</EM>---也就是,用何種事物來標(biāo)示文件.
你使用一份 DTD (文件形態(tài)定義) 來指定文件的結(jié)構(gòu).linuxdoc 是一種指定 Linux HOWTOs 與其它文件的 DTD.
QWERTZ 是另一種 DTD; SGML 的標(biāo)準(zhǔn)提供書,文章,及其馀一般文件所使用的 DTD.
<P>DTD 指定文件中「組成元素」的名稱.組成元素就是一種結(jié)構(gòu)---例如章,節(jié),段落,或是更小的像是這樣的
<EM>強(qiáng)調(diào)文字</EM>.然而跟 LaTeX 不同的是,這些組成元素并非 SGML 本身內(nèi)含的.linuxdoc DTD
就定義了類似 LaTeX 中的組成元素---你有章,節(jié),或是「環(huán)境」等等.然而,利用 SGML
你可以照你喜歡定義文件的任何結(jié)構(gòu).就某方面來說,SGML 就像是低階的 TeX,而 linuxdoc DTD
則像是 LaTeX.
<P>別被這類比搞混了.SGML 并<EM>不是</EM>一種文件格式化系統(tǒng).沒有所謂的「SGML 格式」.
SGML 的原始檔<EM>只是</EM>用來轉(zhuǎn)換成其它格式以便處理的.還有,SGML 本身是用來指定文件的結(jié)構(gòu).
沒有 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 不過設(shè)定了文件的結(jié)構(gòu).它看起來像是這個樣子的:
<P>
<BLOCKQUOTE><CODE>
<PRE>
<!element article - -
(titlepag, header?,
toc?, lof?, lot?, p*, sect*,
(appendix, sect+)?, biblio?) +(footnote)>
</PRE>
</CODE></BLOCKQUOTE>
<P>這部份設(shè)定了「文件」的整個結(jié)構(gòu),就像是 LaTeX 的「documentstyle」.
這文件包含了一個書頁名(<CODE>titlepag</CODE>),一個可有可無的標(biāo)題(<CODE>header</CODE>),一個可選用的內(nèi)容列表(<CODE>toc</CODE>),可選用的圖形列表(<CODE>lof</CODE>)與表格列表(<CODE>lot</CODE>),任意數(shù)量的段落(<CODE>p</CODE>),任意數(shù)量的章節(jié)(<CODE>sect</CODE>),可選用的附錄(<CODE>appendix</CODE>),一個可選用的參考書目(<CODE>biblio</CODE>)以及注解(<CODE>footnote</CODE>).
<P>你可看出,DTD 并未說明文件應(yīng)如何被格式化,或它看起來長得怎麼樣.
它只不過定義了文件由何種部份所組成.在文件的另一個地方定義了
<CODE>titlepag</CODE>, <CODE>header</CODE>, <CODE>sect</CODE> 及其馀的組成元素.
<P>寫文件時你并不需要知道任何關(guān)於 DTD 的文法規(guī)則.我只不過讓你看一下它長得什麼樣子還有它做了什麼.
但你<EM>必需</EM>熟悉這份 DTD 所定義的文件<EM>結(jié)構(gòu)</EM>.否則,在嘗試寫文件時你可能會違反結(jié)構(gòu),
而且被錯誤訊息搞昏了.下面我們會描述 SGML 文件結(jié)構(gòu)的細(xì)節(jié).
<P>接下來就是用這份 DTD 所定義的結(jié)構(gòu)來寫文件了.再說一次,linuxdoc DTD 使得文件看起來長得像
LaTeX---所以很容易遵從.用 SGML 的術(shù)語來說,使用某一個特別的 DTD 來撰寫的單一文件叫做那份
DTD 的「案例(instance)」.
<P>為了將 SGML 原始檔轉(zhuǎn)換成其它格式(例如 LaTex 或 groff)以便處理,你所寫的 SGML 原始檔必須經(jīng)
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 所定義的結(jié)構(gòu).
它同時將你文件中的「巨集」和元素展開,以方便下一階段的 <CODE>sgmlsasp</CODE> 來處理.
<P><CODE>sgmlsasp</CODE> 用來將 <CODE>sgmls</CODE> 的輸出結(jié)果轉(zhuǎn)換成另一種格式(如 LaTeX).
它使用<EM>置換檔</EM>將原始 SGML 文件中的組成元素轉(zhuǎn)換成「目標(biāo)」格式(如 LaTeX 或 groff)對應(yīng)的原始檔.
<P>例如,一部份 LaTeX 的<EM>置換檔</EM>長得像這樣:
<BLOCKQUOTE><CODE>
<PRE>
<itemize> + "\\begin{itemize} +
</itemize> + "\\end{itemize} +
</PRE>
</CODE></BLOCKQUOTE>
它說明了當(dāng)你在 SGML 原始檔中使用 <CODE>itemize</CODE> 元素時,應(yīng)該被置換成 LaTeX 原始檔中的
<BLOCKQUOTE><CODE>
<PRE>
\begin{itemize}
</PRE>
</CODE></BLOCKQUOTE>
(我說過了,DTD 中的元素像極了它們在 LaTeX 中的對應(yīng)物.)
<P>因此,要將 SGML 轉(zhuǎn)換成其它格式,你所要做的就是為此格式寫一個新的<EM>置換檔</EM>,
在新格式中為每一 SGML 組成元素指定適當(dāng)?shù)膶?yīng).事實上,沒這麼簡單---例如,
如果你嘗試轉(zhuǎn)換成和你的 DTD 完全不同的結(jié)構(gòu),你就有麻煩.不過,
比起要為每一種格式寫單獨的解析器與轉(zhuǎn)換程式還是要簡單的多.
SGML 提供一種一般的系統(tǒng)將一種原始檔轉(zhuǎn)換成許多格式.
<P>一但 <CODE>sgmlsasp</CODE> 轉(zhuǎn)換完成,你就有與原先 SGML 原始文件相對應(yīng)的 LaTeX 原始檔,
你可以像一般的 LaTeX 檔一樣來使用它.下面我會示□如何做這樣的轉(zhuǎn)換與格式化.
你只要用一行指令就夠了.
<P>不過首先,我要說明如何安裝及設(shè)定 SGML-Tools.
<P>
<HR>
<A HREF="SGML-Guide-2.html">Next</A>
Previous
<A HREF="SGML-Guide.html#toc1">Contents</A>
</BODY>
</HTML>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -