关于Org Mode导出PDF那些事

5,309 阅读2分钟

最简单的方式

那当然是使用 tectonic了,这家伙把latex那一堆简化成了一个可执行文件,后面的事情都替我们自动做了,简直不要太省心!

releases页面下载对应平台的压缩包,然后解压后(就一个可执行文件)放到环境变量中,完事!

;; init.el
(setq  org-latex-pdf-process '("tectonic -Z shell-escape %f"))

怎么导出

当然是在Org文件中,按C-c C-e l o了。正常来说,你就看到用你的PDF阅读器打开了一个漂亮的PDF文件。

但是!中文不显示或者乱码

别慌,两种方法可以解决。

方法一,添加LATEX_HEADER

这种方案仅对当前的Org文件生效,换一个文件就又不行了。具体为,在Org文件的开头添加如下的代码:

#+LATEX_HEADER: \usepackage{ctex}

方法二,配置文件

你肯定不喜欢方法一,所以方法二就来了。全局生效。在init.el文件中添加如下代码即可。

(add-to-list 'org-latex-packages-alist '("" "ctex"))

哎呀,导出的内容有的行超出了页宽

比如aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa你导出一下看看,一定超出了页宽。

请教了一些人,搜索了一些资料后发现也有两种方案可用。

方案一,使用\-来添加可接受的折行

例如aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

那么就只会在出现 \- 的地方尝试折行。

方案二,使用seqsplit包

跟上面的ctex一样,我们使用上面的方法二:

;; init.el
(add-to-list 'org-latex-packages-alist '("" "seqsplit"))

在使用到的地方用seqsplit宏包裹一下内容即可自动的进行折行:

\seqsplit{aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}

代码块导出:高亮与边框

;; init.el
(setq org-latex-listings 'minted)
(add-to-list 'org-latex-packages-alist '("" "minted"))
;; 指定高亮的主题
#+LATEX_HEADER: \usemintedstyle{tango}

;; 指定是否折行,是否显示行号,是否显示边框
#+ATTR_LATEX: :options frame=lines,numbers=left,breaklines
#+begin_src Python
  import os
#+end_src

持续学习,持续记录中