坐井观天网

探索易于理解并实现的业余手工业创作技能

菜单
81

标签:工具 | 博客

新一代那么的维基

这个小脚本通过易读的文本文件生成静态网页。

使用“新一代那么的维基”可以方便地制作简单而美观的博客。由于是静态网页,您不需要很高的服务器成本即可托管它,即使在离线时网站的内容也总是完整的。

下载和使用

lamdwiki_ng 版本:20210117

需要您在的设备安装:

  • Python 3.5+
  • PIL (若需要图像处理功能)
  • hitherdither(若需要图像处理功能)

您可以任意修改和使用我的这个脚本。

您的网站应当这样布局:

- blog/
    - 2021
        - 01
            - 01_my_post.md
        - 02
- lamdwiki_ng/
    - deps
    - generate.py
- index.md

请阅读下面的内容以了解如何在 index.md 中配置您的网站

它是如何工作的

由于确定了博客原始文件的组织形式,目录的搜索变得规范。所有的文章都储存于 blog/YYYY/MM/ 文件夹中,按照日期顺序排列。生成的网站也保留这样的目录结构,这使得URL易读。

所有文章被读取到一个总列表中,并预先解析出关键字段,例如标题、副标题、更新日期、类别、标签和评论等。markdown2脚本被用于转换Markdown为HTML,可以使用该脚本提供的各种附加标记符,我的脚本默认开启了用于生成表格、删除线、脚注的附加标记符,要增减它们,可以修改 lamdwiki::extras 的初始值。

之后按全局和类型方式为文章编号,获得了编号以后即可生成主页和各个标签、类型的索引目录。接下来,博客文章的HTML将结合页眉和页尾封包成完整的网页放入目标文件间。

若在调用时使用了 image 参数,则复制并压缩博客中的 .jpg.png 图像,默认这个步骤并不启动以节省时间。另有 overwritekeep 参数,分别要求脚本覆盖已存在的图像和保留原文件夹里不存在的图像。所有图像最后都转换成色板索引模式的 .png 格式。请注意,如果您的Python未安装 PIL 库或者 hitherdither,那么脚本会跳过图像处理步骤。

若要提供其他非图像资源文件,则需要在与博客文章平级目录里建立 files 文件夹,调用脚本时添加 file 参数,脚本将复制这些文件到目标网站。注意脚本将始终删除已生成的 files 目录,并替换成博客文件夹中的 files

./generate.py image overwrite keep file

生成的网站存在于 site 目录下,由于网页文件内部全部采用相对路径,您可以直接将该文件夹的内容上传到服务器的任何位置。脚本会生成一个 error.html,您可以将它设置为主机的默认错误页面。

修改网站的基本信息

网站的全局配置保存在根目录的 index.md 里,不同区块指定不同的内容。在 main 区块中设置网站的标题、副标题、HTML <title> 标题、文章作者和评论提示句。

navigation 区块设置导航栏。以markdown列表的方式呈现。支持这些特殊链接:category 类型名字tag 标签名字toc (总目录)。

类别和标签需要注册才被纳入统计和显示。在 categories 分区注册类别和标签。名字之后的英文参数是生成索引文件时的分类名,这使得URL易读而不出现百分号。在类别的最末可以添加HTML颜色名字,文章生成时会为图像等附加主题颜色。

网站具有页尾脚注。可以分为 footer 1footer 4 四个栏目,在移动设备上会自动排列为易读的形式。这个区块支持使用Markdown格式标记。

错误页面内容支持使用Markdown格式编写,添加到 error 区块即可。

index.md 的全部配置看上去就像这样:

------- main --------

- title [特别大标题](index.html)
- subtitle [标题和副标题可以是Markdwon的单行格式,可以使用链接](blog/2021/01/01_something.html)
- pagetitle 页面标题
- author 作者名字
- comment 联系我以评论某篇文章

------- navigation --------

- [关于](blog/2021/01_about.html)
- [我的文章](category 文章)
- [思考](tag 思考)
- <a href='../../../index_toc.html'>全部内容</a>

------- categories --------

- category 我的文章 my_passages red
- category 别人的文章 others
- tag 思考 thoughts

-------- footer 1 -------

脚注栏

------- error ------

## 出错啦

要改变网站的样式表,可以修改 lamdwiki::css。一些内联样式中有类似 $style$ 标记的区域,脚本在生成每个文章时会动态替换这些样式的内容。网站的区块结构十分简单,因此修改样式也相对容易。若只需要修改页面颜色,更改 lamdwiki::color_blacklamdwiki::color_whitelamdwiki::color_gray 的初始值即可。

编写文章时需要注意的

使用简单的Markdown语法即可完成大部分工作。下面的关键字段是新一代那么的维基独有的:

文章标题是在文中第一个出现的1号标题( # 标题 )。若要添加副标题,则在该标题下方添加一个引用段落( > 副标题 )。

文章的日期、分类和标签是文中第一个符合该格式的段落:YYYYMMDD | YYYYMMDD 分类 标签 标签 标签 ,其中至少填写两个日期,第一个是建立日期,第二个是修改日期。接下来的第一个单词被解释为文章分类名,之后的所有单词被认为是标签名,它们都是可选的。

文章的评论应放在正文以后。每个评论都是一个 comment 区块,像下面这样填写(不需要写下划线,这里是防止演示文字本身被提取成评论):

------ _comment -------

- 作者名字 | YYYYMMDD (评论日期,必选)

评论内容可以是多段落的,并支持使用各种Markdown样式,这条评论的内容一直延伸到下一个“comment”区块为止,因此评论区块一定要放在正文内容之后。

新一代那么的维基还带有一个轻便的附加工具,用于将Markdown文本中的ASCii字符图形转化为好看的SVG图形,工作原理类似MarkDeep。要使用这个功能,只需要在需要转换的图形前后添加连续三个以上井号组成的标记。

 ######
 +------+     *--------+    
 |  My  O--->+ Diagram |
 +------+     *--------+
 ######

 diagram: 这是我的示意图
MyDiagram 这是我的示意图

对于图像和表格而言,若紧接着它们的段落以 image: 或者 diagram: 开始,则后面的文字将被作为图片或者表格的说明文字,就像上面的示意图说明文字一样。在冒号前添加 big 关键字则可以使它们在打印时充满页面宽度,使得宽内容更加易读。

画廊

新一代那么的维基支持从页面直接打印出简单的对开页画廊。要使用该功能,请在文章中添加[ gallery _css_]标记。使用连续+++换页。

使用[text _css_]{markdown}格式书写文本框。文本框样式用_css_控制。图片使用[image <h|v> img/path_to_image.png _css_]{markdown description}添加。<h|v>指定以横向还是竖向为图片基准尺寸。

跨越两页的图片需要在两页的对应位置都添加图片,以构成完成拼合图片。建议在顶部/底部使用3em/0.5inch的边距打印画廊,若全部设置为无边距,则文章首尾显得太顶。

想帮忙?

您可以在这个脚本的基础上做任何修改以适应您的需要。与此同时,欢迎将您的工作分享到网上,这样能够帮助更多有类似需求的人更快地完成类似的工作。向我发送邮件以评论这篇文章。

您也可以通过捐赠来支持坐井观天网。

评论 (0)

要评论,请发送邮件到xp8110@outlook.com