晚上有些碎片时间可以用,想着接一接CMPP的man翻译。一直很好奇man文档都是怎么编写出来的,背后是什么格式的文本,于是就接触到了roff格式。这篇文章介绍了三种文件格式,md、roff、富文本,就scpp作为例子展示了从md如何生成man文档并安装。如果你想要生成自己的man文档,或者想要了解这几个文档格式,不妨看一下这篇文章。
本文中介绍三种文件格式的区别的时候,转换roff语言与富文本使用到了groff命令,可能需要安装。
在md转化为富文本的时候除了groff命令,还使用到了pandoc命令,可以进行一个安装。
以scpp的文档展示一下三种格式的区别。
1 | SCPP(1) SCPP(1) |
根据不同的终端,富文本的显示是通过加入不同的特殊字符达到效果。
由于是放在代码框里面,特殊字符不会被处理成加粗、倾斜等格式,这些在终端中会显示。
下文生成的scpp.1就是包含特殊字符的文档。
终端不同,特殊字符的约定不同。也就是说Windows终端上生成的富文本放到Linux的终端上显示就可能不正常。
由于书写麻烦也不通用,而源文档需要书写简单而且通用,所以有了下面两种格式。
roff是gnu默认的标记语言,用纯文本就可以写出有格式的文档,大量我们man命令看到的内容都是用这个格式写成的。
1 | .TH SCPP 1 "9 September 2019" |
其中例如.TH、\fB\fP等内容让文档可以产生加粗、标题等各种格式。
将这个文件存储为scpp.roff,之后输入这个命令就可以看到显示效果:
1 | groff -Tascii -man scpp.roff | more |
是不是就看到了目标文档的效果,如果你想看到特殊字符可以把他输出到文件:
1 | groff -Tascii -man scpp.roff > scpp.1 |
roff格式的文件有大量的标记,如果你感兴趣,可以在这里扩展阅读。
markdown是目前非常常用的标记语言,也是纯文本编写有格式的文档,大量现在的博客都是用这个语言写成的。
相较而言,markdown的标记更少但也更简单,入门方便,也提供图片、表格等的插入。
本文档使用md格式就是这个样子:
1 | --- |
将这个文件存储为scpp.md,之后输入这个命令就可以看到显示效果:
1 | pandoc --standalone -f markdown -t man -o scpp_md.roff scpp.md | groff -Tascii -man scpp_md.roff | more |
其中--standalone标签是为了给文档生成的独立的文件头。
开头的那些元数据提供了生成roff所需的一些必要内容。
为了让其与所有其他的man文档格式相同,我们先转为roff格式,再通过groff转化为富文本。
到了这一步,已经了解了三种不同的文件格式,也可以用最熟悉的markdown格式写man文档。
下一步就是将写好的内容进行安装,让帮助文件生效了。
不同的系统有不同的man手册目录,linux是/usr/man,osx是/usr/share/man。
将文件生成在该目录就可以了。
1 | groff -Tascii -man scpp.roff > /usr/man/man1/scpp.1 |
之后使用man scpp就能看到你自己写的man文档。
晚上有些碎片时间可以用,想着接一接CMPP的man翻译。一直很好奇man文档都是怎么编写出来的,背后是什么格式的文本,于是就接触到了roff格式。这篇文章介绍了三种文件格式,md、roff、富文本,就scpp作为例子展示了从md如何生成man文档并安装。如果你想要生成自己的man文档,或者想要了解这几个文档格式,不妨看一下这篇文章。
本文中介绍三种文件格式的区别的时候,转换roff语言与富文本使用到了groff命令,可能需要安装。
在md转化为富文本的时候除了groff命令,还使用到了pandoc命令,可以进行一个安装。
以scpp的文档展示一下三种格式的区别。
1 | SCPP(1) SCPP(1) |
根据不同的终端,富文本的显示是通过加入不同的特殊字符达到效果。
由于是放在代码框里面,特殊字符不会被处理成加粗、倾斜等格式,这些在终端中会显示。
下文生成的scpp.1就是包含特殊字符的文档。
终端不同,特殊字符的约定不同。也就是说Windows终端上生成的富文本放到Linux的终端上显示就可能不正常。
由于书写麻烦也不通用,而源文档需要书写简单而且通用,所以有了下面两种格式。
roff是gnu默认的标记语言,用纯文本就可以写出有格式的文档,大量我们man命令看到的内容都是用这个格式写成的。
1 | .TH SCPP 1 "9 September 2019" |
其中例如.TH、\fB\fP等内容让文档可以产生加粗、标题等各种格式。
将这个文件存储为scpp.roff,之后输入这个命令就可以看到显示效果:
1 | groff -Tascii -man scpp.roff | more |
是不是就看到了目标文档的效果,如果你想看到特殊字符可以把他输出到文件:
1 | groff -Tascii -man scpp.roff > scpp.1 |
roff格式的文件有大量的标记,如果你感兴趣,可以在这里扩展阅读。
markdown是目前非常常用的标记语言,也是纯文本编写有格式的文档,大量现在的博客都是用这个语言写成的。
相较而言,markdown的标记更少但也更简单,入门方便,也提供图片、表格等的插入。
本文档使用md格式就是这个样子:
1 | --- |
将这个文件存储为scpp.md,之后输入这个命令就可以看到显示效果:
1 | pandoc --standalone -f markdown -t man -o scpp_md.roff scpp.md | groff -Tascii -man scpp_md.roff | more |
其中--standalone标签是为了给文档生成的独立的文件头。
开头的那些元数据提供了生成roff所需的一些必要内容。
为了让其与所有其他的man文档格式相同,我们先转为roff格式,再通过groff转化为富文本。
到了这一步,已经了解了三种不同的文件格式,也可以用最熟悉的markdown格式写man文档。
下一步就是将写好的内容进行安装,让帮助文件生效了。
不同的系统有不同的man手册目录,linux是/usr/man,osx是/usr/share/man。
将文件生成在该目录就可以了。
1 | groff -Tascii -man scpp.roff > /usr/man/man1/scpp.1 |
之后使用man scpp就能看到你自己写的man文档。