Gnu nroff - 前に点がある出力ライン

Gnu nroff - 前に点がある出力ライン

私はマクロのない生のGNUを使って独自のレプリケーションプログラム( "quine")を作成しようとしていますnroff。もちろん、これは無意味で奇妙ですが、以前は行われたことがないようです。私はこれをしませんでした。

nroff文字列、マクロ、または「ボックス」を定義するために必要なマクロレス入力言語クイーンを正常に作成した人が誰であるかを確認してください。これを行うには、次の要求を作成する必要があります。

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

つまり、nroff入力のすべての要求には「.」があります。行の先頭に。

quinesは単にソースコードを出力するので(不正行為なし)、出力に「.」が必要になる場合があります。複数の出力ラインの最初の文字として使用されます。

一体どのようにGNUのnroff行の先頭に"。"文字を出力させますか?私が知る限り、これを行うことができる間接的な方法や脱出方法はありません。行の先頭に「.」を出力する隠し要求はありますか?

私は、Groff 1.22.3がインストールされている最近同期されたArch Linuxを使用しています。

答え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!

これがQuinnのニーズにどのような影響を与えるかはわかりませんが...

答え2

.tr一対の文字を使用してからに翻訳する翻訳を設定できます。たとえば、次のよう#に翻訳されます.

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

生産する

...abc...

関連情報