org-mode:以编程方式向表中添加标题

n1bvdmb6  于 2023-09-27  发布在  其他
关注(0)|答案(1)|浏览(90)

我有一个在org-mode下定义的表:

#+RESULTS[4fc5d440d2954e8355d32d8004cab567f9918a64]: table
|  7.4159 | 3.0522 |  5.9452 |
| -1.0548 | 12.574 | -6.5001 |
|  7.4159 | 3.0522 |  5.9452 |
|  5.1884 | 4.9813 |  4.9813 |

我想生成下表:

#+caption: Caption of my table
|        | group 1 | group 2 | group 3 |
|--------+---------+---------+---------|
| plan 1 |   7.416 |   3.052 |   5.945 |
| plan 2 |  -1.055 |  12.574 |    -6.5 |
| plan 3 |   7.416 |   3.052 |   5.945 |
| plan 4 |  5.1884 |  4.9813 |  4.9813 |

我怎么能做到呢?以下是我在R中尝试的:

#+begin_src R :colnames yes :var table=table :session  
data.frame(table)
#+end_src

但当然它不起作用,这是我得到的:

#RESULTS:
| X7.4159 | X3.0522 | X5.9452 |
|---------+---------+---------|
| -1.0548 |  12.574 | -6.5001 |
|  7.4159 |  3.0522 |  5.9452 |
|  5.1884 |  4.9813 |  4.9813 |

有什么建议吗?
谢谢!2谢谢!

t98cgbkg

t98cgbkg1#

已经很接近了。首先定义这个函数:

#+BEGIN_SRC emacs-lisp
(defun add-caption (caption)
  (concat (format "org\n#+caption: %s" caption)))
#+END_SRC

接下来,使用这种src块。我使用python,但它也应该在R中工作,你只需要:wrap。我通过var传递了你的数据,如果你在块中生成数据,你不需要它。

#+BEGIN_SRC python :results value :var data=data :wrap (add-caption "Some really long, uninteresting, caption about data that is in this table.")
data.insert(0, ["", "group 1", "group 2", "group 3"])
data.insert(1, None)
return data
#+END_SRC

这些产出

#+BEGIN_org
#+caption: Some really long, uninteresting, caption about data that is in this    table.
|        | group 1 | group 2 | group 3 |
|--------+---------+---------+---------|
| plan 1 |   7.416 |   3.052 |   5.945 |
| plan 2 |  -1.055 |  12.574 |    -6.5 |
| plan 3 |   7.416 |   3.052 |   5.945 |
| plan 4 |  5.1884 |  4.9813 |  4.9813 |
#+END_org

出口也不错,我想。

相关问题