web-dev-qa-db-ja.com

troff用のmdocマクロセットと新しいマンページを作成するためのプレーンマンマクロセットの違いは何ですか

私はサイドプロジェクトの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など)間で移植性が高いのはどれですか?

3
Zeno of Elea

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

manは最小限で単純化されており、セクションの見出し、段落、および小見出しを定義するための最低限のコマンドしかありません。パッケージには、_.B_、_.BI_などの基本的なフォーマットコマンドが含まれています。

一方、mdocは、独自のフル機能のDSLであり、スイッチ、オプションとパラメータのリスト、関数の種類と戻り値、フラグ、コマンドの概要などの一般的なマンページ要素専用のマークアップコマンドを備えています。マンページマークアップ言語に期待される事実上すべて。完全なリファレンスについては、 mdoc(7) を参照してください。

mdocmanマクロのスーパーセットですか?

いいえ。mdocmanは完全に無関係なパッケージであり、共通の祖先と、コンピュータのマニュアルページをマークアップするという同じ目標のみを共有しています。

私が気付いたのは、mdocとプレーンmanの両方がいくつかのマクロを共有していることです

彼らは何も共有していません。あなたが見たのはネイティブのRoffコマンドである可能性があります。これは、mdocおよびmanマクロが記述されている基礎となる植字言語です。これらは、以下を使用するドキュメントで頻繁に使用される傾向があります。 manですが、mdocを使用するものではそれほどではありません。

標準のRoffパッケージがマクロ名を大文字にする方法により、ネイティブのRoffコマンドとマクロを簡単に区別できます。 manの場合、各マクロの名前は_.PP_、_.TH_、_.SH_などのように大文字になります。mdocの場合、最初の文字のみが大文字になります。 _.Pp_、_.Dt_、_.Sh_など。

mdocのGroffマンページには、プレーンなmanマクロがmdocの前身であると記載されていますが、mdocmanに取って代わるかどうかは記載されていません。

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 [〜#〜] でなかった場合は、信頼できる学習資料へのリンクをいくつか示します。

3
user101379