9

これが不可能な場合、UTF-8でエンコードされたPODから派生したマニュアルページを処理するためのベストプラクティスは何ですか?

PODでUnicodeを使用するために最初に行うことは、ディレクティブを使用することです

=encoding UTF-8

ここで説明されているように)。およびツールは正常に機能しpod2textpod2html完全なUTF-8エンコード出力を生成します。

ただし、このpod2manツールは次のことを行いません。

pod2man -u MyModule.pm | nroff -Tutf8 -man | less

どちらもしませんperldoc。非ASCII文字はすべてマングルまたはX-edoutされます。これがバグであるか**roff*であるかについて、perlbugに関するいくつかの決定的な議論があります。pod2man

私のモジュールは特にUnicodeを扱い、CPANでの配布を目的としているため、Unicode対応のマニュアルページは必須です。

私はPerl5.14.2、perldoc 3.15、および*roff1.21を使用しています。

4

2 に答える 2

3

あなたは運がいいです! このバグはPod::Perldoc3.16で修正されたようです。したがって、Pod :: Perldocを更新するだけで、問題の半分が解決されます。

ただし、pod2manは別のディストリビューションからのものであり、まったく異なるコードベースです。UTF-8ではまだ壊れています。残念ながら、これはPerlインストーラーがマニュアルページを生成するために使用するものです。

于 2012-10-27T06:03:42.760 に答える
2

すべての、、はperldocpod2manUnicodeUTF nroff-8文字を正しく処理するように作成できます。残念ながら、Build.PLやcpanプログラムなどのPerlインストーラーはまだできません。したがって、インストール中に手作業でいじらない限り、インストールされているマニュアルページは壊れます。

これらはすべて、私の最小限の例では正しく機能します。

perldoc lib/MyModule.pm        # works as of 3.16 (@Schwern)
perldoc -t lib/MyModule.pm     # display with pod2text
pod2man -u lib/MyModule.pm     # produces UTF-8 man page
pod2man -u lib/MyModule.pm | nroff -Tutf8 -man - -Kutf8 | less

nroff入力エンコーディング(-K)をgroffソース)にも渡す場合にのみ機能します。-オプションの終了スイッチで保護する必要があります。

これはいいね。ただし、ほとんどのユーザーは、ドキュメントをインストールして、後でman MyModuleまたはに相談することをお勧めしperldoc MyModuleます。の場合perldoc、オプションは最新バージョン(3.16)または-tスイッチのいずれかを使用することです。

の場合、manBuild.PL(Module :: Build)を使用してモジュールをインストールすると、インストールの直前に、壊れた生成されたドキュメントを修復できます。

perl Build.PL
./Build
# now overwrite the broken man pages:
pod2man -u -s 3pm lib/MyModule.pm blib/libdoc/MyModule.3pm
./Build install

素晴らしい!これで、でマニュアルページを表示できますman MyModule

cpanを使用してモジュールをインストールすると、マニュアルページが壊れます。(ローカルのCPANビルドディレクトリで同じ回避策を試すことができます。たとえば~/.cpan/build、これも機能するはずです。)

于 2012-10-27T12:09:53.027 に答える