如何控制 groff man 宏中标题的内容

如何控制 groff man 宏中标题的内容

我使用 groff man 宏来生成通用文档(实际上不是手册页),因为它们很容易学习和使用。不过,我希望将 postscript 页面标题控制为自由文本。

格罗夫手册说:

使用文件 man.local 对 man 宏进行本地扩展或进行样式更改。

宏:.PT

控制标题的内容。通常,标题在两侧打印命令名称和节号,并在中间打印 TH 的可选第五个参数。

在实践中我该如何做到这一点?

答案1

措辞晦涩,但建议是修改文件man.local本身,而不是覆盖该文件中找到的宏。

一个好的起点是文档:5.21 编写宏(GNU Troff 手册)。这展示了如何定义宏。

实际要研究的宏在很大程度上依赖于版本。在 Debian 中,我PT在包中找到了该宏groff-base,位于

/usr/share/groff/1.21/tmac/an-old.tmac

作为

.\" Redefine these to customize the header & footer
.
.de1 PT
.  tl '\\*[an-title](\\*[an-section])'\\*[an-extra3]'\\*[an-title](\\*[an-section])'
..

它将命名变量作为第一个参数传递给.tl.要了解它.tl是什么(grep 是你的朋友)以及它的作用需要一些工作(提到过这里):

你知道.tl(标题)由左、中、右三部分组成吗?

另一方面,groff 的文档多年来得到了改进:您可以在指数

通常,您会发现:

  • 大多数宏(您在阅读这些文件时遇到的)都没有记录
  • grep 遍历宏列表(grep-w有帮助)是查找特定宏的唯一方法
  • 某些宏的设备特定版本会覆盖通用版本

答案2

如果您想了解如何使用修改后的宏来将手册页打印为一本书,您可能想检查用于打印 Solaris 手册的宏:

https://sourceforge.net/p/schillix-on/schillix-on/ci/default/tree/usr/src/cmd/troff/troff.d/tmac.d/

将“an”文件与“ansun”宏文件进行比较。后者用于印刷书籍。

请注意,这些是原始 troff 的宏集,而不是 troff 克隆“groff”的宏集,但只要 groff 兼容,它就应该可以工作。

相关内容