在以下组织模式源代码段中,不会生成任何结果:
#+BEGIN_SRC ipython :session
import numpy as np
#+END_SRC
但是,执行#+RESULTS:
时会添加到文档中。如何配置org-mode / babel只在有东西显示时插入结果?
我知道我可以使用:results silent
禁用输出,但我不想根据是否生成结果来指定不同的标志。
答案 0 :(得分:0)
将ob-ipython与组织9配合使用,我将其与以下技巧一起使用,条件是将源块配置为返回值(即,默认标头指定:results value
):
; don't label empty outputs, exclude empty result blocks
(advice-add 'ob-ipython--process-response :filter-return
(λ (contents)
(if (string-match-p "\\`# Out\[[0-9]+\]:\n\\'" contents)
"" contents)))
(advice-add 'org-babel-insert-result :filter-args
(λ (args)
(let ((result (car args))
(result-params (cadr args))
(others (cddr args)))
(apply 'list
result
(if (string-empty-p result) '("silent") result-params)
others))))
当输出中没有其他内容(使结果为空)时,第一条建议剥离由ob-ipython
插入的输出标签,而当结果为空时,第二条建议有效地应用:results silent
。这些片段的排列方式可能会因您的用例而异。