hq306
1
装了 emacs-jupyter
,用于演示数据分析过程。
(use-package jupyter
:defer t
:init
(setq org-babel-default-header-args:jupyter-python '((:async . "yes")
(:session . "py"))
org-babel-default-header-args:jupyter-R '((:async . "yes"))))
org-mode 文档中含有这样的代码块:
#+begin_src jupyter-python :kernel python3 :results scalar
d = {"key1": "value1", "key2": "value2" }
print(d)
#+end_src
导出为pdf文档后,这部分代码是没有语法高亮的,就是普通文本。
从 *Org PDF LaTeX Output* 可以查到错误信息:
! Package Listings Error: Couldn't load requested language.
应该是包 “listings” 不认识 “jupyter-python”。
那么,应该如何解决这个问题呢?
(用 vscode 做数据分析,无论过程还是导出其他格式文档都挺方便。用作演示过程,感觉还是 org-mode 更直观明了。)
试了下默认导出 tex 是:
\begin{verbatim}
d = {"key1": "value1", "key2": "value2" }
print(d)
\end{verbatim}
你应该还有什么别的配置使得用了 Listings ?
hq306
3
我的 texlive 是 full 安装的,在 init.el 中设置了:
(add-to-list 'org-latex-packages-alist '("" "listings" t))
例如这样一个 org-mode 文档:
#+TITLE: 测试
#+OPTIONS: H:2 toc:nil author:nil date:nil
* Jupyter 测试
以下为一个测试。
#+begin_src jupyter-python :kernel python3
d = {“key1”: “value1”, “key2”: “value2” }
print(d)
#+end_src
导出为 tex 文档后,org-mode 文档中的 python 代码对应的 LaTeX 代码为:
\lstset{language=jupyter-python,label= ,caption= ,captionpos=b,numbers=none}
\begin{lstlisting}
d = {"key1": "value1", "key2": "value2" }
print(d)
\end{lstlisting}
生成的 pdf 文档并没有给代码加高亮。我试着把 language=jupyter-python
改为 language=python
,生成的 pdf 文档依然没有给代码加高亮。
用minted可以高亮。另外需要override默认的语言,(org-babel-jupyter-override-src-block "python")
.
1 个赞
hq306
5
用你提供的这个方法有颜色了。小结一下:
使用 minted:
(setq org-latex-listings 'minted)
(add-to-list 'org-latex-packages-alist '("" "minted"))
命令 “xelatex” 需要 “-shell-escape”:
(setq org-latex-pdf-process
'("xelatex -shell-escape -interaction nonstopmode-output-directory %o %f"
"bibtex %b"
"xelatex -shell-escape -interaction nonstopmode -output-directory %o %f"
"xelatex -shell-escape -interaction nonstopmode -output-directory %o %f"))
在 emacs-jupyter 的设置中,override默认的语言:
在调用 “org-babel-do-load-languages” 之后
(org-babel-jupyter-override-src-block "python")
如果用listings
也是可以解决的:
;; mapping jupyter-python to Python
(add-to-list 'org-latex-listings-langs '(jupyter-python "Python"))
1 个赞