검사 중소스 코드less
less.man
, 포함된 맨페이지( )에서 터미널 이스케이프 코드를 사용하여 굵은 텍스트를 표시하는 것을 확인했습니다 .
^[[1mNAME^[[0m
less - opposite of more
^[[1mSYNOPSIS^[[0m
^[[1mless -?^[[0m
^[[1mless --help^[[0m
^[[1mless -V^[[0m
^[[1mless --version^[[0m
^[[1mless [-[+]aABcCdeEfFgGiIJKLmMnNqQrRsSuUVwWX~]^[[0m
생성하는 데 사용되는 명령은 다음과 같습니다 nroff -man
.
$ head Makefile.aut
# Makefile for authoring less.
EMAIL = [email protected]
HOMEPAGE = http://www.greenwoodsoftware.com/less
SHELL = /bin/sh
RCS = rcs
NROFF = nroff -man
그러나 를 실행하면 nroff -man less.nro
백스페이스를 사용하여 (일반적인) 맨페이지 출력을 얻습니다.
N^HNA^HAM^HME^HE
less - opposite of more
S^HSY^HYN^HNO^HOP^HPS^HSI^HIS^HS
l^Hle^Hes^Hss^Hs -^H-?^H?
l^Hle^Hes^Hss^Hs -^H--^H-h^Hhe^Hel^Hlp^Hp
l^Hle^Hes^Hss^Hs -^H-V^HV
l^Hle^Hes^Hss^Hs -^H--^H-v^Hve^Her^Hrs^Hsi^Hio^Hon^Hn
첫 번째 테이블을 생성하는 방법은 무엇입니까?
답변1
"제1형"의 특징은...groff
. "nroff"가 래퍼가 아닌 경우 groff
두 번째 형식만 표시됩니다.
이 함수는 매뉴얼 페이지에 언급되어 있습니다.grotty
(타자기와 유사한 장치를 위한 groff 드라이버):
기본적으로, 나쁜 텍스트 속성(굵게, 기울임꼴, 색상)을 변경하려면 SGR 이스케이프 시퀀스(ISO 6429, ANSI 색상 이스케이프라고도 함)를 내보냅니다. 이를 통해 8개의 서로 다른 배경색과 전경색을 가질 수 있으며, 굵은 글꼴과 기울임꼴 속성도 사용할 수 있습니다.동시에 (BI 글꼴 사용).
실제로는 잘 작동하지 않습니다. 예를 들어 동일한 주석이 어떻게 처리되는지 확인하세요(이러한 시퀀스를 후처리함).여기에 잘못된 정보가 있습니다.:
기본적으로,나쁜텍스트 속성(굵게, 기울임꼴, 색상)을 변경하려면 SGR 이스케이프 시퀀스(ISO 6429, ANSI 색상 이스케이프라고도 함)를 내보냅니다. 이를 통해 8개의 서로 다른 항목을 가질 수 있습니다.M[녹색]배경M[]그리고m[빨간색] 전경 m[]색상 외에도 볼드체 및 이탤릭체 속성도 사용할 수 있습니다.BI]동시에](BI 글꼴 사용).
따라서 일부 개발자는 이를 사용하지 않기로 결정합니다(예:이 토론Emacs 메일링 리스트에서).
그러나 매뉴얼 페이지에 나와 있듯이"기본적으로". 따라서 groff가 있으면 해당 이스케이프 시퀀스를 생성해야 합니다.
패키저에서는 패치를 적용하여 프로그램을 수정할 수 있습니다. @muru의 의견에 Debian의 버전이 언급되어 있습니다(참조오류 보고서그리고포장 페이지). 패키지 변경 로그에 다음과 같이 나와 있습니다.
-- Colin Watson <[email protected]> Sat, 27 Jul 2002 18:41:46 +0100
groff (1.18-1) unstable; urgency=low
* Disable the new ANSI colour/bold/underline escapes in nroff mode,
because most pagers either fail to cope with it or need special options
to do so. It can be re-enabled by editing /etc/groff/man.local and
/etc/groff/mdoc.local, or by setting the environment variable GROFF_SGR
to something non-empty.
그러나 groff 소스는 언급하지 않습니다.GROFF_SGR
;그것은 단지 참조만 합니다GROFF_NO_SGR
:
./NEWS:1108: for the GROFF_NO_SGR environment variable also.
./NEWS:1450:o If the environment variable GROFF_NO_SGR is set, SGR output is disa...
./PROBLEMS:33: 1. Set the GROFF_NO_SGR environment variable.
./doc/webpage.ms:1920:. URL #GROFF_NO_SGR GROFF_NO_SGR
./doc/webpagewebpage.ms:1922:. nop GROFF_NO_SGR
./doc/webpagewebpage.ms:2437:.TAG GROFF_NO_SGR
./doc/webpagewebpage.ms:2439:If the environment variable GROFF_NO_SGR is set, SGR output is
./src/devices/grotty/grotty.man:126:.B GROFF_NO_SGR
./src/devices/grotty/grotty.man:394:.B GROFF_NO_SGR
./src/devices/grotty/tty.cpp:864: if (getenv("GROFF_NO_SGR"))
그리고 변경 로그(ChangeLog.118)는 어떤 단서도 제공하지 않습니다.
2002-02-12 Werner LEMBERG <[email protected]>
* src/libs/libgroff/Makefile.sub (snprintf.o): Don't use
$(COMPILE.c) to not include groff's assert.h.
* src/drivers/grotty/tty.cc (main): Add GROFF_NO_SGR environment
variable.
* NEWS, src/drivers/grotty/grotty.man: Document it.
설정에서는 GROFF_NO_SGR
SGR 시퀀스를 제공하지 않습니다(맨 페이지가 정확함). 데비안 변경 로그 주석은 /etc/groff/man.local
데비안이 변수 검사를 추가한 이 블록을 참조합니다 GROFF_SGR
.
. \" Debian: Disable the use of SGR (ANSI colour) escape sequences by
. \" grotty.
. if '\V[GROFF_SGR]'' \
. output x X tty: sgr 0
환경 변수를 설정하면 굵은 SGR 시퀀스 등이 생성됩니다.