如何从org-babel shell输出生成带有列标题的表?

时间:2016-01-22 15:55:11

标签: org-babel

我正在尝试为此添加标题:

#+BEGIN_SRC sh :dir ~ :results table
  for n in 1 2 3 4; do
      echo $n $(($n * $n))
  done
#+END_SRC

结果是:

#+RESULTS:
| 1 |  1 |
| 2 |  4 |
| 3 |  9 |
| 4 | 16 |

我想要的输出是:

#+RESULTS:
| N | N*N |
|---+-----|
| 1 |   1 |
| 2 |   4 |
| 3 |   9 |
| 4 |  16 |

我遇到的困难是注入第二条线。这不起作用:

#+BEGIN_SRC sh :dir ~ :results table
  echo "N N**2"
  echo "|-"
  for n in 1 2 3 4; do
      echo $n $(($n * $n))
  done
#+END_SRC

这导致:

#+RESULTS:
| N | N**2 |
|   |    - |
| 1 |    1 |
| 2 |    4 |
| 3 |    9 |
| 4 |   16 |

我也不能像建议here那样使用空行:

#+BEGIN_SRC sh :dir ~ :results table
  echo "N N**2"
  echo 
  for n in 1 2 3 4; do
      echo $n $(($n * $n))
  done
#+END_SRC

这导致:

#+RESULTS:
| N | N**2 |
|   |      |
| 1 |    1 |
| 2 |    4 |
| 3 |    9 |
| 4 |   16 |

任何提示都非常感谢!

1 个答案:

答案 0 :(得分:3)

我认为:results org正是您正在寻找的,然后将您自己键入的代码输出为带有分隔符的表(引用以保护shell)

#+BEGIN_SRC sh :dir ~ :results org
  echo "|N|N**2"
  echo "|-"
  for n in 1 2 3 4; do
      echo "|" $n "|" $(($n * $n))
  done
#+END_SRC

产生这个(emacs 25.1.50.1,org 8.3.3):

#+RESULTS:
#+BEGIN_SRC org
| N | N**2 |
|---+------|
| 1 |    1 |
| 2 |    4 |
| 3 |    9 |
| 4 |   16 |
#+END_SRC