我正在我的网站上撰写一本在线文档,作为一本书。我不想把所有内容都放在一页上,而是想在每个网页上放一章,并在页面顶部/底部放一个指向上一章和下一章的链接。
类似于 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 时,只需将其连接起来。在上一个和下一个上,您将需要一些脚本来创建标题链接。步骤:
- 将文档分为章节和部分
- 创建标准页眉和页脚脚本
- 为每个章节生成单页版本
另一种方式 ? https://www.naturaldocs.org/
答案2
分割文件的方法是:
csplit -k total.html '/<h[12]/' {99}
这将创建多个名为 的文件xx00
。xx01
通常,第一个文件将包含<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 个文件执行此操作。但请注意,尽管该脚本可用,但它是为我的个人环境创建的,我并未尝试使其适合一般用途。因此,可能需要进行一些编辑。