【问题标题】:How can I produce a table with column headers from org-babel shell output?如何从 org-babel shell 输出中生成带有列标题的表?
【发布时间】:2016-01-22 15:55:11
【问题描述】:

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

#+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 |

非常感谢任何提示!

【问题讨论】:

    标签: org-babel


    【解决方案1】:

    我认为:results org 是您要查找的内容,然后让您的代码输出您自己键入的内容,作为带有分隔符的表格(引用以保护外壳)

    #+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
    

    【讨论】:

    • 这很接近,但是在导出它时会逐字显示。但是,如果您使用:results org drawer 而不仅仅是:results org,那么它会导出为一个不错的表格:-)
    • 顺便说一句,你刚加入回答这个问题吗?非常感谢:-)
    • 很好的问答。尽管如此,能够将标题添加到行和列作为后处理步骤而不依赖于您的特定语言来处理它会很有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多