groffを使わずにいくつかのLinuxのマニュアルページをHTMLに変換したいと思います。 groffに対する私の偏見は、Sabayonに制限されているように見えるいくつかのPNGレンダリングの問題を引き起こしました(これはVirtualBox VMの他の展開では発生しないようです)。これはバグであることを知っていますが、近いうちに解決策が出てくるとは思わなかったので、LinuxのマニュアルページをHTMLに変換する別の方法があるかどうかを尋ねたかったのです。 HTMLページの使用http://linux.die.net/man私が興味のあるマニュアルページの一部が存在しないため(emerge(1)
存在しないなど)、許容可能なソリューションではありません。
答え1
次のような多くの選択肢があります。ロピット、トロフィー、man2html。 Perlに基づくオンラインマニュアルページブラウザもあります。人間サーバー。
私が好きなのpandoc
は残念ながら基本的にROFF入力をサポートしていないようです(複数の変換フィルタを一緒に接続する必要がある場合はそれを使用できますが)。
man2html 例:
zcat /usr/share/man/man1/dd.1.gz \
| man2html \
| sudo tee /var/www/html/dd.html
Rofitの例:
git clone git://github.com/bagder/roffit.git
cd roffit
zcat /usr/share/man/man1/dd.1.gz \
| perl roffit \
| sudo tee /var/www/html/dd-roffit.html
その他のツール:
- トロブCVT同じことをしてください。
- 「本当」
troff
– ぜひやってみなければならないhttp://heirloom.sourceforge.net/doctools.html。私はschilyがOpenSolarisと友達について考えていると思います:-).
答え2
この最初のポイントは恥ずかしい破れ公式ウェブサイト:
mandoc
コンパイル用のツールセットmdoc
、roff
BSDマンページ用のマクロ言語の選択、man
UNIXマンページ用の主要な歴史的言語です。小さくてISO C、ISCライセンスがあり、非常に高速です。ツールセットの主なコンポーネントは、出力をUNIX端末にフォーマットするための検証コンパイラベースのmandoc
ユーティリティです。libmandoc
(ワイド文字ロケールのサポート)、XHTML、HTML、PostScript、およびPDF。
mandoc
主にOpenBSDで開発され、OpenBSDおよびBSD.lvプロジェクトです。私たちは、関心のあるすべての無料オペレーティングシステム、特にFreeBSD、NetBSD、DragonFly、illumos、Minix 3、GNU / Linux、およびポータブルpkgsrc
パッケージ構築システムを実行するすべてのシステムをサポートするよう努めています。開発を支援するには、mandoc
OpenBSD財団に寄付することを検討してください。
pacman
ローカルに何をインストールしたのか教えてください。mdocml
パッケージサイズは3.28mbで、次の/usr/bin
バイナリが含まれています。
/usr/bin/demandoc
/usr/bin/makewhatis
/usr/bin/mandoc
/usr/bin/mapropos
/usr/bin/mman
/usr/bin/mwhatis
それで私はできる:
mman -Thtml mman >/tmp/html
firefox file:///tmp/html
必要に応じて独自のスタイルシートを適用できます。すべての書類はオンライン、しかも。考えてみるとこれもすべてmandoc
まとめられていましたね。
答え3
まず、次の点を指摘する必要がある。複数のプログラムが呼び出されますman2html
。
そのようなユーティリティの1つman2html
は、もともと1990年代後半にEindhoven University of TechnologyのRichard Verhoevenによって書かれたCプログラムです。プログラムの内部構造は非常に奇妙です。ただし、troff
または出力の代わりに元のマニュアルページのソースコードを使用できるという利点がありますnroff
。このプログラムはFrederico Lucifrediのマンスイートに追加されました。
このプログラムはマクロの意味を理解し、man
合理mandoc
的なHTML構造を出力します。たとえば、次のようにインデントされた段落を使用する場合:
.IP ワード 定義 言葉。 .RS
プログラムはHTML定義のリストを出力します。
私は非常に大きなマニュアルページ(ほとんどのソースコード1 MB、レターサイズPDFに変換すると、長さがほぼ400,800ページ)を維持しています。groff
$ ls -l txr.1-rw-rw-r-- 1 kaz kaz 980549 1月3日11:38 txr.1-rw-rw-r-- 1 kaz kaz 2016633 4月7日16:00 txr 1
約5年前にこれをHTMLに変換しなければならなかったときに合理的な作業を行った唯一のことは、man2html
Cプログラムと「季節の味」のための出力後処理だけでした。
最終的には、より高品質のHTML文書が欲しかったので、troff
マクロの作成を始めました。 Cプログラムの限界が明確になりすぎてフォークしました。私のGitのウェブサイトで見つけることができます。30個のman2htmlパッチを含むgitリポジトリ。これらのパッチは、多くのバグを修正し、troffマクロ、条件文、ループ、その他の構成を解釈するプログラムの機能を強化します。また、M2
コードを書いて実行中かどうかを検出し、条件に応じて他のタスクを実行できるレジスタも追加しましたman2html
(例を見るには下にスクロール)。また、.M2SS
カスタムHTMLヘッダーセクションをエクスポートするためのコマンドを追加しました。
私の大きなマンページはここで開催。これはman2html
私が自分で作って後処理したものです。genman.txr
プログラムし、セクションを並べ替え、文書全体にハイパーリンクを追加します。また、目次の内部リンクを安定したURL(任意の列挙型ではなくハッシュベース)に書き換え、一部のJavascriptで目次を折りたたむことができるようにします。
私が使用した正確なコマンドは次のとおりですMakefile
。
man2html txr.1 ./txr genman.txr -> txr-manpage.html 表txr.1 | pdfroff-man --no-toc->txr-manpage.pdf
出力がHTML間で条件によってどのように異なるかについての例を見るには、nroff
出力の一部を見ることができますman
。
9.19.4 マクロ構造分解 通事論: (defstruct {<name> | (<name> <パラメータ>*)} <スーパー> <スロット指定子>*) defstruct マクロは新しい構造タイプとレジスタを定義します。 これは<name>の下にあり、次のようにバインド可能な記号でなければなりません。 バインド可能な機能。同様に、各 <slot> の名前は次のようになります。 バインド可能なシンボルである場合もあります。
上記のパラメータがにどのように表示されるかを確認してください<angle>
<brackets>
。 HTML版では彼らはに表示されますイタリック体。
構文部分はソースコードで次のようになります。
.coNP マクロ @defstruct .synb .mets(defstruct>>{name|>>(name<<arg*)}< super .mets \ \ << スロット指定子*) 前に
これは、同じ文書で定義されているすべてのカスタムマクロに適用されます。の手段は.mets
メタ文法変数です。手段は中間スペースなしでメタ文法の隣にある具体的な構文であり、手段はとリテラルの間を処理するメタ文法です。< b
b
>> a b
a
b
<> a b c
b
a
c
拡張バージョンでは、man2html
これらのマークアップルールを実装するかなり複雑なマクロを理解しています。
また、マニュアルがこのセクションに自動的に番号を付ける方法にも注意してください。これはすべて troff コードによって行われ、これをman2html
理解します。
答え4
OpenSolarisはOSSとして提供されるので無料troff
。
移植されたソースコードセットは次のとおりです。
http://heirloom.sourceforge.net/doctools.html
しかし、Heirloomはおおよそ死んだプロジェクトでした。 2007. これを確認したいかもしれません。
https://github.com/nt-roff/heirloom-doctools
一部は消えた家宝プロジェクトを続けます。
man2html
troff で美しい HTML マニュアルページを自動的に生成できます。
SchilliXのマニュアルページを参照してください。
http://schillix.sourceforge.net/man/
Schily Bourne Shellを使う:
http://schillix.sourceforge.net/man/man1/bosh.1.html
私はこれに満足しており、正しいオプションを使用すると、マンページを同じグループの他の文書にリンクできます。たとえば、次のコマンドを使用します。
soelim sh.1 | tbl | nroff -u1 -Tlp -man - | col -x | \
(sed -e 's/XXX/sh.1/g' ../conf/pre.html; \
man2html -cgiurl '../man$section$subsection/$title.$section$subsection.html' -compress -nodepage; \
cat ../conf/post.html) | \
egrep -v 'HTML|BODY'> sh.1.html
これは schily ツールの make ファイルシステムの一部です。../conf/pre.html
schily makefilesystemのヘッダーとその他の必須ファイルをメモしてください。../conf/post.html
これら4つを必要に応じて変更することもできます。
拡張バージョンはman2thml
schilyツールの一部です(manページの下部を参照bosh
)。
ところで興味深い情報があります。完全なtroff
ソースコードとすべてのヘルパーのすべてのソースコード(たとえばsoelim
、tbl
...)とman
プログラムのソースコードは、プログラムに必要なコードの半分に過ぎず、mandoc
そのサポートはmandoc
非常に制限されています。tbl
ほとんどのSolarisヒューマンページはハングします。
FreeBSD と同様の形式の troff ソースのサポートが必要な場合は、対応するmandoc
SchilliX ソースセットを作成しましたtroff
。https://sourceforge.net/p/schillix-on/schillix-on/ci/default/tree/usr/src/cmd/troff/troff.d/tmac.d/
問題のコードはandoc
ファイルとdoc*
。
SchilliX -ONのプログラムソースman
がnroff -mandoc
。nroff -man