[pod] [xml]

NAME

perlpod - plain old documentation

DESCRIPTION

podから何かへのトランスレータはpodファイルを段落毎に読み 込み、それを適切な出力フォーマットへと変換します。段落には verbatim, command, ordinary text の三種類があります。

Verbatim Paragraph

そのままの段落。これはインデント(つまり、空白かタブで 始まっているということ)によって認識されます。タブは8カラムごとと 仮定されてそのまま出力されます。特殊なフォーマットエスケープは ありませんから、イタリックにするといったことはできません。\は\で、 その他の意味はありません。

Command Paragraph

すべてのコマンド段落は“=”で始まってその後に識別子が続き、 さらにコマンドをが必要とするテキストが続きます。 現在使えるコマンドは以下の通りです。

    =head1 heading
    =head2 heading
    =item text
    =over N
    =back
    =cut
    =pod
    =for X
    =begin X
    =end X

Ordinary Block of Text

(通常のテキストブロック)

詰め込みが行われ、おそらくは均等割り付け(justified)も行われます。 内側のシーケンスの幾つかはコマンド中でも認識されます:

    I<text>     テキストをイタリックにします。強調や変数に使います
    B<text>     テキストをボールドにします。スイッチやプログラムに使います
    S<text>     分割不可能なスペースを含むテキスト
    C<code>     コードをタイプライタフォント、または
                その他のプログラムテキストを表現する手法で描画します
    L<name>     nameに対するリンク(クロスリファレンス)
		    L<name>		マニュアルページ
		    L<name/ident>	マニュアルぺージ中のアイテム
		    L<name/"sec">	他のマニュアルページにあるセクション
		    L<"sec">		同じマニュアルページのセクション
					(クォートは省略可能)
		    L</"sec">		同上
		上のものと同じだが 'text' だけが出力に使われる
		(テキストには '/' も '>'も含めることはできません。同時に
		'<'と'>'のバランスがとれていなければなりません)
		    L<text|name>
		    L<text|name/ident>
		    L<text|name/"sec">
		    L<text|"sec">
		    L<text|/"sec">
    F<file>	ファイル名に使います
    X<index>	索引のエントリ
    Z<>		幅ゼロのキャラクター
    E<escape>   名前付きのキャラクター(HTMLのエスケープに酷似)
		    E<lt>		リテラルの <
		    E<gt>		リテラルの >
		    E<sol>		リテラルの /
		    E<verbar>		リテラルの |
		    (これらは、他の内側のシーケンスであったり大文字が
		    先行している場合でなければ省略可能)
		    E<n>		キャラクター番号 n (おそらくASCII)
    	    	    E<html>		E<Agrave>のような、非数値のHTMLエンティティ

たいていの場合、内部シーケンスの最初と最後のデリミタとして 1 組の山括弧のみが必要です。 しかし、時々シーケンスの中に右山括弧(または大なり記号'>')を 入れたい場合があります。これはコードの断片の中で違うフォントタイプを 使いたいときによくあります。 Perl に関する他のことと同様に、やりかたはひとつではありません。 ひとつの方法は単純に閉じ括弧を E シーケンスを使って エスケープする方法です:

    C<$a E<lt>=E<gt> $b>

これは "$a <=> $b" となります。

より読みやすく、そしておそらくより"明白な"方法は、別のデリミタを 使って、">"をエスケープしなくてもいいようにする方法です。 Perl5.5.660 以降、2 個の山括弧 ("<<" and ">>")が使えます。 但し、開始デリミタの直後と終了デリミタの直前に空白があるときだけです! 例えば、以下はそのトリックを使っています:

    C<< $a <=> $b >>

実際のところ、開始デリミタと終了デリミタの数さえ合っており、 開始デリミタの最後の '<' の直後と 終了デリミタの最初の '>' の 直前に空白が入っていれば、 山括弧の数はいくつでもかまいません。 従って、以下のものも正しく動作します:

    C<<< $a <=> $b >>>
    C<<<< $a <=> $b >>>>

これは現在のところ pod2text (Pod::Text), pod2man (Pod::Man), および Pod::Parser 1.093 以降を使用しているその他の pod2xxx と Pod::Xxxx が対応しています。

The Intent

(目的)

これだけです。強力なものではなく簡単なものを目指しています。 段落は段落らしく(矩形に)見えて欲しいので、見た目に目立ち、 fmt で簡単に再整形できるようになっています (私の vi では F7 になっています)。 私が求めていたのは、埋め込まれるテキストの中の " や ' が左のクォートか、 右のクォートかを (私の代わりに) 気遣ってくれる トランスレータで、verbatim モードではクォートをそのままにしておいて 欲しかったのです。そうすれば、作りかけのプログラムを放り込んで、 4 カラムずらして、それをそのまま印刷すればいいのです。たぶん、 固定幅のフォントで。

特に、以下のようなものは、テキスト中にそのままにしておくことができます:

    Perl
    FILEHANDLE
    $variable
    function()
    manpage(3r)

いずれ、別のコマンドやシーケンスを付け足さなければならなくなることは 疑いようのないことですが、これまでのところ私は意外にもこれだけで やってきたのです。

これが本を作るのに十分だ、などと言うつもりは全くありません。 私はただ、オンラインドキュメントに使うnroff やTeXといったマークアップ言語の ための、誰にでも使える共通のソースを作ろうとしているのです。 現在あるトランスレータにはpod2man (nroff(1) や troff(1)用), pod2text, pod2html, pod2latex, pod2fmがあります。

Embedding Pods in Perl Modules

(Perlモジュールへのpodの埋め込み)

Perlスクリプトにpodドキュメントを埋め込むことができます。 ドキュメントを“=head1”コマンドで始め、“=cut”で終えます。 Perlはこのようなpodテキストを無視します。 実例はあなたの使っているライブラリモジュールにあります。 もしpodテキストをファイルの末尾に置きたいというのであれば、 __END__や__DATA__というカットマークを置き、 さらに最初に現れるpodディレクティブの前に空行を置くことで行うことができます。

    __END__
    =head1 NAME
    modern - I am a modern module

空行を置かなかった場合、トランスレータはpodテキストを 見失ってしまうでしょう。

Common Pod Pitfalls

SEE ALSO

pod2man, perlsyn/"PODs: Embedded Documentation", podchecker

AUTHOR

Larry Wall