如何用 org-mode 来写作数学书籍

之前一直用 LaTeX 写作,但作为一个 emacs 用户,早就考虑想用 org-mode 来写作数学书籍,这样做的好处有如下几点:

  • 从繁琐的 LaTeX 排版命令中解放出来.
  • 可以同时得到 pdf 版本和 html 版本,分别用于离线下载和在线阅读,这是我最吸引我的地方.

要想这样做,就要解决以下一些问题:

  • 标签与引用,即 LaTeX 的 label 与 ref,这包括章节标题、定理环境、公式等.
  • 自动编号问题,包括定理、公式、图表等.
  • 定理环境、公式环境.
  • 图片和表格的插入引用,插入主要是图片格式的问题,引用问题应该与前一条一样.另外还有个多图显示在同一行不知 org-mode 能否办到.
  • auctex 和 cdlatex 在 org-mode 中的使用问题,我已经离不开它俩了.
  • 参考文献的引用.
  • 脚注的使用.
  • 多文件工程,似乎 org-mode 的话就不需要分多个文件了.

相关工具集合(感谢各位大拿的指出):

  • org-ref
  • org-edit-latex

折腾记录: 使用 org-mode 写作数学书籍

5 个赞

不如直接用 Muse。

你说的是 Adobe muse 吗,我百度了下,好像只是一个网页设计软件啊。

Pandoc 可以在文档编译期间做很多事情,自己写扩展也不复杂 https://github.com/jgm/pandoc/wiki/Pandoc-Filters

不知道 pandoc + orgmode 具体怎么操作,没这样用过,以下是 google 到的一些资料:

为啥你们都在提别的工具我问的是 org-mode 呀,如果要用别的工具,我当然是直接上 latex 和 TeXmacs 啊。

并没有偏离主题呀,我的建议是,如果 org-mode 有问题不好解决,可以在文档导出的过程中处理。扩展 org-mode 本身,或者是把 pandoc 作为 org-mode 的 exporter,而扩展 pandoc 很容易。

https://www.gnu.org/software/emacs-muse/index.html

比起 Org 简单,本身就是为了导出 LaTeX 与 HTML 设计的,自定义空间更多。

我觉得能满足你上面提出的用 Org 的两个优点,同时还解决了你列出的大部分缺点。因为 Muse 可以直接内嵌任意语法,而且还有很棒的项目管理功能。

为啥不直接用AUCTex + cdlatex. 这样你就没必要为了latex中格式在org中找中间层处理的方法。latex本身写起来也很舒服啊,而且也没有复杂到哪里,可以用很多模版。 latex 本身也可以直接 生成html格式吧。

1 个赞

大体看了下,似乎是一个 org-mode 的类似工具,但是好像它能做的,org-mode 也都能做,具体到数学书籍的写作上,它与 org-mode 相比好像也没有多大区别。

之所以要用 org-mode 的原因,问题里已经说了,主要是为了同时得到书籍的 pdf 版本和 html 版本,你说 latex 本身可以直接生成 html 格式,这是怎么做到的,我搜了一下,似乎是有个叫 latex2html 的插件可以做这个事情,但是公式那些就变成图片了,我希望公式能由 mathjax 处理,就像 org-mode 所做的那样。

最全的标记语言转换工具:pandoc,它是支持 mathjax 的。

Less is more.

其实你写个 LaTeX 宏包也能解决……没有现成方案,Hack org-mode 也不会简单。

我还不具备 hack org 的能力,我先尝试一下直接写看看。

org不是用来做这个的,但是可以做一些基本的东西。如果要是想用org的话还是不错的。

优点:latex公式可以直接编辑、预览,很方便,与latex无异。文献的引用可以使用org-ref,没有任何问题。公式、图的引用我没有hack过,但是这个功能应该算是简单的了,不麻烦(org-ref在org-mode里可以实现,不知道转化后的效果如何)。自动编号这是latex的功能,应该是没有问题的。org可以多图显示在同一行,但是导出到latex的时候可能需要hack一下。脚注的使用,对这个不是很清楚。

缺点:org就是org,是emacs的一个mode,这是主要功能。latex的功能太多了,现阶段它不可能全都包括进来,org到latex的转换还没有那么完善,以后可能会越来越完善的。

另外,org可以很快的转换成latex,latex在emacs里是有直接的mode的,编辑起来很方便,可以做为后期的编辑器。

根据你的描述,果断继续 LaTex 吧。

与 markdown、org 这些“轻量级”标记语言相比,LaTex 最初是作为排版引擎出现的。

数学书籍后期还不知道要出现什么幺蛾子需求,使用 LaTex 是更为稳妥的做法。

至于使用过程中遇到的一些问题。

  • “繁琐的 LaTex 排版命令” — 这个补全引擎得努力,最好是按一个字母就出来补全列表的那种,这样一路 tab + return 就过去了。或者使用 LyX 等可视化排版软件大体上搞好,细节上再编辑器细修下就差不多了。

  • “HTML 版本生成” — 看看有没有现成工具什么的。没有的话,pandoc 好像能把 latex 转成 org?再 org 导出就能直接使用 org 的 html 框架和 css 样式了。可能同样需要细节修一下。

至于使用 mathjax 显示公式,直接 html 里引入 mathjax js 文件就行了,不需要怎么折腾。

支持楼主用 Org-mode,路是人走出来的,走的人多了路就有了。 Org-ref 的作者 John 就是用 Org-mode 写论文的。他也是 Scimax 的作者。你写论文或者数学书籍遇到的坑估计他都遇到过,你可以看他的博客能找到一些 方法和头绪 ,你会发现 John 的博客简直就是一个金库

另外推荐我们 Emacs 论坛某位活跃人士写的插件,估计也会对你有些帮助。:sunglasses:

意义是人赋予的,只要用 Org-mode 写 Latex 的人越多,那么生态就越健全。

5 个赞

没写过什么复杂的文档,没有认真学/用过 LaTeX,org-mode 也只是拿来记录代码片段。

之前用 markdown + pandoc 做过 beamer,输出效果相当不错。对我这种对排版没什么概念的人来说,能想到各种效果,通过这个组合,基本都能实现。

写的时候更省事了,段落布局这些完全不用操心,基本上就是在写 markdown,需要特效的时候直接 Raw TeX,读源代码也不会觉得有太多标签干扰。当中有个需求比较特别:

| Markdown                | TeX
|-------------------------|-----------------------------------------------
| \T{\begin{block}{}}     | \begin{block}{}
| Markdown block here     |   Rendered block here
| \T{\end{block}}         | \end{block}
|-------------------------|-----------------------------------------------
| foo: \T{\alert<2>{bar}} | foo: \alert<2>{bar}

我希望由 markdown 来给代码渲染&着色,但是又想要 beamer 里的那个 block 边框。就是在 Raw TeX 作用之前,先把 markdown 处理了,于是学着写了一个 pandoc filter (也许有其它方法,但是我不懂 latex,也没有太多时间去学习,而且不常用学了就忘😅)。

这里有个完整的例子(包含原文件和pdf): Beamer + Pandoc · GitHub

果然一试一下,问题就来了,在输入行内公式的时候,公式与两边的中文必须至少有一个空格隔开,中文标点也不例外,否则导出为 html 的时候就不能被识别为公式。

是的,我也只是一个想法而已,现在对这个需求还不是很强。

对, 习惯用空格强制隔开才是王道。。。。

然后就是定理环境,导出为 html 后没有任何格式,跟正文一样,连 “定理” 的关键字前缀都没有。