Skip to content

Mkdocs material

MkDocs类似,跟着官方文档过一遍,不懂的参考官方文档的yml,或者在github上随便搜一个3

插件

rss

MkDocs一样,都是用的mkdocs-rss

git-revision-date-localized-plugin

需要注意git clone depth1

blog

目前看意义不大,主要是时间格式很恶心,虽然认同他的设计,但是没有现成的工具自动生成这种样式的

Text Only
1
2
3
date:
    created: YYYY-MM-DD
    updated: YYYY-MM-DD

这种样式还有一个坑爹之处,在 YAML 中,以数字开头的字符串可能会被解释为数字(例如,123abc 可能被解释为无效的数字)。为了避免这种情况,必须对以数字开头的字符串使用引号,将其明确标识为字符串。

如果要修改的话参考:

  1. Support git option for date metadata on blog posts
  2. src/plugins/blog/structure/options.py#PostDate
  3. Developing Plugins

有一个风骚的玩法是在mkdocs build前用一个脚本预处理所有的date字段:

Python
def handle(fname):
    # 读取 Markdown 文件
    post = frontmatter.load(fname)

    # 获取 front matter(meta)数据
    meta = post.metadata

    if "created" not in meta or "updated" not in meta:
        return

    # 修改 'created' 和 'updated' 字段为只保留日期部分
    created_date = meta["created"][:10]
    updated_date = meta["updated"][:10]

    # 创建新的 date 字段
    meta["date"] = {"created": created_date, "updated": updated_date}

    # meta["created"] = created_date
    # meta["updated"] = updated_date

    # 将修改后的内容写回文件
    # with open(fname, "wb") as fout:
    #     frontmatter.dump(post, fout)

    # https://notes.blackshop.icu/notes/Pages/mkdocs-material/#blog
    pattern = r"(?<=date:\n\s{2}created: )'(\d{4}-\d{2}-\d{2})'\n\s{2}updated: '(\d{4}-\d{2}-\d{2})'\n"
    md = re.sub(pattern, r"\1\n  updated: \2\n", frontmatter.dumps(post))

    # 写入到文件或输出
    with open(fname, "w") as fout:
        fout.write(md)

Python Markdown

Admonition

挺新颖的,不过貌似不是markdown标准支持的,暂时放弃

Footnotes

比较实用,必开

Table of Contents

toc的一些配置

Python Markdown Extensions

这一些目测都不是标准的markdown扩展

Arithmatex

MathJax

Caret, Mark & Tilde

更精细的格式控制,主要是highlight, underline, strikethrough, Sub- and superscripts(上标和下标)

Critic

展示diff使用

Detail

配合Admonition使用

Highlight, InlineHilite, SuperFences

Snippets

放一些文件附件

Tasklist

美化而已