Org-Mode中R代码块生成的LaTeX表格无法导出为PDF
问题:Org-Mode导出PDF时代码块及结果不显示
我在Org-Mode的代码块中运行以下R代码:
#+begin_src R :session :results output latex :exports results library(ggplot2) library(xtable) x <- rnorm(1000) g0 <- ggplot(as.data.frame(x), aes(x)) + geom_histogram(); g0 hist_dat <- ggplot_build(g0)$data[[1]] hist_dat <- hist_dat |> select(xmin, xmax, count) print(xtable(hist_dat, digits = c(0, 1, 1, 0)), include.rownames = FALSE) #+end_src
运行后生成了预期的LaTeX代码:
\begin{table}[ht] \centering \begin{tabular}{rrr} \hline xmin & xmax & count \\ \hline -3.3 & -3.1 & 1 \\ -3.1 & -2.9 & 1 \\ -2.9 & -2.6 & 0 \\ -2.6 & -2.4 & 5 \\ -2.4 & -2.2 & 7 \\ -2.2 & -1.9 & 14 \\ -1.9 & -1.7 & 11 \\ -1.7 & -1.5 & 20 \\ -1.5 & -1.3 & 35 \\ -1.3 & -1.0 & 49 \\ -1.0 & -0.8 & 64 \\ -0.8 & -0.6 & 67 \\ -0.6 & -0.3 & 108 \\ -0.3 & -0.1 & 90 \\ -0.1 & 0.1 & 98 \\ 0.1 & 0.3 & 85 \\ 0.3 & 0.6 & 84 \\ 0.6 & 0.8 & 62 \\ 0.8 & 1.0 & 59 \\ 1.0 & 1.3 & 35 \\ 1.3 & 1.5 & 32 \\ 1.5 & 1.7 & 22 \\ 1.7 & 1.9 & 25 \\ 1.9 & 2.2 & 13 \\ 2.2 & 2.4 & 10 \\ 2.4 & 2.6 & 1 \\ 2.6 & 2.9 & 1 \\ 2.9 & 3.1 & 0 \\ 3.1 & 3.3 & 0 \\ 3.3 & 3.6 & 1 \\ \hline \end{tabular} \end{table}
但执行org-export-dispatch选择“导出为LaTeX”并“生成PDF文件并打开”时,PDF中既没有代码也没有结果,想知道问题出在哪里。
问题原因及解决方法
1. 代码块导出参数设置偏差
代码块使用的:exports results参数仅指定导出运行结果,但如果结果未被正确嵌入导出流程,就会出现无内容的情况;同时:results output latex需要明确告诉Org Mode直接插入LaTeX结果。
- 解决:若要同时导出代码和结果,将
:exports results改为:exports both;若仅需导出结果,保持:exports results并添加:wrap export参数,确保LaTeX结果被正确插入:#+begin_src R :session :results output latex :exports results :wrap export ... 你的代码 ... #+end_src
2. 代码块结果未写入Org文件
Org Mode导出时默认仅使用已写入文件的#+results:块内容,若仅在会话中运行代码但未将结果保存到文件,导出时无内容可插入。
- 解决:运行代码块后(快捷键
C-c C-c),确保Org文件中生成对应的#+results:块并包含LaTeX代码。
3. 导出时未触发代码自动执行
默认情况下,Org Mode导出不会自动运行代码块,仅用已缓存的结果。若希望导出时自动生成结果,可在文件开头添加全局设置:
#+PROPERTY: header-args:R :session :results output latex :exports results #+PROPERTY: header-args :eval always-export
将:eval never-export替换为:eval always-export,导出时会自动执行代码块并生成结果。
4. ggplot图形未配置导出参数
代码中生成的直方图g0未设置导出相关参数,当前仅输出表格LaTeX。若需将图形也导出到PDF,需调整代码块参数:
#+begin_src R :session :results file graphics :exports results :file histogram.pdf library(ggplot2) x <- rnorm(1000) g0 <- ggplot(as.data.frame(x), aes(x)) + geom_histogram() ggsave("histogram.pdf", g0) #+end_src
添加:results file graphics和:file参数,导出时会将图形插入PDF。
内容的提问来源于stack exchange,提问作者cdd
相关产品推荐
相关产品推荐

