- manページが「相互リンクがない」あるいは「ターミナルウィンドウを狭めてもテキストが再整形されない」と批判されることは多いが、実際には manフォーマット自体がリンク機能と再整形機能をサポートしている
- 問題は manページを読むツール(
manコマンドやlessなど) がこれらの機能を適切に実装していないことにある
manページのフォーマット構造
参照(リンク)機能も組み込まれている
- mdocフォーマットには次のようなリンクマクロが含まれている:
.Xr: 他のmanページを参照するクロスリファレンス
.Sx: 同じページ内の別セクションへの参照
- HTMLに変換すると実際のリンクとしてレンダリングされ、ブラウザでクリックできる
.Sh セクション見出しはアンカーとして扱われ、.Sx リンクのリンク先になれる
- しかし、ターミナルで
man コマンドから表示すると、このリンク機能は動作しない
結論: 問題はmanフォーマットではなくビューアにある
- 現在の
man コマンドはページを less にパイプして表示しているため、この方式ではリンクを処理できない
- 解決策は次のとおり:
- manフォーマットを理解し、リンクをサポートする新しいページビューアが必要
- ターミナル幅の変更時に テキストの自動再整形(reflow) 機能もあわせて実装すればさらによい
背景情報
- mdoc(7) は1990年代の4.4BSDで導入されたフォーマット
- man(7) は1979年〜1989年の間に使われていた古典的フォーマットで、現在はほとんど使われていない
6件のコメント
Slackボットの通知で1行目だけ見てすぐ共感してクリックしました。私もリーダーが問題だという指摘に100%同意します。
…でも、現代人は
manはおろかターミナルも使わないみたいなんですよね。rtfmはロマンの時代の遺物になってしまいましたね。私は mac では次のように定義しておいて、
pman lsのように使って PDF で見ています。すごく役立つヒントですね……ありがとうございます
すごい、本当にありがとうございます
わあ、これは本当に共感します。
manはちゃんと読めば本当に素晴らしいのですが、うまく読むのがとても難しいんですよね..Hacker Newsの意見