为何Emacs Org Mode Babel全局缓冲区头参数在示例中不生效?
问题原因与解决方法
核心原因
Org Mode的#+PROPERTY: header-args :results silent参数仅控制代码块的返回值是否插入文档,但(print "Hello")是通过标准输出(stdout)打印内容,这类输出默认不受:results silent的约束,所以依然会生成#+RESULTS:区块。
简单区分:
:results silent管控的是代码执行后的返回值(比如(+ 1 2)的返回值3)print函数的输出属于进程标准输出,不在results参数的管控范围内
解决办法
有三种常用处理方式:
- 替换
print为message:(message "Hello")的输出会直接发送到Emacs的*Messages*缓冲区,不会被Org捕获生成结果区块。 - 给单个代码块追加
:output silent参数:#+begin_src elisp :results silent :output silent (print "Hello") #+end_src - 修改全局PROPERTY,同时抑制返回值和标准输出:
#+PROPERTY: header-args :results silent :output silent
内容的提问来源于stack exchange,提问作者jrpear
相关产品推荐
相关产品推荐

