【问题标题】:How to execute inline source blocks in an org-mode table?如何在组织模式表中执行内联源块?
【发布时间】:2017-07-07 17:59:52
【问题描述】:

我想将 src_R 块的输出放在 org-mode 表中:

| Variable | Value    |
|----------+----------|
| x        | src_R{x} |

但是,当我导出为 PDF(通过 LaTeX)时,我得到的是文字 src_R{x} 而不是底层 R 会话中 x 变量的值。我可以在文本中使用相同的 src_R{x} 并按预期工作。

有没有办法支持表格中的内联源代码?

(我看过这个题目类似的问题:Code blocks inside tables for org-mode,不过题目不一样。)

【问题讨论】:

  • 一种解决方法是使用计算表达式的 elisp 公式。我没有安装 R,但以下适用于 elisp:#+TBLFM: @2$2='(org-babel-execute:emacs-lisp "(+ 2 2)" nil)

标签: org-mode


【解决方案1】:

感谢 Juancho 的提示(参见 cmets),我在这里找到了答案:http://orgmode.org/worg/org-contrib/babel/intro.html#spreadsheet。我首先定义了一个命名的源块来执行我的 R 计算:

#+NAME: my-code
#+BEGIN_SRC R :results output
  message(10)
#+END_SRC

(想象一下输出只是数字 10)。然后我像这样将它插入到表中:

| Variable | Value |
|----------+-------|
| Name     |       |
#+TBLFM: @2$2='(org-sbe my-code)

评论:

  • 似乎 org-babel-execute 不再存在,文档使用 org-sbe,它适用于我的 9.0.x org-mode 版本。
  • 我已将代码输出包装在 message() 中以避免来自 R 的额外输出。我尝试了 R 代码的各种标头参数(例如 :results value raw),但我得到了额外的括号,可能来自 lisp,或者错误。
  • 使用 org-sbe,您还可以将参数传递给代码,甚至是其他代码块的输出。上面引用的文档对此进行了解释。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 2015-01-23
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    相关资源
    最近更新 更多