Gnu nroff - 输出行首带有点的行

Gnu nroff - 输出行首带有点的行

我尝试用原始(无宏)GNU 编写一个自我复制程序(“quine”)nroff。诚然,这是毫无意义且古怪的,但以前似乎没有这样做过。我没有这样做。

我非常确定,无论谁成功编写了无宏nroff输入语言 quine,都需要定义字符串、宏或“框”。为此,您需要编写如下请求:

.as s "just assigned this to string s
.de xxx
.nop "\*s"
..
.xxx

也就是说,nroff输入中的每个请求都有一个“.”。在该行的开头。

由于 quines 只是输出它们的源代码(没有作弊),因此输出可能必须有“.”。作为多个输出行的第一个字符。

你到底如何让 GNUnroff输出一个“.”字符位于行首?据我所知,没有任何间接或转义可以做到这一点。是否有一些输出“.”的隐藏请求在一行的开头?

我正在使用最近同步的 Arch Linux,其中安装了 Groff 1.22.3。

答案1

mdoc(7)

The special meaning of a punctuation character may be escaped with the string ‘\&’

所以:

\&.

然而,与后续行结合起来可能会很棘手,例如

\&.
\&.as s "nron, nroff--very good, again!

一起运行(并产生一大堆空行)

$ nroff blah | head -2
.  .as s "nron, nroff‐‐very good, again!

尽管您可以通过添加空行或可能使用其他宏来解决此问题

\&.

\&.as s "nron, nroff--very good, again!

虽然我不知道这会如何影响奎因的需求......

答案2

您可以设置一个翻译,使用.tr一对字符来翻译从到到。例如翻译#.

nroff <<\!
.tr #.
###abc...
!

产生

...abc...

相关内容