サイドプロジェクト用のマニュアルページを作成しようとしていますが、以前は 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
?
いいえ、まったく関係のないパッケージであり、共通の祖先のみを共有mdoc
しman
、コンピュータのマニュアルページにタグを付けるのと同じ目標を共有します。
私は両方とも
mdoc
一般的なman
マクロを共有することがわかりました
彼らは何も共有しません。おそらくあなたが見ているのは、mdoc
書き込みとマクロのためのデフォルトの組版言語であるデフォルトのRoffコマンドです。これらのコマンドは、使用される文書では多用される傾向がありますが、使用される文書ではあまり頻繁に使用されません。man
man
mdoc
標準のRoffパッケージがマクロ名を大文字で使用するように、基本的なRoffコマンドをマクロと簡単に区別できます。の場合、各マクロの名前は、などman
の大文字で表示されます。の場合、、などの最初の文字のみを大文字で表示します。.PP
.TH
.SH
mdoc
.Pp
.Dt
.Sh
Groffのマンページには、一般マクロが全身と指定
mdoc
さman
れていますが、それを置き換えるかmdoc
どうかは明示されていません。mdoc
man
groff_mdoc(7)
UNIX のマニュアルページへの完全な参照を作成するには、次のコマンドを使用します。-mdocマクロパッケージコンテンツに基づいてフィールドGNU troff(1) に基づくフォーマットパッケージです。その前任者は-男性(7) ページレイアウトをパッケージ化して処理し、フォントやその他のレイアウトの詳細は個々の作成者に任せます。
ここで、「前任者」とは、「以前に使用された同様のもの」を意味するとは思わない。 :-)
troff
POSIXシステムとさまざまな実装(Heirloom Troffなど)では、Groffよりも移植性に優れていますか?
このmdoc
マクロは長い間よくサポートされており、4.4BSDで初めて登場し、すべてのGroffインストールでデフォルトで提供されました。 1970年代半ばのアンティークターミナル用のファイルを準備する必要がない限り、両方のパッケージは移植性に優れていると見なすことができます。 :)
BSDとSYSVおよび/またはGNUの違いは何ですか?
あなたは正しい道を行っています。最新のBSDシステムでは、mandoc
基本的なコンパイルを使用してC言語をきちんと再実装したFormat and Display Manpagesというプログラムを使用していますmdoc
。これは、従来のマンページが正しく表示されるように、Roff言語のサブセットのみをサポートします。
MandocはGroffやHeirloomのような真の組版プログラムではありません。これは特にコンピュータのマニュアルに焦点を当てています。これを使用して作成された文書のみがmdoc
BSD派生プラットフォームで一貫して正確にレンダリングされることが保証されます。より詳細な批判は、man
以下で確認できます。man(7)
。
単純なレガシーを使用してこれは可能ですか
man
?
ほとんど。 Roff構文とパイプメカニズムを深く理解している経験豊富なマンページ作成者でない限り、マンページ作成mdoc
以外の目的でRoffを使用しないでください。不必要に長くまたは制限されているtroff
と思っている経験豊富なユーザーは、この方法がより簡単で邪魔にならないと思います。しかし、これらの著者は経験が豊富で、自分が何をしているのかを正確に知っています。mdoc
man
だからあなたがベテランのベテランではないなら、mdoc
。
追加情報
Roffの歴史についてもっと知りたいのですが、この答えはそうでない場合FMEYEWTK以下はすでに権威ある研究資料へのリンクです:
- UNIXのマンページの歴史:50年以上の開発プロセスを示す包括的なタイムライン
- CSTR#54:オリジナルNroff / TroffユーザーマニュアルのPDFバージョン - 広くTroff聖書と見なされています
- 「BSD手動表示のGroffを無効にする」
mandoc
:老化の理由を説明する著者の論文。man