如何自动设置 kramdown 转换器的 HTML 输出样式?

How to automatically style HTML output of kramdown converter?

我在 kramdown 中写笔记,然后使用 kramdown 转换器获取 html 文件以在本地(而不是在服务器上)读取。

$ kramdown notes.txt > notes.html

我的工作流程是不断更新 notes.txt,然后快速渲染 notes.html 以查看它。

我想给笔记添加样式,所以我制作了一个 CSS 文件 notes_style.css 来格式化 HTML 正文:

body {
...
}

我向 notes.txt 添加了一个 <head> 标签,并在我的样式表中放入了一个 link。然后我在 notes.txt:

的内容周围放置 <body> 标签
<head>
  <link rel="stylesheet" type="txt/css" href="themes/notes_style.css" />
</head>
<body>
  ...
</body>

然后我意识到,由于 kramdown 忽略 HTML 块,因此 <body> 中的任何内容都不会转换为 HTML。在能够将 kramdown 转换为 HTML 的同时,我应该如何设置 <body> 内容的样式?我不想在每次使用 kramdown.

时手动添加 <body> 标签

我怀疑我的工作流程有问题,但不确定正确的方法是什么。

Kramdown 有 parse_block_html option 导致它解析 HTML 元素的内容。你可以这样使用它:

$ kramdown --parse-block-html notes.txt > notes.html

或者,Kramdown 也会查找 special markdown attribute on HTML elements。如果设置为'1',那么Kramdown会将该元素的内容解析为markdown。所以你可以这样做(你需要 1 周围的引号,Kramdown 的 HTML 解析器非常严格):

<head>
  <link rel="stylesheet" type="txt/css" href="themes/notes_style.css" />
</head>
<body markdown='1'>
Content here will be parsed _as Markdown_.
</body>

在这两种情况下,您的 body 内容都需要像往常一样左对齐,您不能缩进它,因为您可能自然而然地将 HTML 嵌套在元素中。