📄 sgml-guide-3.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 使用说明中译版: 使用 SGML-Tools 撰写文件</TITLE> <LINK HREF="SGML-Guide-2.html" REL=previous> <LINK HREF="SGML-Guide.html#toc3" REL=contents></HEAD><BODY>Next<A HREF="SGML-Guide-2.html">Previous</A><A HREF="SGML-Guide.html#toc3">Contents</A><HR><H2><A NAME="s3">3. 使用 SGML-Tools 撰写文件</A></H2><P>使用 SGML-Tools DTD 撰写文件的过程大部分是非常容易的,而且有点类似 LaTeX.然而,仍然有些限制要注意.这一节我将介绍 SGML 文件的撰写.SGML 文件□例(及写作指引)请参阅 <CODE>example.sgml</CODE> 档案,你可以拿来当作自己文件的□本.在此我将讨论 SGML 的各项功能,但是以原始文件作为□例不是很有可读性.因此,印出 <CODE>example.sgml</CODE> 的原始码(编排後的输出),如此你就有真实的参考□例。<P><H2><A NAME="ss3.1">3.1 基本概念</A></H2><P>仔细看□例文件的原始文件,你会注意到里面有许多以角括号(<CODE><</CODE> 及 <CODE>></CODE>)标示的「标签(tags)」.标签单纯地指出某组成元素的起始,这里所谓的组成元素是一节,一段,一句斜体的文句,列表中的一个项目,以及诸如此类的结构.使用标签就像使用 LaTeX 指令如 <CODE>\item</CODE> 或是 <CODE>\section{...}</CODE> 等一般.<P>举个简单的例子,要产生这一段 <B>粗体文字</B>,我在原始码中键入<BLOCKQUOTE><CODE><PRE>举个简单的例子,要产生这一段 <bf>粗体文字</bf>, ...</PRE></CODE></BLOCKQUOTE><CODE><bf></CODE> 是这段粗体文字的开头,而 <CODE></bf></CODE> 是结尾.你也可以使用这个简略形式:<BLOCKQUOTE><CODE><PRE>举个简单的例子,要产生这一段 <bf/粗体文字/, ...</PRE></CODE></BLOCKQUOTE>就是用斜线将粗体文字包住.(当然,如果被包含的文字含有线,你就必须使用长的形式,例如 Unix 的档案名称.)<P>关於特殊字元还有其它得要注意的问题(这就是为什麽如果你仔细观察原始文件就会注意到这些看起来很怪异 "&" 表示式;我将简短地说明这些符号).<P>在某些情况下,特定的组成元素之结尾标签是可选用的.例如,你在某一节的开始使用 <CODE><sect></CODE> 这个标签,然而,该节的结尾标签(可以出现在该节主体本身结束的地方,而不只是该节的名称後面!)是可选用的而当你在同一个层次开始另外一节的时候也就暗示著该节的结束.一般来说你不需要担心这些细节;只要跟著使用在 <CODE>example.sgml</CODE> 指引里的□例就可以了。<P><H2><A NAME="ss3.2">3.2 特殊字元</A></H2><P>很明显的,角括号它们本身就是 SGML 原始文件里的特殊字元.另外还有其它该注意的字元.例如,假设你想键入由角括号所涵盖的表示式,像这样: <CODE><foo></CODE>.为了表示左边的角括号,你必须使用 <CODE>&lt;</CODE> 这个组成元素,这是一个会展开成左括号字元的「巨集」.因此,我在原始文件中键入<BLOCKQUOTE><CODE><PRE>angle brackets around it, as so: <tt>&lt;foo></tt>.</PRE></CODE></BLOCKQUOTE>一般来说,以结合字元(&)作为开始表示这是一个特殊的巨集.例如,产生 % 符号的 <CODE>&percnt;</CODE>产生 | 的 <CODE>&verbar;</CODE> 等等.对於所有的「特殊字元」都有结合巨集可以表示它们.<P>通常,你不需要使用结合巨集表示某特殊字元,然而,在某些情况下这是必须的。最常用的是:<UL><LI>Use <CODE>&amp;</CODE> for the ampersand (&), </LI><LI>Use <CODE>&lt;</CODE> for a left bracket (<),</LI><LI>Use <CODE>&gt;</CODE> for a right bracket (>),</LI><LI>Use <CODE>&lt;/</CODE> for a left bracket with a slash (<CODE></</CODE>)</LI><LI>Use <CODE>&dollar;</CODE> for a dollar sign ($),</LI><LI>Use <CODE>&num;</CODE> for a hash (#),</LI><LI>Use <CODE>&percnt;</CODE> for a percent (%),</LI><LI>Use <CODE>&tilde;</CODE> for a tilde (~),</LI><LI>Use <CODE>``</CODE> and <CODE>''</CODE> for quotes, or use<CODE>&ldquo;</CODE> for “, <CODE>&rdquo;</CODE> for ”.</LI></UL><P>完整的特殊字元列表可以查看其中一个替换档.通常 LaTeX 最会抱怨特殊字元,所以查阅 <CODE>$SGMLTOOLSLIB/rep/latex/general</CODE> 会是个好的开始.<CODE>$SGMLTOOLSLIB</CODE> 定义在 SGML 转换程序的最前面.<P><H2><A NAME="ss3.3">3.3 Verbatim 与 Code 环境</A></H2><P>当我们正讨论特殊字元这个主题时,我也必须提到「verbatim 环境」,用来在输出中含入不加变动的文字(空白字元以及缩排,和诸如此类).<CODE>verb</CODE> 这个组成元素就是做此用途的.它看起来就像这样:<BLOCKQUOTE><CODE><PRE><verb> Some literal text to include as example output.</verb></PRE></CODE></BLOCKQUOTE><CODE>verb</CODE> 环境不允许你在其内容中使用<EM>任何东西</EM>.特别地,在 <CODE>verb</CODE> 环境中你必须:<UL><LI>使用 <CODE>&amp;</CODE> 代表 <CODE>&</CODE></LI><LI>使用 <CODE>&lt;/</CODE> 代表 <CODE></</CODE></LI><LI>不要在 <CODE>verb</CODE> 环境中使用 <CODE>\end{verbatim}</CODE>,因为这是 LaTeX 用来结束 <CODE>verbatim</CODE> 环境的.(未来应该可能完全的隐藏底层的文字编排,但目前的解析器还不支援.)</LI></UL><CODE>code</CODE> 环境非常类似 <CODE>verb</CODE> 环境,除了在文字周围加入分隔线<HR><PRE>这是 code 环境的例子.</PRE><HR><P>你应该在任何 <CODE>verb</CODE> 环境的周围使用 <CODE>tscreen</CODE> 环境,像这样:<BLOCKQUOTE><CODE><PRE><tscreen><verb>这是一段例句.</verb></tscreen></PRE></CODE></BLOCKQUOTE><CODE>tscreen</CODE> 是一个环境单纯地缩排并设定预设字型为 <CODE>tt</CODE>.这使得□例要论在 LaTeX 以及纯文字的版本中看起来好多了.你可以使用 <CODE>tscreen</CODE> 而不加 <CODE>verb</CODE>,不过,如果你在□例中使用任何的特殊字元那麽你就需要它们两个.<CODE>tscreen</CODE> 与特殊字元无关.□例请参阅 <CODE>example.sgml</CODE>.<P><CODE>quote</CODE> 环境类似 <CODE>tscreen</CODE>,除了不将预设字型设为 <CODE>tt</CODE>.所以,你可以使用 <CODE>quote</CODE> 於与电脑无关的引用,如:<BLOCKQUOTE><CODE><PRE><quote>Here is some text to be indented, as in a quote.</quote></PRE></CODE></BLOCKQUOTE>这会产生:<BLOCKQUOTE>Here is some text to be indented, as in a quote.</BLOCKQUOTE><P><H2><A NAME="ss3.4">3.4 文件内容概观</A></H2><P>在我们深入研究细节之前,我要开始介绍 linuxdoc DTD 定义的文件概观.文件如何设立的□例请仔细观看 <CODE>example.sgml</CODE>.<P><H3>序文</H3><P>在文件的「序文」中你设立像是标题以及文件型态(style)的东西.Linux HOWTO 文件看起来应该像:<BLOCKQUOTE><CODE><PRE><!doctype linuxdoc system><article><title>Linux Foo HOWTO<author>阿伟, <tt/cwhuang@phys.ntu.edu.tw/<date>v1.0, 14 August 1997<abstract>这份文件说明了如何使用 <tt/foo/ 这个工具.</abstract><toc></PRE></CODE></BLOCKQUOTE><P>这些组成项目可以酌予增减但须按此顺序.第一行告诉 SGML 解析程式使用 linuxdoc DTD.<CODE><article></CODE> 这个标签规定文件使用「article」此种文件型态.(原先的 QWERTZ DTD 还定义 「report」以及「book」等型态;我并没有修改它们以在 SGML-Tools 中使用).<P><CODE>title</CODE>, <CODE>author</CODE>, 以及 <CODE>date</CODE> 这些标签的意义应该是很明显的,在 <CODE>date</CODE> 标签中包含文件的版本编号以及最後修改时间.<P><CODE>abstract</CODE> 标签设定文件顶端<EM>在内容之前</EM>印出的文字.如果你不想含入内容列表(<CODE>toc</CODE> 标签),那麽你可能不需要 <CODE>abstract</CODE>.<P><H3>章节与段落</H3><P>在序文之後,你就可以准备进入文件本身.有下列的分节指令可以使用:<UL><LI><CODE>sect</CODE>: 最顶层的章节 (也就是 1, 2, 等等) </LI><LI><CODE>sect1</CODE>: 第二层的次章节 (也就是 1.1, 1.2, 等等)</LI><LI><CODE>sect2</CODE>: 第三层的小章节</LI><LI><CODE>sect3</CODE>: 第四层的小小节</LI><LI><CODE>sect4</CODE>: 第五层的小小小节</LI></UL>它们相当於 LaTeX 中对应的 <CODE>section</CODE>, <CODE>subsection</CODE> 等等.<P>在 <CODE>sect</CODE> (或 <CODE>sect</CODE>, <CODE>sect</CODE> 等等) 标签之後跟著是该节的名称.例如,在文件的顶端,序文之後的是此标签:<BLOCKQUOTE><CODE><PRE><sect>简介</PRE></CODE></BLOCKQUOTE>而在此节开始的地方(段落),有个标签是:<BLOCKQUOTE><CODE><PRE><sect2>段落</PRE></CODE></BLOCKQUOTE>在一节的标签之後,你开始文件的主体.然而,你必须以一个 <CODE><p></CODE> 标签开始,像这样:<BLOCKQUOTE><CODE><PRE><sect>简介<p>这是一份 SGML-Tools 文件处理的使用者指引....</PRE></CODE></BLOCKQUOTE>这是告诉解析程式你已完成一节的标题并且准备好开始本文主体.其後,新的段落是以空白行开始(就如同 TeX).例如,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -