Linux 文档编写 groff命令

一、 使用groff命令编写手册页面 

    首先,groff是应该包含几个处理文本格式的程序。groff把标准的文本和特殊的命令翻译成格式化的输出,像你在 man 手册页里看到的那样。在大多数Linux发行版本中可以找到它。如果没有安装请到其官方网址下载: ftp://ftp.gnu.org/gnu/groff/ ,最新版本:groff 1.19。预计所需硬盘空间:43 MB。 

    1. man手册页 

    这是最普通的文档格式,来源于UNIX系统,是一种原始的“展示”标记格式。 man(1)命令提供了页显示和原始的搜索手段。这种格式不支持图象、超链接和“索引化”功能。不过这种格式转化成Postscript进行打印的效果还不错,就是转成HTML格式不太方便(主要是纯文本)。man 的相关工具在各个Linux 系统中几乎都有。手册页格式做为命令用法解释或者短小的参考文档还是不错的,对一个有经验的用户这样做可以非常节省内存。那些有着复杂用户界面和很多选项的程序会让系统负载非常重,如果交叉链接太多的文档甚至会让整个系统不堪重负。(Man手册格式不支持超文本链接)。 

    2. 手册页面的布局 

    表1: 手册页面的布局 

    需要说明的是表1手册节只有“NAME”是必须存在的,因为有一些相关文档命令(whatis、apropos)依赖“NAME”部分,whatis 和apropos命令主要用来检索Linux命令指南页,例如,你要“查找”文件,又不知道用什么命令,你可以敲入下面的命令:$apropos search 。其他部分可以根据实际情况删除或增加。 

    下面我们看一个最简单的手册页面的源代码: tree.1。 

使用groff命令把标准的文本和特殊的命令翻译成格式化的输出,像你在 man 手册页里看到的那样,输出结果见图1。

groff -Tascii -man tree.1

3 、groff命令详解 

    groff命令以符号“.”开始,.TH 是标题每个手册页面只使用一次,它设置页面的标题、段号以及日期。NAME段的格式非常重要,。在.SH NAME的后面是命令的名称。“\-”也很重要,因为makewhatis,apropos以及man-k在搜索手册页面时依赖这种格式。 

    段以 .SH 开始,后跟标题。如果标题包含空格并且和 .SH 在同一行,则需在标题上加双引号。.TP指令创建一个带有起始标志的新段落。 其他的命令指定字体类型和大小,见表2。 
    表2: groff的字体命令 

    gruff的其他命令重要涉及段落结构和缩行见表3。 

    表3: groff的段落和缩行命令 

    如果要在groff源文件中加入注释,使用.\”开始注释行,像在上面清单的前两行一样。一旦写完手册页面,就可以创建应该预先处理好的版本,然后在/usr/share/man/manN 目录下的合适段中安装它。N的值是1-9。表4是UNIX手册页面的“标准”划分。 
    表4: 标准Linux手册页面 

    通常把经过gzip命令压缩好的手册页面方到合适的/usr/share/man 的子目录下。

 

 4 、使用groff命令把man文件转换为HTML文档 

    从互联网流行起来后,HTML标记格式开始流行,这种标记格式有一定的结构,也便于“展示”,还可通过网络浏览器浏览,对图象和超级链接也有支持。HTML标记语言非常灵活,适用于各种文档。实际上它太灵活了,甚至可以展示Man手册页格式的信息。这种格式也可以很好的被打印出来,相关的制作工具很多。它另外可以通过网络在不同的操作系统中浏览。

groff -Thtml -mandoc tree.1 > tree.html

  HTML格式的文档在浏览器中呈现的结果:

   更加详细groff命令使用方法使用命令: groff –help 察看。 

    文档一个好的产品或软件都是伴随着各种文档产生的,文档的好处不用多说,如要作好一个软件开发人员熟悉基本的软件文档内容写法是最好的。下面笔者将介绍更加专业的文档制作工具。

二、使用DocBook类型建文档 

    和groff相比DocBook是应该跟容易移植的格式,它可以从单一的源文件生成多种格式的输出文件:Postscript、HTML、DVI、PDF、TeY、LyX、手册页面、纯文本。 

    大多数Linux用户一定从Linux的丰富的Howto文档获益匪浅。大部分Linux Howto 文档就是用 DocBook 格式完成的。主要包括: 

    •Linux Documentation Project (www.linuxdoc.org/LDP/LDP.Author.Guide ) 
    •Gnome Documentation Project (www.developer.gnome.org/projects/gdp ) 
    •KDE Documentation Project (www.kde.org/documentation ) 
    •Open Source Writers Group (www.oswg.org/ ) 
    •FreeBSD Documentation Project (www.freebsd.org/docproj ) 

    DocBook 是一套由 O'Reilly 和 HaL Computer Systems 开发,并由结构化信息标准促进组织(http://www.oasis-open.org/ ) 维护的 SGML/XML 方言。虽然它是为与计算机软硬件相关的文档设计的,但是他的内容十分丰富,因此采用 DocBook 标准来开发自己的方言将会十分容易。而且 DocBook 是一项知名度很高的工业标准,有很多工具可以用来编辑和操作 DocBook。 

    DocBook是一种文档工具,广义上来说和写字板、Word、WPS之类的工具是一样的。但DocBook是一种所想即所得的文档编写工具,DocBook用标签来标识你所要的文档排版效果,用样式表来输出你所要的文档格式,可实现一次输入,多种输出。基于sgml和xml标签的灵活性,可多人协同工作。而Word之类的是所见即所得的工具,基于可视化的操作,你在电脑显示器上看到的排版效果就是你打印出来的效果。这类文档在编写时可能很方便,但修改和维护起来就很麻烦,而且不能实现多种输出。DocBook的应用范围很泛,特别在开源领域,开源技术很多文档都是用DocBook写的。

  1、 建立一个DocBook格式文档 

    下面是一个标准的 DocBook 文档——"Hello World!"。虽然它还非常简单,但是麻雀虽小,五脏俱全。它完全是一个合格的DocBook文档。

<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.2//EN">
<article>
<articleinfo>
<title>Hello World!</title>
<author><firstname>A</firstname><surname>BC</surname></author>
</articleinfo>
<sect1><title>Hello World!</title> Hello world!这是我的第一个Linux下的 DocBook 文档。
</para>
</sect1>
</article>

 解释如下。 

    第一行:文档类型声明(Document Type Declaration),声明该文档的根元素是 article。是这个文档的唯一公开标识,指明使用那种DTD(DocBook V4.2)。 
    第二行:列出文档中的唯一的根元素——article 
    第五行:在此处添上作者的姓名 
    第七行:第一章开始。根元素article可以包含任意多的sect1元素。 
    第十一行:本文档的根元素结束。 

    DocBook 文档是自解释的,通过一个个元素(由尖括号封闭起来的),定义了清晰的文档结构。这片文档是一篇文章(article),它有自己的标题——“Hello World!”,和作者的姓名,它还包含一个章节(sect1),章节的标题是“Hello World!”,内容则是简单的一句话。我们把这个文件保存为 helloworld.sgml。 

    上面介绍的是以 DocBook 标记文档只是过程的一半,因为Docbook本身并不控制格式。有时候,您可能希望与其它人共享文档,这意味着需要将 DocBook 转换成另一种格式。该过程的第二步是让文档文件通过语法分析器后输出可读的文件格式,例如 HTML格式。 

    SGMLtools-Lite 是 SGML 处理软件的 Python 前端。基本上,SGMLtools-Lite 简化了将 DocBook 文档转换成希望分发的一种或几种格式的过程。安装 SGMLtools-Lite 之前。还需要安装其它三个包 - SGML ISO 实体声明以及 DocBook DTD 和 DSSSL 样式表。如果您是 Linux 用户,那么根据您使用的发行版和在安装期间选择的选项,系统上已安装了原始 SGMLtools 包。 

    也可以从http://sourceforge.net/projects/sgmltools-lite/ 上下载源码或 RPM包,然后按照指令安装它们。

 

2、使用 SGMLtools-Lite 产生输出文件 

    安装SGMLtools-Lite后,使用起来就相当简单。SGMLtools-Lite 主要用来从 DocBook 文件中产生 HTML、PostScript、RTF 或纯文本文件。 

    (1)产生 HTML 文件 

    要从格式为 helloworld.sgml 的 DocBook 文件中产生 HTML 输出,输入以下命令: 

sgmltools -b html helloworld.sgml


    "-b" 参数告诉 SGMLtools-Lite 产生 HTML 输出。这将创建一个名为 " helloworld.sgml " 的目录,并且 HTML 文件在其中。如果您的 DocBook 文档调用其它文件,SGMLtools-Lite 也将处理它们,并自动创建索引和“页面”之间的导航。下面我们可以使用浏览器察看这个简单文档。见图3。


    "-b" 参数告诉 SGMLtools-Lite 产生 HTML 输出。这将创建一个名为 " helloworld.sgml " 的目录,并且 HTML 文件在其中。如果您的 DocBook 文档调用其它文件,SGMLtools-Lite 也将处理它们,并自动创建索引和“页面”之间的导航。下面我们可以使用浏览器察看这个简单文档。见图3。

 

 

   (2)产生 RTF 文件 

    如果需要与使用MS Word 的人共享文档,则需要输出多文本格式 (Rich Text Format),或 RTF 格式的文件。如果使用 SGMLtools-Lite,这一过程同样简单: 

sgmltools -b rtf helloworld.sgml 

    3、使用docbook-utils输出HTML文档 

    docbook-utils是用来管理DocBook文档的shell脚本,我们可以其中一个子脚本,把你要处理的DocBook文件名helloworld.sgml作为参数传递给它:

db2html helloworld.sgml
output is helloworld
Using catalogs: /etc/sgml/sgml-docbook-4.2-1.0-17.cat
Using stylesheet: /usr/share/sgml/docbook/utils-0.6.12/docbook-utils.dsl#html
Working on: /tmp/helloworld.sgml
Done.

     处理的过程表明了使用哪一种DocBook目录和样式表。转换接受后会产生一个目录helloworld,其中包含一个名为t1.html的文件。同样可以在浏览器中打开。 

    4.其他格式输出 

    Linux还内置了一些其他输出命令: 

    •docbook2man — 把DocBook文件转换为手册页。 
    •docbook2pdf —把DocBook文件转换为PDF格式。 
    •docbook2ps —把DocBook文件转换为PostScript格式。 
    •docbook2txt —把DocBook文件转换为txt格式。 
    •docbook2dvi —把DocBook文件转换为dvi格式。 
    •docbook2html —把DocBook文件转换为HTML格式。 

    命令使用格式请查看帮助系统。方法是:docbook2pdf -help 

    由于DocBook相当复杂,上面只是介绍了一小部分DocBook建立文档的基础,和两个产生输出的工具。

  三、用LaTeX在Linux下编写文档 

    1、简介 

    随着国际交往的不断扩大和深入,国际性的学术交流与合作日趋活跃,许多国外期刊杂志上国人的名字经常跃然纸上,国际性学术会议的讲坛上也不断闪现国人的身影。要想渐入此境,撰写好西文论文是前提。 目前,编辑工具纷繁多样,在我国通常使用Word、WPS等Windows下的文字编辑软件,然而,往往用这类软件编辑的稿件不是被退回,就是石沉大海,究其原因,在于国际上通用的,同时也是被大部分期刊杂志认可了的稿件投寄格式为LaTex格式。因此,LaTex格式便成为从事科研活动的人员不可缺少的工具软件,特别是那些欲往国外寄发稿件的人员。 

    LaTeX是Linux下的文档编辑工具,可以轻松编写含有大量数学公式的Linux技术文档。LaTeX支持中文输入,可以编写复杂的公式,并能将公式和文字混排在一个段落里,从排版效果看,LaTeX排数学公式的能力天下第一。现在有各种Tex发行版本可以使用,它们大多为自由软件,可以从网上免费下载获得。即使再好的字处理软件打印出来的效果也都会跟屏幕上看到的有所差异。而TeX系统的输出是与设备无关的DVI(DeVice Independent)文件,因此无论是在针式打印机、喷墨打印机、激光打印机或是照排机上,其效果都是完全相同的,仅仅只是文字或者图形的分辩率因设备的不同而稍有差异。从某种意义上说,TeX才是真正的"所见即所得"。LaTeX提供的排版命令十分灵活,Linux文档编写者可以直接使用这些命令,也可以利用已有的功能来定义新的排版命令,使之适应特定场合的需要。 

    许多Linux发行版本中包括了LaTeX,http://www.latex-project.org 是LaTeX的官方网站 ,这里可以下载它的最新版本。 

    2、LaTeX与Word的差别 

    在谈到文字处理和排版时, 相信很多人马上就会想到MS Word, 习惯使用Word的人在初次接触LaTeX时往往会很不习惯, 如打开LaTeX不能选择字体的式样和大小, 也不能用TAB键来对齐文本, 想要插入空格将文字摆到自己喜欢的位置都不可能。 其实LaTeX和MS Word的设计哲学就存在着根本的差别, Word讲究的是所谓"所见即所得"(WYSIWYG--What You See Is What You Get), 而LaTeX讲究的是"所见即所思"(WYSIWYM--What You See Is What You Mean), 在LaTeX的屏幕上看到的根本就不是真正的输出结果, 只是大致的文章结构. 用Word写文章时, 你要花很大精力在文章的版式, 字体的大小, 字形选择等琐碎的事情中, 而用LaTeX排版时你可以将注意力集中到写文章上, 只需用鼠标拉一拉点一点, 告诉LaTeX这行属于标题, 这段属于正文等环境就可以了, 其他如版面格式, 字体字形等排版工作你大可不必费心, 这些繁杂的工作完全由LaTeX程序来完成。这就是LaTeX和Word的最大不同. 事实上想写一篇规规矩矩的文章, 大可不必花费太多的时间和精力在排版的细节上, 而LaTeX正好符合这样的要求. 而用Word写一篇文章时往往要花费很多的时间和精力在对齐, 字形字体大小, 行距字距等排版的细节上, 特别在处理长文件时, 稍有不慎就可能会出现章节编号, 标题字体及格式不统一的现象。 说LaTeX的这些特色特别适合于较长或格式固定的Linux文档。 

    3. LaTeX的工作流程 

    在使用LaTeX进行排版时,从输入文本到得到输出结果,通常需要经过如图4所示的几个步骤。


图4: LaTeX工作流程

    4.LaTeX的格式 

\documentclass[a4paper,10pt]{article}
……
\begin{document}
……
\end{document}

 布局说明: 
    \documentclass [选项]{类} 
    前置指令和定义 
    \begin{document} 
    局部命令和正文 
    \end{document} 

    每一个LaTeX文稿都包含导言(preamble)和正文(body)两个部分。导言是一组命令的集合,它指定整个文稿的全局参数,如页面格式、文本尺寸、页码、页眉和页脚等。导言部分必须包含\documetclass命令,以指定文档的版式类型,LaTeX提供了四种最基本的版式类型:book(书籍型)、article(论文型)、report(报告型)和letter(书信型)。 

    LaTeX文稿的前置部分必须包含\documentclass命令,它通常是导言中的第一条命令,如果前置中再没有其他命令,LaTeX就会为行宽、边距、段落间隔、页面高度和宽度等选择标准的设置值。前置是用\begin{document}来结束的,紧接这条命令的所有内容都被解释为正文,它由文本和混杂在其中的排版命令组成。正文中的命令只能起到局部的作用,即它们只作用于部分文本,如缩进、公式、字体、字号等。LaTeX文稿中的正文是用\end{documnet}命令来结束的。 LaTeX文稿是一种自由格式文件,输入源文件时不必考虑每行的长短,也不必考虑单词之间空白的多少,LaTeX会自动按照排版命令进行编排。下面是一个简单数学公式的LaTeX文稿: 

\documentclass[18 pt]{article}
\begin{document}
myfirst{\LaTeX}
\begin{equation}
\int^{2\pi}_0\cos^2\theta d\theta = \frac{3}{5}
\end{equation}
\begin{equation}
\left[
{\bf Y} + {\rm a} \ \geq\
\underline{\hat a} \sum_i^N \lim_{y \rightarrow k} \delta D
\right]
\end{equation}
\end{document}

存盘保存为first.tex后,再用latex命令进行处理:

$ latex hello.tex

  用KDVI(可看TeX DVI文件格式的浏览器)直接查看即可,见图5。


图5: LaTeX编写文档效果

    为了深入了解LaTeX文档编写方法,这里建议你阅读中文版的LaTeX2e使用手册(LaTeX2e 是 LaTeX 目前的版本),它是是初学者必读的LaTeX2e教材。 

    从严格的科学角度来说任何工作都要有文档记录,这里介绍了如何使用groff创建手册页面,以及DocBook的建档系统,和格式输出工具、以及LaTeX文档编写系统。以上介绍的工具能够使规格化的Linux文档和维护工作变得容易一些。

posted @ 2017-12-03 20:43  雪域蓝心  阅读(1648)  评论(0编辑  收藏  举报