troffのmdocマクロセットと新しいマンページを作成するために使用される一般的なmanマクロセットの違いは何ですか?

troffのmdocマクロセットと新しいマンページを作成するために使用される一般的なmanマクロセットの違いは何ですか?

サイドプロジェクト用のマニュアルページを作成しようとしていますが、以前は troff を使ってみたことがなく、 man マクロセットと mdoc マクロセットの違いが正確に何なのか、どちらが正しいか調べてみたいと思います。 POSIX OS とさまざまな troff 実装間の移植性が向上しました。

私はmdocとプレーンマンがいくつかのマクロを共有し、BSD(少なくともFreeBSD)はmdoc手動フォーマットを使用し、GNUはプレーンマンフォーマットを使用することに気づきました。

だから私の質問は基本的に次のようになります。

mdocはmanマクロの親セットですか?これは、普通の人々の継承財産を使用するという意味ですか? mdoc の groff マンページには、一般的な man マクロが mdoc の全身であると指定されていますが、mdoc が man に代わるかどうかは指定しません。

BSDとSYSVおよび/またはGNUの違いは何ですか?

groff(ガボ troff のような)に加えて、POSIX システムと troff のさまざまな実装でどちらがより移植性が良いですか?

ベストアンサー1

manマクロセットとマクロセットの違いは何ですかmdoc

man章のタイトル、段落、およびサブタイトルを定義する単純なコマンドだけで最小化され、単純です。パッケージには.B、、、.BIなどのいくつかの基本書式指定コマンドが含まれています。

mdoc一方、スイッチ、オプションと引数のリスト、関数の種類と戻り値、フラグ、コマンドの要約、および期待できるほとんどすべての項目など、一般的なマンページ要素に対する専用のマークアップコマンドを含む完全な機能を備えたDSLです。コンテンツに含まれるマンページのマークアップ言語。バラよりmdoc(7)完全な参照のために。

マクロmdocの親セットですかman

いいえ、まったく関係のないパッケージであり、共通の祖先のみを共有mdocman、コンピュータのマニュアルページにタグを付けるのと同じ目標を共有します。

私は両方ともmdoc一般的なmanマクロを共有することがわかりました

彼らは何も共有しません。おそらくあなたが見ているのは、mdoc書き込みとマクロのためのデフォルトの組版言語であるデフォルトのRoffコマンドです。これらのコマンドは、使用される文書では多用される傾向がありますが、使用される文書ではあまり頻繁に使用されません。manmanmdoc

標準のRoffパッケージがマクロ名を大文字で使用するように、基本的なRoffコマンドをマクロと簡単に区別できます。の場合、各マクロの名前は、などmanの大文字で表示されます。の場合、、などの最初の文字のみを大文字で表示します。.PP.TH.SHmdoc.Pp.Dt.Sh

Groffのマンページには、一般マクロが全身と指定mdocmanれていますが、それを置き換えるかmdocどうかは明示されていません。mdocman

groff_mdoc(7)
UNIX のマニュアルページへの完全な参照を作成するには、次のコマンドを使用します。-mdocマクロパッケージコンテンツに基づいてフィールドGNU troff(1) に基づくフォーマットパッケージです。その前任者は-男性(7) ページレイアウトをパッケージ化して処理し、フォントやその他のレイアウトの詳細は個々の作成者に任せます。

ここで、「前任者」とは、「以前に使用された同様のもの」を意味するとは思わない。 :-)

troffPOSIXシステムとさまざまな実装(Heirloom Troffなど)では、Groffよりも移植性に優れていますか?

このmdocマクロは長い間よくサポートされており、4.4BSDで初めて登場し、すべてのGroffインストールでデフォルトで提供されました。 1970年代半ばのアンティークターミナル用のファイルを準備する必要がない限り、両方のパッケージは移植性に優れていると見なすことができます。 :)

BSDとSYSVおよび/またはGNUの違いは何ですか?

あなたは正しい道を行っています。最新のBSDシステムでは、mandoc基本的なコンパイルを使用してC言語をきちんと再実装したFormat and Display Manpagesというプログラムを使用していますmdoc。これは、従来のマンページが正しく表示されるように、Roff言語のサブセットのみをサポートします。

MandocはGroffやHeirloomのような真の組版プログラムではありません。これは特にコンピュータのマニュアルに焦点を当てています。これを使用して作成された文書のみがmdocBSD派生プラットフォームで一貫して正確にレンダリングされることが保証されます。より詳細な批判は、man以下で確認できます。man(7)

単純なレガシーを使用してこれは可能ですかman

ほとんど。 Roff構文とパイプメカニズムを深く理解している経験豊富なマンページ作成者でない限り、マンページ作成mdoc以外の目的でRoffを使用しないでください。不必要に長くまたは制限されているtroffと思っている経験豊富なユーザーは、この方法がより簡単で邪魔にならないと思います。しかし、これらの著者は経験が豊富で、自分が何をしているのかを正確に知っています。mdocmanだからあなたがベテランのベテランではないなら、mdoc

追加情報

Roffの歴史についてもっと知りたいのですが、この答えはそうでない場合FMEYEWTK以下はすでに権威ある研究資料へのリンクです:

おすすめ記事