man2html 例:

man2html 例:

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

その他のツール:

答え2

この最初のポイントは恥ずかしい破れ公式ウェブサイト:

mandocコンパイル用のツールセットmdocroffBSDマンページ用のマクロ言語の選択、manUNIXマンページ用の主要な歴史的言語です。小さくてISO C、ISCライセンスがあり、非常に高速です。ツールセットの主なコンポーネントは、出力をUNIX端末にフォーマットするための検証コンパイラベースのmandocユーティリティです。libmandoc(ワイド文字ロケールのサポート)、XHTML、HTML、PostScript、およびPDF。

mandoc主にOpenBSDで開発され、OpenBSDおよびBSD.lvプロジェクトです。私たちは、関心のあるすべての無料オペレーティングシステム、特にFreeBSD、NetBSD、DragonFly、illumos、Minix 3、GNU / Linux、およびポータブルpkgsrcパッケージ構築システムを実行するすべてのシステムをサポートするよう努めています。開発を支援するには、mandocOpenBSD財団に寄付することを検討してください。

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に変換しなければならなかったときに合理的な作業を行った唯一のことは、man2htmlCプログラムと「季節の味」のための出力後処理だけでした。

最終的には、より高品質の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メタ文法変数です。手段は中間スペースなしでメタ文法の隣にある具体的な構文であり、手段はとリテラルの間を処理するメタ文法です。< bb>> a bab<> a b cbac

拡張バージョンでは、man2htmlこれらのマークアップルールを実装するかなり複雑なマクロを理解しています。

また、マニュアルがこのセクションに自動的に番号を付ける方法にも注意してください。これはすべて troff コードによって行われ、これをman2html理解します。

答え4

OpenSolarisはOSSとして提供されるので無料troff

移植されたソースコードセットは次のとおりです。

http://heirloom.sourceforge.net/doctools.html

しかし、Heirloomはおおよそ死んだプロジェクトでした。 2007. これを確認したいかもしれません。

https://github.com/nt-roff/heirloom-doctools

一部は消えた家宝プロジェクトを続けます。

man2htmltroff で美しい 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.htmlschily makefilesystemのヘッダーとその他の必須ファイルをメモしてください。../conf/post.htmlこれら4つを必要に応じて変更することもできます。

拡張バージョンはman2thmlschilyツールの一部です(manページの下部を参照bosh)。

ところで興味深い情報があります。完全なtroffソースコードとすべてのヘルパーのすべてのソースコード(たとえばsoelimtbl...)とmanプログラムのソースコードは、プログラムに必要なコードの半分に過ぎず、mandocそのサポートはmandoc非​​常に制限されています。tblほとんどのSolarisヒューマンページはハングします。

FreeBSD と同様の形式の troff ソースのサポートが必要な場合は、対応するmandocSchilliX ソースセットを作成しましたtroffhttps://sourceforge.net/p/schillix-on/schillix-on/ci/default/tree/usr/src/cmd/troff/troff.d/tmac.d/ 問題のコードはandocファイルとdoc*

SchilliX -ONのプログラムソースmannroff -mandocnroff -man

関連情報