Gnu nroff - 輸出行首帶有點的行

Gnu nroff - 輸出行首帶有點的行

我嘗試用​​原始(無宏)GNU 編寫一個自我複製程式(“quine”)nroff。誠然,這是毫無意義且古怪的,但以前似乎沒有這樣做過。我沒有這樣做。

我非常確定,無論誰成功編寫了無宏nroff輸入語言 quine,都需要定義字串、巨集或「框」。為此,您需要編寫以下請求:

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

也就是說,nroff輸入中的每個請求都有一個“.”。在該行的開頭。

由於 qui​​nes 只是輸出它們的原始碼(沒有作弊),因此輸出可能必須有“.”。作為多個輸出行的第一個字元。

你到底如何讓 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...

相關內容