의 많은 편리함에도 불구하고 mdoc
troff의 구문은 다른 언어에 비해 여전히 줄바꿈이 너무 많거나 "스파게티"와 같습니다. 다음 예를 고려하십시오.
.Sh DESCRIPTION
The
.Nm
utility extracts C interface descriptions from a header file composed
using the SQLite documentation syntax (see
.Sx SYNTAX ) .
It then emits the corresponding set of
.Xr mdoc 7
manpages, one per interface description.
By default,
.Nm
reads from standard input and outputs files into the current directory.
Its arguments are as follows:
목록을 시작하는 단락에 대한 이 모든 줄은 나에게 매우 이상합니다. 매크로를 인라인으로 호출하는 방법이 있나요?
내가 시도한 것은 문자열, 전환 및 매크로가 공유 네임스페이스에 저장되어 있다고 groff의 매뉴얼에 나와 있기 때문에 문자열 구문을 사용하여 매크로를 호출하는 것입니다. 이것은 나를 어딘가에 .if
데려다 주지만,매크로 시작 시결국 처리되지 않고 생으로 뱉어집니다.
.Sh DESCRIPTION
The \*[Nm] utility extracts C interface descriptions from a header file composed
using the SQLite documentation syntax (see \*[Sx SYNTAX]).
It then emits the corresponding set of \*[Xr mdoc 7] manpages, one per interface
description. By default, \*[Nm] reads from standard input and outputs files into
the current directory.
Its arguments are as follows:
그런 다음 개행 문자를 삽입하기 위해 다른 문자열 정의를 추가하려고 했습니다. .ds n \!
제대로 작동하지 않았고 결국 기분 전환이되었습니다.
.box n
\!
.box
.Sh DESCRIPTION
The \*n\*[Nm] utility extracts C interface descriptions... (see \*n\*[Sx SYNTAX]).
It then...
이제 .if
스팸은 사라졌지만 불행하게도 출력물에 실제 개행 문자가 표시됩니다. 이러한 매크로를 호출하는 더 완벽한 방법이 있습니까? (mandoc 호환성에 대해서는 나중에 생각해 보겠습니다.)
부록:
- "see SYNTAX" 비트를 추가하면 개행 문자는 후행 공백만 생성
.Nm
하므로 매크로 에 내재된 것으로 보입니다 ..Sx
그래도 둘 다 제거할 수 있을까요? - 뒤에 공백을 제거하면
\*n\*[Nm]
추가 개행 문자가 사라지지만 소스에서는 이상해 보입니다. 원본과 같이 호출하면 개선되지만 어떻게든 단락 나누기도 생성 됩니다SYNTAX
.\n*[Sx Syntax ) .]
답변1
sed
이를 위해 스크립트를 작성하는 것이 좋습니다 .
예를 들어 에 대해 다음으로 변환할 eqn
스크립트가 있습니다 .myeqn
.EA
.EN\n.EQ
#!/bin/sed -f
s/^\. *EA\(.*\)$/.EN\n.EQ \1/g
그런 다음 이것을 실행합니다.
myeqn < file.ms | groff -e -ms > main.ps
필요한 경우 Makefile을 사용하여 이를 자동화할 수 있습니다.
추신: Groff의 개행 문자는 익숙해지지만 잠시 후에 그 가치를 인식하기 시작합니다.