Markdown的一些操作小技巧

1 minute read

Published:

0x01 章节定位符

许多 Markdown 处理器支持标题的自定义ID,部分 Markdown 渲染器会自动添加它们。

添加自定义 ID 可以允许直接链接到标题并使用 CSS 对其进行修改。

要添加自定义标题ID,与标题相同的行上用大括号括起该自定义ID {#user_defined_id}

0x02 图片样式规范

使用 Markdown 插入图片一般有两种方式

  • Markdown 原生语法 ![]()
  • HTML 的 <img><figure>标签

但是前者无法定义图片大小和图片解释词,所以最好使用 HTML 进行标定。

  • 修改图片大小

      <img src="/images/rocks.jpg" width="200" height="100">
    
  • 为图片添加注释

      <figure style="text-align: center;">
          <img src="/images/20210802/netfilter.png" alt="20210802" width="500" height="150">
          <figcaption>A Netfilter Demo Pic</figcaption>
      </figure>
    

    实际效果如下

    20210802
    A Netfilter Demo Pic

在 Markdown 中使用 HTML 的最佳实践

  1. 使用语义化的 HTML 标签
  2. 添加样式增强
  3. 确保内容的可访问性
  4. 保持代码整洁和可维护

0x03 使用 FrontMatter

Front Matter 是位于文件顶部、用分隔符包围的元数据区块,用于存储文档的元信息。

很多静态网站生成器都支持 Front Matter:

  • Jekyll (Ruby)
  • Hugo (Go) - 支持 YAML、TOML、JSON 格式
  • Next.js (React/JavaScript)
  • Hexo (Node.js)
  • GitBook

使用过程中,最佳实践是在分隔符后保持一行空行。

  • 分行可以从而保持更好的可读性,清晰区分元数据和内容。
  • 避免解析问题,例如在 Jekyll 中紧接 --- 的内容会被认为是 FrontMatter 的一部分,并引发渲染错误。
  • 符合 CommonMark 标准:空行有助于 Markdown 解析器正确识别段落。

0x04 使用 Mermaid 绘图

Github Page 虽然可以支持 Mermaid 渲染,Jeklly 也可以支持 Mermaid 插件。

但在 Jeklly 主题渲染出来 Github Page 中使用 Mermaid 时,就可能会被屏蔽,或不能正常显示。

所以不用尝试使用 .gem 文件中引入 Mermaid 的 Gem 插件。

Minimal Mistake 的 Repo 中的 issue-4617 也提到了 Mermaid 通过插件的无法引入问题。

唯一的解决方案就是使用用户自定义 js 脚本在页面中使用 Mermaid API 渲染。

在 header 中添加用户自定义脚本

<script src="https://cdnjs.cloudflare.com/ajax/libs/mermaid/8.0.0/mermaid.min.js"></script>

然后在页面 footer 中添加脚本函数,用于渲染 Mermaid:

<script>
var config = {
    startOnLoad:true,
    theme: 'forest',
    flowchart:{
            useMaxWidth:false,
            htmlLabels:true
        }
};
mermaid.initialize(config);
window.mermaid.init(undefined, document.querySelectorAll('.language-mermaid'));
</script>

这样既可以避免在 Markdown 中混用 html 标签定义 Mermaid 导致的非正常显示,同时还有助于降低后续文档迁移的难度。

更为复杂和完备的支持脚本可以参考:Mermaid JS Support for Minimal Mistakes

0x05 开启文章目录

0x06 本地测试

https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll/creating-a-github-pages-site-with-jekyll


Reference