Troff를 사용하여 Linux에서 PDF 문서의 형식을 지정하는 방법

Troff를 사용하여 Linux에서 PDF 문서의 형식을 지정하는 방법

Troff는 Linux 시스템을 위한 작지만 강력한 문서 텍스트 프로세서입니다. 명령줄에서 소스 파일을 컴파일하여 인쇄용 문서를 쉽게 만들 수 있습니다. LaTeX와 달리 Troff는 매우 가볍고 대부분의 Linux 시스템에 사전 설치되어 있습니다. 이 튜토리얼은 Ubuntu에서 Troff를 사용하여 PDF 문서의 형식을 지정하는 방법을 보여줍니다.

Troff 란 무엇이며 왜 사용합니까?

기본적으로 Troff 는 코드와 유사한 스크립트를 인쇄 가능한 문서로 변환하는 텍스트 처리 프로그램입니다. 워드 프로세서와 달리 Troff는 “WYSIWYG” 패러다임에 의존하지 않습니다. 대신 특정 유형의 코드를 사용하여 서식을 처리해야 합니다.

기본 Libreoffice Writer 화면.

이 접근 방식의 가장 큰 장점 중 하나는 단순성입니다. Troff의 기본 설치에는 문서를 만드는 데 필요한 모든 것이 있습니다. 또한 그래픽 사용자 인터페이스가 없다는 것은 SSH를 통해서도 문서를 생성할 수 있다는 것을 의미합니다.

Troff를 실행하는 원격 OpenBSD 세션.

Troff 설치

Troff는 대부분의 Linux 배포판에서 기본적으로 번들로 제공되는 경우가 많습니다. -h해당 플래그 를 실행하여 시스템에 있는지 여부를 확인할 수 있습니다 . 그러면 Troff 설치가 허용하는 모든 플래그의 간략한 목록이 표시됩니다.

troff -h

Troff에서 -h 플래그를 실행하는 터미널 화면.

배포판에서 기본적으로 Troff를 번들로 묶지 않는 경우가 있습니다. 이 경우 “groff” 패키지를 찾아 설치할 수 있습니다.

groff에 대한 apt info 명령을 실행하는 터미널 창.

이것은 수많은 새롭고 현대적인 기능을 포함하는 GNU 프로젝트에 의한 Troff 및 Nroff 프로그램의 재구현입니다.

다음 명령을 사용하여 Ubuntu에 groff를 설치할 수 있습니다.

sudo apt install groff

groff에 대한 apt install 명령을 보여주는 터미널 창.

첫 번째 Troff 문서 만들기

소스 코드와 마찬가지로 모든 Troff 문서는 문서 작성 방법에 대한 지침이 포함된 텍스트 파일입니다. 여기에는 페이지 및 여백 너비와 문자 및 페이지 간격이 포함됩니다.

복잡한 Troff 매크로를 보여주는 터미널 창 화면.

이 수준의 제어를 통해 프로그램을 조작하여 모든 종류의 문서를 만들 수 있습니다. 이를 단순화하기 위해 Troff 개발자는 이러한 명령을 더 간단한 구문으로 압축하는 “매크로”를 만들었습니다.

Troff에서 사용하게 될 가장 일반적인 매크로 중 하나는 “ms”입니다. 기사 스타일로 문서를 생성합니다. touch다음 명령 을 사용하여 ms 문서를 만들 수 있습니다 .

touch my-first-document.ms

모든 Troff 문서는 텍스트이므로 텍스트 편집기를 사용하여 문서를 열 수 있습니다. 제 경우에는 vim을 사용하고 있습니다. 또는 이러한 Linux용 텍스트 편집기를 사용할 수 있습니다.

vim my-first-document.ms

새로운 ms 문서를 보여주는 터미널 창.

Troff 형식 이해

모든 Troff 문서는 유사한 구조를 따릅니다. 만드는 모든 서식 지정 명령은 서식을 지정하려는 콘텐츠에서 별도의 줄에 있어야 합니다. 따라서 일반적인 Troff 문서는 다음과 같습니다.

.COMMAND1
This is a piece of content in a Troff document.

.COMMAND2
This is a different piece of content in a Troff document.

ms에서 사용할 가장 기본적인 두 가지 명령은 .TL.PP입니다. 전자는 텍스트를 제목으로 변환하고 문서 중앙에 배치하는 반면, 후자는 단락과 같은 스타일을 따르도록 텍스트 서식을 지정합니다.

예를 들어 다음 발췌문에서는 .TL.PP명령을 모두 사용합니다.

.TL
My First Troff Document

.PP
This is content that I want to look like a paragraph in my final document. It is not a very long content but it is my first Troff document and it is something that I am proud of. It is about three sentences long and it should wrap around the document properly.

기본 Troff 문서를 보여주는 터미널 창.

여기에서 파일을 Troff 프로그램에 전달하여 문서를 만듭니다.

groff -ms -Tpdf. /my-first-document.ms > output.pdf

기본 Troff 문서의 PDF 출력.

굵게, 기울임꼴 및 밑줄 텍스트 만들기

일반 워드 프로세서와 마찬가지로 대부분의 Troff 매크로는 문서를 사용자 지정하기 위한 다양한 스타일 명령을 제공합니다. ms의 경우 , .B및 입니다 ..I.UL.BX

  • .B명령은 텍스트를 굵게 표시합니다.
  • .I명령은 텍스트를 기울임꼴로 변경합니다.
  • .UL.BX텍스트 주위에 각각 밑줄과 상자를 그리는 명령입니다.

위의 명령과 유사하게 문서에서 이러한 명령을 사용하려면 각 스타일을 자체 줄로 구분해야 합니다.

.TL
My First Troff Document

.PP
This is
.B
content
.R
that I want to look like a paragraph in my final document. [...]

이 예제에서는 “content”라는 단어 앞에 새 줄 .B을 만들고 볼드체로 변경하는 명령을 추가한 다음 새 줄을 만들고 .R명령을 추가했습니다. 이를 통해 Troff는 이전 스타일로 돌아갈 수 있습니다.

단일 단어를 볼드체로 표시하는 Troff 문서의 PDF 출력.

.R스타일을 변경할 때 항상 명령 을 추가해야 한다는 점에 유의해야 합니다 . 예를 들어, 다음 발췌문은 .ITroff가 명령 뒤에 있는 것을 보지 못했기 때문에 명령 을 종료하지 않습니다 .R.

.TL
My First Troff Document

.PP
This is
.I
content
that I want to look like a paragraph in my final document. [...]

본문의 대부분을 이탤릭체로 보여주는 Troff 문서의 PDF 출력.

새 문서 섹션 만들기

LaTeX와 마찬가지로 Troff는 섹션 및 계층 구조 감지도 지원하므로 편집할 때 각 헤더의 수준을 정렬하고 일치시킬 필요가 없습니다.

문서에 새 섹션을 만들려면 .NH명령 다음에 제목 이름을 사용하십시오.

.TL
My First Troff Document

.NH
My First Heading
.PP
This is content that I want to look like a paragraph in my final document.

단일 번호 제목이 있는 Troff 문서의 PDF 출력.

기본적으로 모든 Troff 헤더에는 프로그램이 최종 문서에 콘텐츠를 구성하고 표시하는 방법을 지정하는 수준 값이 있습니다. 이를 알고 있으면 이 값을 변경하여 제목의 수준을 조정할 수 있습니다.

예를 들어 다음은 부모 바로 아래에 수준 2 머리글을 만듭니다.

.TL
My First Troff Document

.NH
My First Heading
.NH 2
My First Subheading
.PP
This is content that I want to look like a paragraph in my final document.

번호가 매겨진 중첩 제목이 있는 페이지를 표시하는 Troff 문서의 PDF 출력.

일반 번호 헤더 외에도 Troff는 문서의 계층 구조를 계속 따르는 빈 헤더를 만들 수도 있습니다.

이렇게 하려면 다음 명령 으로 바꾸 .NH십시오 ..SH

.TL
My First Troff Document

.SH
My First Heading
.SH 2
My First Subheading
.PP
This is content that I want to look like a paragraph in my final document.

번호가 지정되지 않은 중첩 제목을 표시하는 Troff 문서의 PDF 출력.

Troff에서 목록 만들기

Troff의 단순성 덕분에 필요한 대로 동작을 구부릴 수도 있습니다. 예를 들어 Troff 또는 ms 매크로에는 기본적으로 목록이 제공되지 않습니다. 그럼에도 불구하고 몇 가지 ms 명령을 결합하여 여전히 목록을 만들 수 있습니다.

Troff의 모든 목록은 들여쓰기, 글머리 기호 및 내용의 세 부분으로 구성됩니다. 들여쓰기를 만들려면 .RS.RE명령을 사용합니다. 그러면 그 안에 있는 모든 텍스트의 현재 들여쓰기 수준이 4칸 이동합니다.

.RS
This is my first item.
.RE

간단한 목록 항목을 보여주는 Troff 문서의 PDF 출력.

다음으로 를 사용하여 목록 항목에 대한 글머리 기호를 만듭니다 .IP. 텍스트의 왼쪽 여백을 특정 너비로 ​​고정하는 “단락 들여쓰기” 명령입니다.

.IP명령을 사용하면 사용자 지정 글머리 기호와 글머리 기호와 텍스트 사이의 공백을 설정할 수도 있습니다. 이 경우 글머리 기호를 “[1]”로 설정하고 4칸을 제공합니다.

.RS
.IP [1] 4
This is my first item.
.RE

글머리 기호가 있는 단일 목록 항목을 표시하는 Troff 문서의 PDF 출력.

이제 명령을 복사하여 붙여넣어 .IP추가 목록 항목을 만듭니다.

.RS
.IP [1] 4
This is my first item.
.IP [2] 4
This is my second item.
.IP [3] 4
This is my third item.
.RE

글머리 기호가 있는 세 가지 기본 목록 항목을 보여주는 Troff 문서의 PDF 출력.

마지막으로 사용자 지정 매크로를 만들어 이 프로세스를 자동화합니다. 예를 들어, 다음 발췌문은 내 .IP명령을 .QW다음 으로 제한합니다.

.de QW
.IP [-] 4
..

.RS
.QW
This is my first item.
.QW
This is my second item.
.QW
This is my third item.
.RE

매크로를 사용하여 목록 생성을 자동화한 문서의 소스 파일을 표시하는 터미널 창입니다.

Troff에서 전처리기로 테이블 만들기

Troff의 한 가지 단점은 대부분의 기능이 “전처리기”로 존재한다는 것입니다. 대부분의 경우 이들은 “전처리기 컨테이너 스크립트”를 생성하여 작동하고 이를 저수준 Troff 코드로 변환하는 프로그램 외부의 바이너리입니다.

전처리기에서 변환된 Troff 코드를 보여주는 터미널 창입니다.

Tbl은 Troff 전처리기의 좋은 예입니다. 문서의 표를 관리하는 프로그램입니다. 기본 Tbl 컨테이너는 다음과 같습니다.

.TS
allbox ;
c c c.
item1 <Tab> item2 <Tab> item3
item4 <Tab> item5 <Tab> item6

.TE

  • 및 명령은 Tbl .TS에게 .TE이것이 읽을 수 있는 환경임을 알려줍니다.
  • 두 번째 줄은 프로그램에 이 테이블의 형식을 지정하는 방법을 알려줍니다.
  • 세 번째 줄은 공백으로 구분된 필드로 테이블의 열 수와 정렬을 지정합니다.
  • 네 번째와 다섯 번째 줄은 테이블의 내용을 포함하는 탭으로 구분된 필드입니다.
Tbl에 대한 전처리기 스크립트를 표시하는 터미널 창입니다.

Tbl로 문서를 컴파일하는 것은 일반 Troff 파일과 약간 다릅니다. 먼저 파일을 로드합니다.

tbl my-first-document.ms > preprocessed.ms

다음으로 프로그램의 출력을 Troff에 공급합니다.

groff -ms -Tpdf. /preprocessed.ms > output.pdf

마지막으로 UNIX 파이프를 사용하여 이 프로세스를 자동화합니다.

tbl my-first-document.ms | groff -ms -Tpdf > output.pdf

기본 테이블을 보여주는 Troff 문서의 PDF 출력.

자주 묻는 질문

Windows에서 Troff를 사용할 수 있습니까?

기본적으로 Troff와 Groff는 공식적으로 Windows로 포팅되지 않습니다. 그럼에도 불구하고 Linux용 Windows 하위 시스템을 설치하면 다른 GNU 유틸리티와 함께 ​​Groff를 계속 사용할 수 있습니다.

Troff에 참고문헌 추적 기능이 있습니까?

예. Refer외부 참고 문헌 파일을 사용하여 Troff 문서의 참조를 자동으로 추적하는 간단한 전처리기입니다. 를 실행하여 매뉴얼 페이지를 방문하면 작동 방식에 대해 자세히 알아볼 수 있습니다 man refer.

Troff를 컴파일할 때 “누락된 DESC” 오류를 어떻게 고칠 수 있습니까?

이 문제는 시스템에서 누락된 종속성 또는 일치하지 않는 버전 파일로 인해 발생했을 가능성이 큽니다. 이 문제를 해결하려면 배포 저장소에서 적절한 groff 패키지를 설치하십시오.

이미지 크레디트: Unsplash를 통한 Simon Hattinga Verscheure . Ramces Red의 모든 변경 및 스크린샷.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다