'man' 큰따옴표를 이중 백틱 및 주인공으로 렌더링하는 방법은 무엇입니까?

'man' 큰따옴표를 이중 백틱 및 주인공으로 렌더링하는 방법은 무엇입니까?

다음 명령을 실행할 때:

man bash

인용문은 다음과 같이 표시됩니다.

``...''

왜 이런 일이 발생하는지 설명하는 게시물이 있습니다.

하지만 강제로 할 수 있는 방법을 찾지 못했습니다.남성또는 기본 호출기에 ASCII 큰따옴표(")나 굵은 문자 또는 백틱/아포스트로피 문자 사용 이외의 모든 문자가 표시됩니다.

내 사용 사례는 검색할 수 있기를 원한다는 것입니다.세게 때리다작은 따옴표나 역따옴표에 대한 매뉴얼 페이지에서는 의미론적 가치가 있음을 암시하며, 의미론적이지 않은 역따옴표/주요 문자가 복잡해 이를 어렵게 만듭니다.

LC_ALL을 en_us.UTF-8에서 C로 변경해 보았습니다.남성다른 호출기/옵션을 지정하는 -P 옵션이 있지만 아직 해결책을 찾지 못했습니다.

내 환경은 man 2.6.3, CentOS 7.2(3.10.0-327.13.1.el7.x86_64), bash 4.2.46(1) 또는 zsh 5.0.2입니다.

내가 선호하는 것은 다음과 같은 결과를 낳는 해결책을 찾는 것입니다.남성큰따옴표를 ASCII 큰따옴표 문자(")로 렌더링하거나 인용된 내용을 서식 있는 텍스트(예: 밑줄 또는 굵게 표시)로 렌더링합니다.

방법에도 동일하게 적용됩니다.남성작은따옴표 콘텐츠를 다음과 같이 렌더링합니다.`콘텐츠'.

나쁜 해결 방법:

man bash | sed -e "s/\(''\|\`\`\)//g" -e "s/\`\([^']*\)/\1/g" | less

만드는 법 알려주실 분 계신가요남성백틱과 아포스트로피가 포함된 따옴표를 표시하지 않습니까? 이 솔루션은 소프트웨어를 설치할 필요가 없습니다(즉, 솔루션은 CentOS 7.2 최소 설치에서 작동해야 합니다).

답변1

Bash 매뉴얼 페이지의 백틱은 일부 매크로의 결과가 아니라 troff 소스 코드에 명시적으로 제공되므로 변경하기 어렵습니다. 그러나 특별한 단일 역따옴표가 인용되어 있으므로 \`이 차이점을 사용하는 대신 소스 troff에 sed를 적용할 수 있습니다.

대신, troff 명령을 추가하여 백틱을 다른 문자로 변환할 수 있습니다. 이 명령은 .tr AXBY모든 A를 X로, B를 Y로 변환합니다. 그래서

(echo '.tr `"'\''"'; zcat $(man -w bash)) | man /dev/stdin

백틱과 작은따옴표를 큰따옴표로 변환합니다. 이렇게 하면 출력에 원하는 특별한 단일 백틱만 남게 됩니다. 물론 the pipeline"s return.

전반적으로 "나쁜 솔루션"이면 충분하다고 생각합니다.

답변2

이것은 좋은 옵션이 아닐 수도 있지만 w3m브라우저의 HTML 출력을 사용할 수 있습니다.man

BROWSER=w3m man -H bash

여기에 이미지 설명을 입력하세요.

렌더링을 위해 유니코드 따옴표를 사용 합니다 ``…''(Google Chrome과 비슷하지만 어떤 이유로든 lynx그렇지 않습니다).

FreeBSD 맨페이지 저장소는 나에게 알려줍니다.CentOS 7은 man지원합니다-H.

답변3

인용문이 troff(맨 페이지) 소스에 포함되어 있다는 @meuh의 의견에 동의하세요.딱딱한변화가 의심스럽습니다. 이는 주로 특정 문서의 개발자에 따라 다릅니다. bash는 이 규칙을 사용하여 처리합니다.관련 도구 세트,예를 들어, makeinfo.

예를 들어, xterm의 매뉴얼 페이지는 더 나은 모양을 얻기 위해 매크로를 사용합니다.

.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds AQ \(aq
.el       .ds AQ '
.ie \n(.g .ds `` \(lq
.el       .ds `` ``
.ie \n(.g .ds '' \(rq
.el       .ds '' ''

이것은 버그 보고서(수정됨)에서 가져온 것입니다.2009년):

매크로를 사용하여 ASCII 인용문의 groff 매핑 해결(Colin Watson 제안을 기반으로 한 요청에 따라 Reuben Thomas가 수정함)데비안 #378700).

예를 들어

.PP
Although both windows may be displayed at the same time, one of them is
considered the \*(``active\*('' window for receiving keyboard input and terminal
output.

그리고 이것을 생성합니다(대체 인용문을 보존하기 위해 xterm에서 잘라내기/붙여넣기).

두 개의 창이 동시에 표시될 수 있지만 그 중 하나는 키보드 입력 및 터미널 출력을 수신하는 "활성" 창으로 간주됩니다. 텍스트 커서가 포함된 창입니다. 활성 창은 이스케이프 시퀀스, VTxxx 창의 VT 옵션 메뉴 및 4014 창의 Tek 옵션 메뉴를 통해 선택할 수 있습니다.

스크린샷을 보면 더 잘 알 수 있습니다.

xterm의 예

매크로의 조건으로 인해 PDF 결과에는 다른 인용문이 사용됩니다.

견적 예시의 PDF 렌더링

따라서 매크로 정의를 추가하고 리터럴 작은따옴표와 큰따옴표 대신 groff의 명명된 문자를 대체하도록 전처리기를 수정하는 것이 가능한 개선이 될 것입니다. 둘 다 기본적으로 ASCII를 생성하지 않으므로 결과에서 구문 혼동이 줄어듭니다.

이는 "xxx"를 이탤릭체로 변경하면 상황이 개선될 것이라는 점을 상기시켜 줍니다(아마도 나중에).

관련 정보