私はサイドプロジェクトのmanページを作成しようとしていますが、これまでtroffを使用したことがありません。また、manマクロセットとmdocマクロセットの違いは正確に何であり、POSIXOS間でより移植性が高いかを理解しようとしています。 esとtroffのさまざまな実装。
私が気付いたのは、mdocとplain manの両方がいくつかのマクロを共有し、BSD(少なくともFreeBSD)はmdoc手動形式を使用し、GNUはplainman形式を使用することです。
だから私の質問は基本的に:
Mdocはmanマクロのスーパーセットですか?そしてそれは普通の人の遺産を使うことになりますか? mdocのgroffマンページには、プレーンマンマクロがmdocの前身であると記載されていますが、mdocがmanに取って代わるかどうかは記載されていません。
BSDとSYSV、および/またはGNUの違いはありますか?
POSIXシステムとgroff以外のtroffのさまざまな実装(heirloom troffなど)間で移植性が高いのはどれですか?
man
マクロセットとmdoc
マクロセットの違いは正確には何ですか?
man
は最小限で単純化されており、セクションの見出し、段落、および小見出しを定義するための最低限のコマンドしかありません。パッケージには、_.B
_、_.BI
_などの基本的なフォーマットコマンドが含まれています。
一方、mdoc
は、独自のフル機能のDSLであり、スイッチ、オプションとパラメータのリスト、関数の種類と戻り値、フラグ、コマンドの概要などの一般的なマンページ要素専用のマークアップコマンドを備えています。マンページマークアップ言語に期待される事実上すべて。完全なリファレンスについては、 mdoc(7)
を参照してください。
mdoc
はman
マクロのスーパーセットですか?
いいえ。mdoc
とman
は完全に無関係なパッケージであり、共通の祖先と、コンピュータのマニュアルページをマークアップするという同じ目標のみを共有しています。
私が気付いたのは、
mdoc
とプレーンman
の両方がいくつかのマクロを共有していることです
彼らは何も共有していません。あなたが見たのはネイティブのRoffコマンドである可能性があります。これは、mdoc
およびman
マクロが記述されている基礎となる植字言語です。これらは、以下を使用するドキュメントで頻繁に使用される傾向があります。 man
ですが、mdoc
を使用するものではそれほどではありません。
標準のRoffパッケージがマクロ名を大文字にする方法により、ネイティブのRoffコマンドとマクロを簡単に区別できます。 man
の場合、各マクロの名前は_.PP
_、_.TH
_、_.SH
_などのように大文字になります。mdoc
の場合、最初の文字のみが大文字になります。 _.Pp
_、_.Dt
_、_.Sh
_など。
mdoc
のGroffマンページには、プレーンなman
マクロがmdoc
の前身であると記載されていますが、mdoc
がman
に取って代わるかどうかは記載されていません。
groff_mdoc(7)
-mdocマクロパッケージを使用してUNIXマニュアルページを作成するための完全なリファレンス。 GNU troff(1)用のcontentベースおよびdomainベースのフォーマットパッケージ。その前身である-man(7)パッケージは、フォントの操作やその他の植字の詳細を個々の作成者に任せて、ページレイアウトに対応していました。
ここでの「前任者」とは、「以前に使用されていた類似のもの」以上のものを意味するものではないと思います。 :-)
Groff(Heirloom Troffなど)以外のPOSIXシステムと
troff
のさまざまな実装間で移植性が高いのはどれですか?
mdoc
マクロは長い間十分にサポートされており、4.4BSDで最初にデビューし、デフォルトですべてのGroffインストールに付属しています。 70年代半ばからのアンティーク端末用のドキュメントを準備しているのでない限り、どちらのパッケージも同等にポータブルであると見なすことができます。 :)
BSDとSYSV、および/またはGNUの違いはありますか?
あなたは正しい方向に進んでいます。最新のBSDシステムは、mandoc
というプログラムを使用して、マンページをフォーマットおよび表示します。これは、ネイティブにコンパイルされたCを使用したmdoc
のクリーンな再実装です。これは、Roff言語のサブセットのみをサポートします。従来のマンページは正しく表示されます。
Mandocは、GroffやHeirloomのように真の植字プログラムではありません。その焦点は特にコンピューターのマニュアルにあります。そして、mdoc
で作成されたドキュメントのみが、BSDから派生したプラットフォームで一貫して正しくレンダリングされることが保証されています。 man
に対するより詳細な批判は、 man(7)
にあります。
そして、それはプレーンな
man
レガシーを使用することになりますか?
やや。 Roffの文法とパイプラインの仕組みを十分に理解している経験豊富なマンページの作成者でない限り、マニュアルページの作成にmdoc
以外のものを使用するべきではありません。ベテランのtroff
ユーザーは、mdoc
が不必要に冗長または制限的であり、man
がより軽くて邪魔にならないことに気付くかもしれません。ただし、これらの作成者は、彼らが何をしているのかをよく知っているのに十分な経験があります―ですから、グリズリーのベテランでない限り、mdoc
。
Roffの歴史についてもっと知りたいと思っていて、この答えがまだ [〜#〜] fmteyewtk [〜#〜] でなかった場合は、信頼できる学習資料へのリンクをいくつか示します。
mandoc
の作者による論文で、man
の陳腐化。