이 질문은 다음에서 영감을 얻었습니다.SU에 있는 이 것. ANSI 이스케이프 시퀀스를 사용하여 lp
굵게 또는 컬러로 인쇄하는 방법은 무엇입니까? 터미널에 굵은 텍스트를 표시하는 방법을 알고 있습니다.
$ echo -e '\033[01;1m이 텍스트는 굵게 표시됩니다.\033[00;0m 이것은 굵게 표시되지 않습니다.'
텍스트가 굵게 표시됩니다., 이건 안 돼
그러나 직접 파이프하면 lp
다음과 같은 파일을 얻게 됩니다.
01;1mthis text will be bold00;0m,this will not
그래서 이를 할 수 있는 방법은 groff
포스트스크립트 파일을 만들어서 인쇄하는 것이라고 생각합니다. 이 작업을 수행할 수 있어야 하는 것 같습니다 groff
. 매뉴얼 페이지를 ps 파일로 올바르게 변환하고 포스트스크립트의 매뉴얼 페이지에 굵은 텍스트를 유지한다는 것을 알고 있습니다. 그러나 groff
문서는 상당히 방대하며 포스트스크립트 경험이 없는 사람에게는 약간 난해합니다. 나는 다양한 옵션 조합을 시도했는데, 모두 위의 줄과 같은 포스트스크립트 파일을 생성했습니다.
echo -e '\033[01;1mthis text will be bold\033[00;0m,this will not' | groff >a.ps
echo -e '\033[01;1mthis text will be bold\033[00;0m,this will not' | groff -c >a.ps
echo -e '\033[01;1mthis text will be bold\033[00;0m,this will not' | groff -Pc >a.ps
echo -e '\033\[01;1m\]this text will be bold\033\[00;0m\],this will not' | groff -Tascii >a.ps
echo -e '\033[01;1mthis text will be bold'| groff -man >a.ps
echo -e '\033[01;1mthis text will be bold'| groff -mdoc >a.ps
echo -e '\033[01;1mthis text will be bold'| groff -me >a.ps
echo -e '\033[01;1mthis text will be bold'| groff -mm >a.ps
echo -e '\033[01;1mthis text will be bold'| groff -ms >a.ps
그렇다면 다른 도구 조합을 lp
사용 하여 터미널에서 굵은 글씨나 컬러 텍스트를 인쇄하는 방법은 무엇입니까 ?groff
답변1
groff
이는 원래 의도했던 것과 정반대입니다.
최소한 다음 도구 조합을 사용하면 원하는 결과를 얻을 수 있습니다.
aha
wkhtmltopdf
pdf2ps
고스트 스크립트에서
좋다:
printf '\e[31;1mfoo\e[mbar\n' |
aha |
wkhtmltopdf - - |
pdf2ps - output.ps
약간 과잉이지만 작동합니다. 요즘 PDF는 포스트스크립트만큼 인쇄하기 쉽기 때문에 마지막 부분은 건너뛰어도 됩니다.
printf '\e[31;1mfoo\e[mbar\n' |
aha |
wkhtmltopdf - output.pdf
또는 인쇄를 위해 직접 공급할 수도 있습니다 lp
.
답변2
포스트스크립트는프로그래밍 언어종이에 표시를 하는 데 사용됩니다. 해당 마커를 색상화하려면 프로그램에 올바른 지침을 포함해야 합니다. 그들은매우VT100 클론은 원래 ANSI 이스케이프 코드를 다르게 이해합니다.
troff에 대해서는 잘 기억나지 않지만(논문을 쓸 당시에는 컬러 프린터는 꿈도 못 꿨어요...) LaTeX에서는 컬러 텍스트를 작성한 다음 PDF나 PS로 번역하는 것이 가능합니다. 이렇게 인쇄합니다. 그러나 이스케이프 시퀀스를 처리하고 LaTeX를 뱉어내는 것을 함께 엮는 것은 그다지 재미 있지 않을 것입니다. troff 또는 LaTeX에서 직접 색상/굵게/모든 텍스트를 작성하는 것이 더 나을 것입니다.
답변3
프린터 하위 시스템이 컬러 Postscript 파일을 처리할 수 있다고 가정하면 groff
터미널에서 및 Friends를 사용하여 텍스트를 마크업하고 프린터에 대한 컬러 및 굵은 기울임꼴 글꼴이 포함된 Postscript 파일을 생성할 수 있습니다.
$ cat i
.warn
.color
This is ordinary.
.ft B
This is bold.
.ft I
This is italic.
.ft R
This is ordinary.
.gcolor red
This is red.
.gcolor green
This is green.
.gcolor blue
This is blue.
$ groff i >out.ps
$ lpr out.ps # printer subsystem must be able to handle postscript
ANSI 색상 이스케이프 시퀀스를 사용하여 정확히 동일한 파일을 ASCII로 쉽게 형식화하고 터미널에 표시할 수 있습니다.
$ groff -Tascii i # output appears, in colour, on your screen
-T
정확히 동일한 입력 파일을 사용하여 다른 출력 장치를 사용할 수도 있습니다 .
$ groff -Thtml i
<!-- Creator : groff version 1.21 -->
<!-- CreationDate: Wed Oct 16 21:05:36 2013 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="generator" content="groff -Thtml, see www.gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta name="Content-Style" content="text/css">
<style type="text/css">
p { margin-top: 0; margin-bottom: 0; vertical-align: top }
pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
table { margin-top: 0; margin-bottom: 0; vertical-align: top }
h1 { text-align: center }
</style>
<title></title>
</head>
<body>
<hr>
<p>This is not bold. <b>This is bold.</b> <i>This is
italic.</i> This is not bold. <font color="#FF0000">This is
red.</font> <font color="#00FF00">This is green.</font>
<font color="#0000FF">This is blue.</font></p>
<hr>
</body>
</html>
이를 groff
마크업 언어로 사용하면 터미널에서 굵은 글씨나 컬러 텍스트를 인쇄할 수 있습니다.