像 Gnu 手册一样,为每个章节制作一个 HTML 页面

像 Gnu 手册一样,为每个章节制作一个 HTML 页面

我正在我的网站上撰写一本在线文档,作为一本书。我不想把所有内容都放在一页上,而是想在每个网页上放一章,并在页面顶部/底部放一个指向上一章和下一章的链接。

类似于 Gnu 手册在这里的做法:https://www.gnu.org/software/libc/manual/

这是 Gnu c 库的完整手册(一页): https://www.gnu.org/software/libc/manual/html_mono/libc.html

这是以“连载”形式从介绍开始的内容。 https://www.gnu.org/software/libc/manual/html_node/Introduction.html#Introduction

因为我的整个文档将放在一个 HTML 文档中(从 Emacs 中的 Org 模式导出,但这可能是一个小细节),我该如何将
单片 HTML 文档拆分成几个小文档,每个小文档都链接到前一个和下一个。

答案1

我认为情况恰恰相反。不应将其拆分为多个部分,而应将多个部分合并为一个部分(HTML 或其他)。

一个好方法是找到共同的标签并从那里开始。例如:

<h2 id="chapter">Chapter 8</h2>Bla bla bla

grep id="chapter" doc.html 或 grep h2 doc.html 将显示章节,您可以从那里开始。然后,当您需要单个 HTML 时,只需将其连接起来。在上一个和下一个上,您将需要一些脚本来创建标题链接。步骤:

  1. 将文档分为章节和部分
  2. 创建标准页眉和页脚脚本
  3. 为每个章节生成单页版本

另一种方式 ? https://www.naturaldocs.org/

答案2

分割文件的方法是:

csplit  -k total.html '/<h[12]/' {99}

这将创建多个名为 的文件xx00xx01通常,第一个文件将包含<html>、等标签。其余文件通常包含不同的章节和/或部分。如果您想进一步拆分,请使用as 模式header>,和/或使用如果您的标签可以大写。<body><h[123][Hh]

如果你使用我的website02脚本https://github.com/ljmdullaart/website,您需要将文件重命名为以.html结尾的名称。

typeset -i i=0
for f in xx* ; do
    i=$i+1
    mv $f $i_ch_$i.html
done

将对少于 10 个文件执行此操作。但请注意,尽管该脚本可用,但它是为我的个人环境创建的,我并未尝试使其适合一般用途。因此,可能需要进行一些编辑。

相关内容