4

在编写将导出为 HTML 的perlpod文档时,我可以在 POD 指令中嵌入生成的 HTML 文件的标题吗?

我希望能够使用命令将多个 POD 文本文件转换为 HTML pod2html,并且不想--title="My Title"在命令行上提供参数。

例如,这是一个带有 perlpod 格式的文本文件:

=pod

=head1 This is a heading

This is some text. I'd like to set the title of this document in the resulting HTML file.

=cut

当我将其转换为 HTML 时, pod2html 会发出关于没有标题的警告:

$ pod2html test.txt > test.html
/usr/bin/pod2html: no title for test.txt

在生成的 HTML 文件中,标题设置为文件名 (test.txt):

<?xml version="1.0" ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>test.txt</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:root@localhost" />
</head>

<body style="background-color: white">

<p><a name="__index__"></a></p>
<!-- INDEX BEGIN -->

<ul>

        <li><a href="#this_is_a_heading_">This is a heading.</a></li>
</ul>
<!-- INDEX END -->

<hr />
<p>
</p>
<hr />
<h1><a name="this_is_a_heading_">This is a heading.</a></h1>
<p>This is some text. I'd like to set the title of this document.</p>

</body>

</html>

我想找到一种在 perpod 文档中给出标题的方法,也许有这样的指令:

=title This is my custom title

在 Perl 文档中,我看到文档标题设置得很好。这一切都是在 pod 文档本身没有文档标题的情况下完成的吗?

4

2 回答 2

5

Pod 文档中没有任何内容可以控制文档的标题。这取决于将 Pod 文档转换为您想要的格式的程序。大多数用于生成文档的pod2doc程序都有一个类似Pod::TextPod::Html. 这些在转换中完成了大部分繁重的工作。

pod2html接受一个--title参数。但是,您想要的是 pod2html 无需您指定即可执行此操作。你可以做的是推出你自己的 pod2html 版本。让我们看看pod2html脚本本身,也许你可以弄清楚你可以做些什么来得到你想要的。

删除所有 POD 文档,我看到::

use Pod::Html
pod2html @ARGV

这就是整个程序。

看起来你可以制作一个pod2steve程序来做你想做的事。您想要获取最后一个参数(我假设这是您想要的标题),然后简单地将其传递给pod2html子例程。你pod2steve会看起来像这样:

use strict;
use warnings;

use Pod::Html
my $program_name = $ARGV[$#ARGV];
pod2html --title=$program_name @ARGV

那应该行得通。

于 2013-01-31T20:52:21.510 回答
4

不。

POD 的存在主要是为了编写 Perl 模块文档²,因此没有很多花哨的功能。此外,POD 的主要输出媒介是终端,在概念上不存在标题之类的东西³。毕竟,它只是普通的和旧的文档。
    1. 令人惊讶的是,许多 Perl 书籍都是用 POD 编写的。
    2. POD 文件的位置与文中讨论的内容一致。
    3.ps名称/$0变量接近,但在这里没用。

这也是一个技术问题:pod2htmluses ,它解析命令行,并在不做或干扰实际解析的情况下Pod::Html将自身包裹起来或其他东西。Pod::Simple::XHTML但是,它已经提供了一个页眉和一个页脚,它们明智地覆盖了任何可能发出的默认页眉。

有两个有趣的选项可以解决您的问题:

  1. 您编写一个后处理器,将 first 的值h1放入title. 在支持 XPath 的解析器中,这应该少于 10 行。然后你编写一个小脚本将它们联系在一起,并且可以被调用而不是pod2html.

  2. 您利用现有的丰富的 POD 解析器(和源代码),并从 POD 生成器中生成您自己的 HTML。如果您实际上所做的只是一个小叉子,您可以尝试提供对原始模块的修改。

于 2013-01-31T20:54:00.293 回答