Markdown&KaTeX使用

1,008 阅读3分钟

1. 前言

最近在CodeForces上面的一道题目的解答中看到了一个常见算法讲解的网站cp-algorithms。其本身是翻译一个俄文网站e-maxx.ruGithub上的项目。这个项目讲解了很多在算法竞赛中常用到的基础算法。
下载它的Git项目,然后使用Typora打开的时候竟然可以看到里面的公式。于是就深入研究了一下公式在Markdown里面的展示问题。

1.1 软件介绍

1.1.1 Typora

Typora,这个是被很多博客推荐的神级Markdown编辑软件,颜值也很高。但在这次公式展示的对比中败下阵来,有很多公式无法战士展示不出来。可能是底层没有使用KaTeX吧。

1.1.2 VisualStudio+Markdown Preview Enhanced

VisualStudio简称VS。微软PaPa还是你微软PaPa。这款Js开发出来的神器已经超越了很多之前的编辑器(Sublime,Atom)成为了我的图形编辑器首选。
加上它的一款插件Markdown Preview Enhanced简称MPE。它是国内一个叫Yiyi(crossnote.app/user/shd101…)的程序员开发的,屌的不行。这两个一起是我目前使用的对公式渲染最好的软件组合。 MPE下面我列了两个文档链接,参考2和参考3。参考4是MPE作者博客所在的一个在线文档编辑的网址,很方便,好用。这个网站包括这个网站的整个开源项目果然是MPE作者Yiyi在维护。参考5是这个项目的Git地址。参考5是知乎上面对MPE的隆重推荐(宠)和介绍。

1.1.3 马克飞象

马克飞象,是一款和EverNote深度结合的MarkDown编辑器,支持Web,ChromeApp,Win,Mac客户端。是我觉得除了之前VS+MPE组合之外最好的Markdown编辑器。

1.1.3 其他

  • Haroopad
    下载了Ubuntu版本的,不知道是不是因为强制安装的原因(按照遇到有文件冲突),软件图标显示不是鹦鹉(难道只有Windows才显示?)。公式显示也是不全。
  • Smark
    国人开发的软件,按理说是应该支持的。但是第一条按照命令sudo apt-get install qtsdk就无法运行(应该是缺少源),就先不深究了。以后有时间下来代码瞧瞧。

2. Markdown使用方法

这个就不深入介绍了,给大家推荐一个网址,详见参考1。 Markdown的使用平时需要多练习。

3. TeX&LaTeX&KaTeX的介绍

3.1 TeX&LaTeX

参考6中介绍了TeX,LaTeX和KaTeX的区别,可以参考一下。

3.1.1 TeX

TeX,是算法界的大牛Knuths设计和主要开发的。老人家想让每个人都能有出版书的能力,于是在创作《The Art of Computer Programming》之余设计了这套系统。 参考7提供了一个在线的Tex文档编辑器overleaf,可以参看一下。

3.1.2 LaTeX

LaTeX,是Leslie Lamport设计一款比TeX更易用的文档出版系统。

3.2 KaTeX

KaTeX,是TeX的网页渲染版。其Github地址详见参考8。 KaTeX和LaTeX还是有一些区别的比如align在在LaTeX的文档中允许出现,但是在KaTeX的文档是就需要改成aligned。这个问题详见参考9。

3.3 MathJax

MathJax是被KaTeX替换的渲染方式,不做详细介绍了,可以参看官网。

4. KaTex语法介绍

既然后面的公式主要用KaTeX来书写,下面给出几个KaTeX写出来的漂亮公式。

4.1 超长公式

\dots
\overbrace{
\underbrace{s_i \dots s_{i+2^{k-1}-1}}\_{\text{length} = 2^{k-1},~ \text{class} = c[i]}
\quad
\underbrace{s_{i+2^{k-1}} \dots s_{i+2^k-1}}\_{\text{length} = 2^{k-1},~ \text{class} = c[i + 2^{k-1}]}
}^{\text{length} = 2^k}
\\\\
\dots
\overbrace{
\underbrace{s_j \dots s_{j+2^{k-1}-1}}\_{\text{length} = 2^{k-1},~ \text{class} = c[j]}
\quad
\underbrace{s_{j+2^{k-1}} \dots s_{j+2^k-1}}\_{\text{length} = 2^{k-1},~ \text{class} = c[j + 2^{k-1}]}
}^{\text{length} = 2^k}
\dots

4.2 简单符号 \Gamma\iota\sigma\phi\upsilon\Pi\Bbbk\heartsuit\int\oint

4.3 简单公式 2x - 5y =  8
3x + 9y =  -12 7x \times 2y \neq 3z \sqrt{3x-1}+\sqrt[5]{2y^5-4}

5. 参考

  1. MarkdownTW
  2. MarkdownPreviewEnhanced英文文档
  3. MarkdownPreviewEnhanced中文文档
  4. crossnote.app
  5. crossnote.app@github
  6. 知乎MPE使用指南
  7. CSDNTeXLaTeXKateX
  8. OverLeaf
  9. KaTeXOnGitHub
  10. KaTeX报错
  11. CSDN编辑器推荐
  12. 简书LaTeX公式介绍