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...

관련 정보