摘要

又开始折腾博客了。

基于 PaperMod 主题,给博客增加了两个基本功能:

  1. 更换中文更加友好的 霞鹜文楷 字体,当然同样的方法也适用于其他任何字体
  2. 因为我经常使用 Markdown 做 PPT,所以希望博客也能支持这种类型的文档。

字体配置

首先,依然修改 layouts/partials/extend_head.html 文件1

1
2
3
4
5
6
7
{{ if or .Params.reveal .Site.Params.reveal }}
{{ partial "reveal.html" . }}
{{ else }}
{{ if or .Params.mathjax .Site.Params.mathjax }} {{ partial "mathjax.html" . }} {{ end }}
{{ end }}

{{ if .Site.Params.changeFont }} {{ partial "font.html" . }} {{ end }}

Reveal.js 的配置中会用到 mathjax,但会与我们之前添加过的 mathjax 冲突,所以需要在这里做一下判断。

然后在 layouts/partials 下新建 font.html 文件:

1
2
3
4
5
6
7
<link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/lxgw-wenkai-webfont/1.6.0/style.min.css" />

<style>
  body,code,section {
    font-family: "LXGW WenKai", sans-serif;
  }
</style>

这样博客的字体就生效了。

Reveal.js 的配置

这个会稍微麻烦一些,先在 layouts/partials 下新建 reveal.html:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/5.0.2/reveal.min.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/5.0.2/plugin/highlight/zenburn.min.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/5.0.2/theme/serif.min.css" />

<script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/5.0.2/reveal.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/5.0.2/plugin/markdown/markdown.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/5.0.2/plugin/highlight/highlight.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/5.0.2/plugin/math/math.min.js"></script>

<script>
document.addEventListener('DOMContentLoaded', function () {
    Reveal.initialize({
        mathjax3: {
            mathjax: 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js',
            tex: {
                inlineMath: [ [ '$', '$' ], [ '\\(', '\\)' ]  ],
                displayMath: [ ["$$", "$$"], ["\\[", "\\]"], ],
                processEscapes: true,
                processEnvironments: true,
            },
            options: {
                enableExplorer: false,
                skipHtmlTags: [ 'script', 'noscript', 'style', 'textarea', 'pre' ]
            },
        },
        transition: 'fade',
        progress: true,
        embedded: true,
        minScale: 0.2,
        plugins: [ RevealMarkdown, RevealHighlight, RevealMath.MathJax3 ]
    });
});
</script>

这样就可以在 markdown 的文件头中通过设置:

1
reveal: true

来启动 Reveal.js 的支持。但是只是这样的话,还是没有办法在页面中演示出 PPT 文件。

还需要增加新的文档类型,在 layouts/_default 下增加 slide.html,其中最核心的功能是:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
{{ define "main" }}

<article class="post-single">
...
  {{- if .Content }}
  <div class="reveal" style="height: 50vh;">
    <div class="slides">
      <section data-markdown>
        <textarea data-template>
        {{ .RawContent }}
        </textarea>
      </section>
    </div>
  </div>
  {{- end }}
...
</article>

{{ end }}{{/* end main */}}

这样,再在文章的文件头中添加:

1
layout: slide

就可以在页面中直接展示 PPT 了。


  1. 大部分的功能配置都需要修改这个文件,通过这个路由来添加具体的 jscss 文件。 ↩︎