在编写将导出为HTML的 perlpod 文档时,是否可以在POD指令中嵌入生成的HTML文件的标题?
我希望能够使用pod2html
命令将多个POD文本文件转换为HTML,并且不希望在命令行上提供--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文档本身没有文档标题的情况下完成的吗?
答案 0 :(得分:5)
Pod文档中没有任何内容可以控制文档的标题。这取决于将Pod文档转换为您想要的格式的程序。您用于生成文档的大多数 pod2doc 程序将包含Pod::Text
或Pod::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
这应该有效。
答案 1 :(得分:4)
没有
POD主要存在于写入Perl模块文档¹,因此没有很多花哨的功能。此外,POD的主要输出媒体是终端,其中没有标题存在这样的东西³。毕竟,它只是普通和旧文档。
<子>
令人惊讶的是,许多Perl书都是用POD写的
2. POD文件的位置与文中讨论的内容一致
3. ps
名称/ $0
变量接近,但在这里没用。
子>
这也是一个技术问题:pod2html
使用Pod::Html
来解析命令行,并将自己包裹在Pod::Simple::XHTML
之内,而不会干扰或干扰实际的解析。但是,它已经提供了页眉和页脚,它明智地覆盖了可能发出的任何默认标题。
有两个有趣的选项可以解决您的问题:
您编写了一个后处理器,将第一个h1
的值放入title
。在具有XPath支持的解析器中,这应该是&lt; 10行。然后你编写一个将这些联系起来的小脚本,可以调用而不是pod2html
。
您可以获取现有的POD解析器(和源代码),并从POD生成器中提取您自己的HTML。如果您实际所做的只是一个小分支,您可以尝试对原始模块进行修改。