Linux で Troff を使用して PDF ドキュメントをフォーマットする方法
troff は、Linux システム用のシンプルかつ強力なドキュメント ワード プロセッサです。 コマンドラインからソースファイルをコンパイルすることで、印刷可能なドキュメントを簡単に作成できます。 ようではない ラテックス troff は信じられないほど軽量で、ほとんどの Linux システムにプリインストールされています。 このチュートリアルでは、Troff を使用して Ubuntu で PDF ドキュメントをフォーマットする方法を示します。
Troff とは何ですか? なぜそれを使用するのですか?
最も基本的な意味で、 トロフ これは、コードのように見えるスクリプトを印刷可能な文書に変換するワープロ プログラムです。 ワード プロセッサとは異なり、Troff は "WYSIWYG" モデルに依存しません。 代わりに、書式設定を処理するために特定の種類のコードを使用する必要があります。
シンプルさは、このスタイルの最大の利点の XNUMX つです。 Troff の基本インストールには、ドキュメントの作成に必要なものがすべて含まれています。 さらに、グラフィカル ユーザー インターフェイスがないということは、SSH 経由でもドキュメントを作成できることを意味します。
ヒント: 転送方法を学ぶ SSH 経由の GUI アプリケーション Linuxで。
トロフのインストール
多くの場合、Troff はほとんどの Linux ディストリビューションにデフォルトでバンドルされています。 -h フラグを実行して、システムにあるかどうかを確認できます。 これにより、Troff のインストールが受け入れるすべてのタグの短いリストが表示されます。
トロフ -h
ディストリビューションがデフォルトで Troff をコンパイルしない場合があります。 この場合、パッケージを検索してインストールできます 「グロフ」。
これは、GNU プロジェクトによる Troff および Nroff プログラムの再実装であり、多くの新しい最新機能が含まれています。
次のコマンドを使用して、Ubuntu に groff をインストールできます。
須藤 apt インストール groff
最初の Troff ドキュメントを作成する
ソース コードと同様に、各 Troff ドキュメントは、ドキュメントの作成方法に関する指示を含むテキスト ファイルです。 これには、ページ幅と余白、および文字とページの間隔が含まれます。
このレベルの制御により、プログラムを操作して、あらゆる種類のドキュメントを作成できます。 簡単にするために、Troff の開発者は、これらのコマンドをより単純な構文に凝縮する「マクロ」を作成しました。
Troff で使用する最も一般的なマクロの XNUMX つはミリ秒です。 エッセイ風のドキュメントが作成されます。 touch コマンドで ms ドキュメントを作成できます。
my-first-document.ms にタッチします
すべての Troff ドキュメントはテキストであるため、テキスト エディタでドキュメントを開くことができます。 私の場合は、vim を使用しています。 または、Linux 用のこれらのテキスト エディターを使用することもできます。
vim my-first-document.ms
Troff 形式を理解する
Troff のドキュメントはすべて、同様の構造に従っています。 実行する各書式設定コマンドは、書式設定しようとしているコンテンツの個別の行にある必要があります。 そのため、典型的な Troff ドキュメントは次のようになります。
.COMMAND1 これは、Troff ドキュメントのコンテンツの一部です。 .COMMAND2 これは、Troff ドキュメント内の別のコンテンツです。
ミリ秒単位で使用する最も基本的なコマンドの XNUMX つは、TL と .PP です。 前者はテキストを見出しに変換してドキュメントの中央に配置しますが、後者はテキストを段落のようなスタイルにフォーマットします。
たとえば、次のスニペットでは、TL コマンドと .PP コマンドの両方を使用しています。
.TL My First Troff Document .PP これは、最終的なドキュメントで段落のように見せたいコンテンツです。 それほど長い内容ではありませんが、これは私にとって初めての Troff ドキュメントであり、私が誇りに思っているものです。 長さは約 XNUMX 文で、ドキュメントを適切に囲む必要があります。
ここから、Troff のソフトウェアにファイルを渡してドキュメントを作成します。
groff -ms -Tpdf ./my-first-document.ms > output.pdf
ヒント: もっとシンプルなものを好む場合は、その方法を学びましょう GoogleドキュメントでMLA形式で書く.
太字、斜体、下線付きのテキストを作成する
通常のワード プロセッサと同様に、ほとんどの Troff マクロには、ドキュメントをカスタマイズするための多数のスタイル コマンドが用意されています。 ms の場合、これらは .B と . 私と。 UL および .BX.
- B コマンドは、テキストを太字に変更します。
- .I コマンドは、テキストを斜体に変更します。
- ULと. BX は、それぞれテキストの周りに下線とボックスを描画する XNUMX つのコマンドです。
上記のコマンドと同様に、ドキュメントでこれらのコマンドを使用するには、各スタイルをそれぞれの行で区切る必要があります。
.TL My First Troff Document .PP これは、.B content .R 最終ドキュメントで段落のように見せたいものです。 [...]
この例では、単語の前に新しい行を作成しました "コンテンツ" そして、.B コマンドを追加して太字に変更し、新しい行を作成して .R コマンドを追加しました。 これにより、Troff は以前のテクニックに戻ることができます。
スタイルを変更するときは、常に .R コマンドを追加する必要があることに注意してください。 たとえば、次のスニペットは .I コマンドを終了しません。これは、Troff がその後の .R ファイルを認識していないためです。
.TL My First Troff Document .PP これは、最終的なドキュメントで段落のように見せたいコンテンツです。 [...]
新しいドキュメント セクションを作成する
LaTeX と同様に、Troff もパーティションの検出と階層をサポートしているため、編集時に各ヘッダーのレベルを並べ替えて一致させる必要はありません。
ドキュメントに新しいセクションを作成するには、.NH コマンドの後に見出し名を付けて使用します。
.TL My First Troff Document .NH My First Heading .PP これは、最終的なドキュメントで段落のように見せたいコンテンツです。
デフォルトでは、各 Troff ヘッダーには、プログラムの構築方法と最終的なドキュメントに表示される内容を決定するレベル値が含まれています。 この値を変更して見出しレベルを調整できることを知っています。
たとえば、次の例では、親のすぐ下にレベル 2 アドレスが作成されます。
.TL My First Troff Document .NH My First Heading .NH 2 My First Subheading .PP これは、最終的なドキュメントで段落のように見せたいコンテンツです。
通常の番号付きヘッダーとは別に、Troff はドキュメント レベルの階層に従う空のヘッダーを作成することもできます。
これを行うには、.NH を SH コマンドに置き換えます。
.TL My First Troff Document .SH My First Heading .SH 2 My First Subheading .PP これは、最終的なドキュメントで段落のように見せたいコンテンツです。
ヒント:方法を学ぶ Google ドキュメントの余白を変更する.
Troff でリストを作成する
また、Troff のシンプルさにより、彼女の行動を好きなように変えることができます。 たとえば、Troff や ms マクロでは、リストはデフォルトでは提供されません。 それでも、いくつかの ms コマンドを組み合わせてリストを作成することはできます。
Troff のすべてのリストは、インデント、ブレット、コンテンツの XNUMX つの部分で構成されています。 インデントを作成するには、.rs および .rs コマンドを使用します。 RE。 これにより、その中のテキストの現在のインデント レベルが XNUMX つのスペースでインデントされます。
.RS これは私の最初の項目です。 .RE
次に、.IP を使用してメニュー項目の箇条書きを作成します。 これは、テキストの左余白を特定の幅に固定する段落インデント コマンドです。
IP コマンドを使用すると、カスタムの箇条書きと、箇条書きとテキストの間のスペースを設定することもできます。 この場合、箇条書きを「[1]」に設定し、XNUMX つのスペースを付けます。
.RS .IP [1] 4 これは私の最初の項目です。 .RE
IP コマンドをコピーして貼り付け、追加のメニュー項目を作成します。
.RS .IP [1] 4 これは私の最初の項目です。 .IP [2] 4 これは私の 3 番目の項目です。 .IP [4] XNUMX これは私の XNUMX 番目の項目です。 .RE
最後に、カスタム マクロを作成して、このプロセスを自動化します。 たとえば、次のスニペットは IP コマンドを QW に関連付けます。
.de QW .IP [-] 4 .. .RS .QW これは私の最初の項目です。 .QW これは私の XNUMX 番目の項目です。 .QW これは私の XNUMX 番目の項目です。 .RE
Troff でプリプロセッサを使用してテーブルを作成する
Troff の奇妙な点の XNUMX つは、その機能のほとんどが次のように存在することです。 「一次治療」. ほとんどの場合、これらはプログラム外のバイナリであり、作成することによって機能します 「プリプロセッサ コンテナ スクリプト」 低レベルの Troff コードに変換します。
Tbl は、Troff プリプロセッサの好例です。 文書内の表を管理するプログラムです。 基本的な Tbl コンテナーは次のようになります。
.TS allbox ; cc c. アイテム1 アイテム2 アイテム3 アイテム4 アイテム5 item6.TE
- .TS および .TE コマンドは、これが読み取り可能な環境であることを Tbl に伝えます。
- XNUMX 行目は、このテーブルをフォーマットする方法をプログラムに指示します。
- XNUMX 行目はスペースで区切られたフィールドで、列の数とテーブルの配置を定義します。
- XNUMX 行目と XNUMX 行目は、テーブルの内容を含むタブ区切りのフィールドです。
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
よくある質問:
Q1: Windows で Troff を使用することはできますか?
答え。 デフォルトでは、Troff と Groff は正式に Windows に移植されていません。 それにもかかわらず、Groff を他の GNU ツールで使用することはできます。 Linux 用 Windows サブシステムをインストールする.
Q2: Troff には参考文献追跡機能がありますか?
答え。 はい。 Referral は、外部参考文献ファイルを使用して、Troff ドキュメント内の参照を自動的に追跡する単純なプリプロセッサです。 man referrer を実行して man ページにアクセスすると、その仕組みについて詳しく知ることができます。
Q3: Troff をコンパイルするときの「missing DESC」エラーを修正するにはどうすればよいですか?
答え。 この問題は、システムに依存関係がないか、バージョン ファイルが一致していないことが原因である可能性があります。 これを修正するには、ディストリビューションのリポジトリから適切な groff パッケージをインストールします。