나는 소프트웨어에 대한 매뉴얼 페이지를 작성하려고 하는데 일부 코드 조각을 포함하고 싶습니다. 나는 현재 사용하고 있습니다.RS그리고. ~에 대한사용자 정의의 일부인 매크로. 견본매크로인데 어떤 이유로 작동하지 않습니다. 맨 페이지는 다음과 같습니다.
.TH MYMANPAGE 1
.de SAMPLE
.br
.RS
.nf
.nh
..
.de ESAMPLE
.hy
.fi
.RE
..
.SH TEST SECTION HEADING
This is a test section heading.
.TP
.B Test Paragraph Label
This is some test paragraph text. This is some test paragraph text. This
is some test paragraph text. This is some indented test code:
.SAMPLE
int main(void) {
return 42;
}
.ESAMPLE
This is more text after the test code. This is more text after the test
code.
결국 일어나는 일은 뒤에 있는 텍스트입니다..E 샘플단락 텍스트만큼 들여쓰기가 되지 않습니다. 대신 단락 태그에 맞춰 정렬됩니다. 무엇이 옳은가.[E]샘플매크로 정의를 사용하면 더 쉽게 사용할 수 있습니다..TP?
답변1
.RE
현재 들여쓰기 수준 대신 기본 들여쓰기 수준을 복원합니다 .TP
. 당신이 해야 할 일은 호출 당시의 실제 들여쓰기를 저장하고 복원하는 것뿐입니다 .RS
. 아래 수정 사항은 s SAMPLE
내에 s를 중첩 하지 않는다고 가정합니다 .SAMPLE
.de SAMPLE
.br
.nr saveIN \\n(.i \" double the backslash when defining a macro
.RS
.nf
.nh
..
.de ESAMPLE
.hy
.fi
.RE
.in \\n[saveIN]u \" 'u' means 'units': do not scale this number
..
$ man ./i
[...]
Test Paragraph Label
This is some test paragraph text. This is some test paragraph
text. This is some test paragraph text. This is some indented
test code:
int main(void) {
return 42;
}
This is more text after the test code. This is more text after
the test code.