Linuxのいくつかのmanページをgroffを使わずにHTMLに変換したいと思います。 groffに対する私の偏見は、いくつかの PNGレンダリングの問題 によるものです。これにより、Sabayonにローカライズされているように見えます(これらの問題は発生しないようです)他のディストリビューション用のVirtualBox VM)。これはバグだと思いますが、近い将来に解決策はないようですので、LinuxのmanページをHTMLに変換する他の方法があるかどうか質問したいと思います。 http://linux.die.net/man でHTMLページを使用することは、私が興味を持っているいくつかのmanページがそこにはありません(たとえば、emerge(1)
はありません)。
roffit 、 troff 、 man2html などの選択肢はたくさんあります。 manServer など、Perlベースのオンラインマンページブラウザーもあります。
私のお気に入りはpandoc
ですが、残念ながらデフォルトではROFF入力をサポートしていないようです(複数の変換フィルターをチェーンする必要がある場合は、おそらく使用できます)。
zcat /usr/share/man/man1/dd.1.gz \
| man2html \
| Sudo tee /var/www/html/dd.html
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
troff
-試してみる http://heirloom.sourceforge.net/doctools.html 。私はschilyがOpenSolarisと友人を念頭に置いているのではないかと思います:-)。この最初のビットは 公式ウェブサイト からの恥知らずな裂け目です:
mandoc
は、BSDマニュアルページに最適なmdoc
マクロ言語であるroff
と、UNIXマニュアルの主な歴史的言語であるman
をコンパイルするツールスイートです。 。小さく、ISO C、ISCライセンスで、非常に高速です。ツールセットの主なコンポーネントは、mandoc
検証コンパイラに基づくlibmandoc
ユーティリティプログラムで、UNIX端末の出力をフォーマットします(ワイド-文字ロケール)、XHTML、HTML、PostScript、PDF。
mandoc
は主にOpenBSDで開発されており、OpenBSDとBSD.lvプロジェクトの両方です。私たちは、関心のあるすべての無料のオペレーティングシステム、特にFreeBSD、NetBSD、DragonFly、illumos、Minix 3、GNU/Linux、およびpkgsrc
ポータブルパッケージビルドシステムを実行するすべてのシステムをサポートするよう努めています。mandoc
開発をサポートするには、OpenBSD財団への寄付を検討してください。
pacman
は、ローカルにインストールされた mdocml
package-sizeが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
独自のスタイルシートを好きなように適用できます。すべてのドキュメントは online でもあります。そして、そのすべては、私が思うに、mandoc
でもコンパイルされています。
OpenSolarisはOSSとして提供されているため、無料のtroff
があります。
移植されたソースのセットはここにあります:
http://heirloom.sourceforge.net/doctools.html
しかし家宝は約以来死んだプロジェクトです。 2007.あなたはチェックしたいかもしれません
https://github.com/n-t-roff/heirloom-doctools
一部の人々は死んだ家宝のプロジェクトを続けています。
man2html
とともに、troffを使用すると、Nice htmlのマニュアルページを自動作成できます。
たとえば、 SchilliXのmanページ:
http://schillix.sourceforge.net/man/
シリーボーンシェルと:
http://schillix.sourceforge.net/man/man1/bosh.1.html
これに満足し、適切なオプションを使用すると、manページが同じグループの他のドキュメントにリンクされます。私は例えばこのコマンド:
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ファイルシステムの一部です。タイトルなどに必要なschily makefilesystemの../conf/pre.html
および../conf/post.html
ファイルに注意してください。この4つを必要に応じて変更できます。
強化されたman2thml
は、schilyツールの一部です(bosh
のマニュアルページの下部を参照)。
ところで、面白い情報:troff
全体のソースコードと、soelim
、tbl
などのすべてのヘルパープログラムのすべてのソースとman
プログラムsourceはmandoc
プログラムに必要なコードの半分にすぎず、mandoc
はほとんどのSolarisマニュアルページを壊すtbl
サポートが非常に限られています。
FreeBSDなどからのmandoc
形式のtroffソースのサポートが必要な場合は、troff
で機能するmandocマクロのセットを作成しました。 https://sourceforge.net/p/schillix-on/schillix-on/ci/default/tree/usr/src/cmd/troff/troff.d/tmac.d/でSchilliXソースを確認してください 問題のコードはandoc
およびdoc*
ファイルにあります。
SchilliX-ONのman
プログラムソースは、nroff -mandoc
ではなくnroff -man
を呼び出すように変更されました。
OPのPNGファイルに関する問題は、xtermのマニュアルページと制御シーケンスのドキュメントにgroffを使用した私の経験と一致しています。問題は、groffがtablesをPDFファイルから切り抜いた画像としてレンダリングしようとしていること、そして数年前からバグが多いことです。 1990年代以降、ncursesのドキュメンテーションにPerlスクリプトman2htmlを使用してきましたが、他のプログラムでは、groffを使用してアドホックhtmlおよびpdfファイルを生成する方が簡単であることがわかりました。 PDFファイルは正常に機能します。 htmlファイルにはありません。
同時に、Perlスクリプトには独自の問題がありました。
どちらも廃止されなかったため(および依存関係の追加や他の制限の導入により、提案された代替案は改善されなかったため)、man2htmlを改善することで問題を解決しました(いくつかの過程で加えたものに加えて)年)そして、プログラムごとに新しいconfigureスクリプトオプションを追加して、groffをデフォルトのマンページからHTMLへのコンバータとして使用できるようにしましたが、オプションを設定するときにman2htmlを使用しました。これを行ったので、今年は my website からgroffで生成されたすべてのhtmlファイルを削除しました。これを説明する "man2html" ページがWebサイトにあります。実際のスクリプトは、私の その他のスクリプトページ で入手できます。
提案とコメントのいくつかは、man2htmlという名前の(少なくとも)2つのプログラムがあることに気づいていないようです。
Cプログラムは独自のフォーマットを行い、nroff/groff /に依存しません。 manpageを標準入力から、または実際のファイルとして読み取ることができます(特に、 manual page を参照してください)。 nroff構文のマニュアルページ "foo.1"を指定すると、次のコマンドのいずれかを使用してフォーマットできます。
man2html - <foo.1 >foo.1.html
cat foo.1 |man2html - >foo.1.html
man2html foo.1 >foo.1.html
Perlスクリプトはフォーマット済みのマニュアルページをnroff
(OPの質問ではgroff
のラッパーです)から読み取ります。次のように使用できます。
nroff -man foo.1 |man2html >foo.1.html
Perlスクリプトの代替としてCプログラムを使用することを調査しましたが、それを破棄しました。
ちなみに、このファイルで使用される複数のリダイレクトを処理します(これは、レガシーtroffの問題です。ncursesのインストール手順で、過去20年間groffを使用するように勧められていた理由です).