3

我有一些 POD 文档,其中的一个部分应该在 Latex(使用pod2latex)和纯文本/人中以不同方式呈现。为此,我有一个=begin :text/=end :text部分。

现在,我想在命令行上显示 POD 的各个部分(使用Pod::Usage)。这就是问题所在:在这种模式下,块之后的所有部分:text都出现乱码。

这是一个最小的例子:

pod2usage(-verbose => 99, -sections => 'Two');

=head1 One

=begin text

For I<non-Latex> only.

=end text

=head1 Two

C<Formatting> all I<messed> up!

输出:

Two:
"Formatting"*messed*     all up!

请注意,打印整个 POD(pod2usage(-verbose => 2);或仅perldoc在文件上运行)工作正常。

我已经尝试了所有Pod::Usage可以找到的选项(包括选择不同的Formatter类),但现在可以使用。如果我:text从块中删除 (纯=begin/ =end),它会与部分选择一起出现,但这实际上是一个 POD 语法错误,并perldoc在渲染整个 POD 时抱怨它。

注意:我的 Perl 很旧(v5.18.2),但我坚持使用那个版本。

4

1 回答 1

3

这看起来像Pod::Usage. 我通过查看源代码找到了解决方法。Pod::Simple由于缺少 sub ,内部堆栈似乎变得混乱cmd_for。通过手动添加一个虚拟子cmd_for,它似乎可以工作:

use feature qw(say);
use strict;
use warnings;

use Pod::Usage;
{
    no warnings 'once';
    *Pod::Usage::cmd_for = sub { };
}

pod2usage(-verbose => 99, -sections => 'Two');

=head1 One

=begin text

For I<non-Latex> only.

=end text

=head1 Two

C<Formatting> all I<messed> up!

输出

Two:
    "Formatting" all messed up!
于 2021-07-31T18:40:37.503 回答