再谈 Markdown 及其扩展

尽管笔者专门写了一个文章系列 《从 Markdown 到 reStructuredText》,推荐在日常文档写作中更多地使用 reStructuredText。不过平心而论,Markdown 标记语言其实还是不错的,再加上一堆漂亮好用的客户端,使其作为博客写作语言相当合适。静态博客 Nikola 本身也对 Markdown 开箱提供了完整支持,Markdown 与 reStructuredText 一样都是“一等公民”。

Nikola 中使用的语法与主流 Markdown 语法,可以说是一模一样的。同时,还以扩展的形式 1 额外提供了一些:

Read more…

给 Nikola 博客添加 mermaid 支持

还是给博客集成了 mermaid 1 图表功能,尽管目前用的很少……与 mathjax 一样,使用的时候给文章添加 mermaid 标签,然后在文章中给描述文本指定 mermaid class 即可。就像这样:

.. class:: mermaid

   graph TD
   A[Christmas] -->|Get money| B(Go shopping)
   B --> C{Let me think}
   C -->|One| D[Laptop]
   C -->|Two| E[iPhone]
   C -->|Three| F[Car]
1

mermaid 使用 javascript 从纯文本描述产生流程图、序列图、甘特图等图表类型。

Read more…

Nikola 博客资源链接问题

写博客的时候,经常会插入各种超链接。外部链接不必理会,正常插入即可。但是博客内部链接(譬如,请参阅上一篇文章: 30 分钟搭建一个 Nikola 博客 )却是需要额外关注,规范做法应该是这样: /posts/30-fen-zhong-jian-li-yi-ge-nikola-bo-ke/ ,而不是这样: https://macplay.github.com/posts/30-fen-zhong-jian-li-yi-ge-nikola-bo-ke/ 。从最终效果来看貌似没有区别,但是如果发布到其它站点或者将来更换域名,第二种做法的缺陷就暴露出来了:届时需要将成百上千篇文章中的链接进行相应替换。因此,及早规范博客内部链接还是比较重要的。

Read more…

XeTeX 的中文化设置

看过一些文章得出结论:即使用 XeTeX 编译中文,也需要额外添加 xeCJK 包设置下字体。笔者也一直是这么做的。

刚尝试了下,这一步其实是不必要的。直接用 fontspec 设置中文字体,不必引入额外的包:

%! TEX program = xelatex
\usepackage{fontspec}
\setmainfont{PingFang SC}
\setsansfont{Hiragino Sans GB}
\setmonofont[Scale=0.9]{PingFang SC}
\usepackage{indentfirst}
\setlength{\parindent}{2em}
\XeTeXlinebreaklocale "zh"
\XeTeXlinebreakskip = 0pt plus 1pt minus 0.1pt

第 1 行指定编译引擎 xelatex 。不成文的规范,LaTeX 客户端或编辑器插件不一定会遵守。

第 3-6 行使用苹方和冬青黑体,macOS 上的默认字体。

第 8-9 行分别设置首行缩进和缩进间隔。

第 11 行使用中文断行方式,否则段落会合并成一行。

第 12 行还不清楚啥意思,不过好多文章都有,暂时不删除。

这几行精简的配置,足以应付 macOS 上绝大部分编译场景。如果是其它操作系统,注意替换中文字体。通过 rst2xetex.py 命令转换过来的 tex 文件,添加以上几行,就能顺利编译。

从 Markdown 到 reStructuredText(四)

本文是《从 Markdown 到 reStructuredText》系列文章的第四篇。和 Markdown 一样,reStructuredText 也是一种易读易写的纯文本标记语言,不过功能上更加强大(而且标准统一)。如果想了解其对应于 Markdown 的基本语法,请阅读 第一篇文章 。本文继续 上一篇文章 的话题,试用和探索一下 reStructuredText 导出为其它格式的功能。

reStructuredText 安装包 docutils 1 额外包含了一些 Python 脚本,以支持导出到其它格式。这里只谈一谈比较关心的 HTML、S5 Slides、Office 文档、PDF 等格式的支持情况。

Read more…

Contents © 2020 ashfinal - Powered by Nikola