从代码块生成带有标题的表


9

我想生成具有来自代码块的标头的表。像这样:

#+BEGIN_SRC emacs-lisp :results value table :table-header | First | Second |
  (identity '((a b) (c d)))
#+END_SRC

#+RESULTS:
| First | Second |
|-------+--------|
| a     | b      |
| c     | d      |

不幸的是:table-header | First | Second |不存在类似的东西。或更确切地说,我希望自己能忽略一些东西。(在这里,我(identity ...)用作实际计算值的代码的占位符。)

这种解决方法对我而言并不完全适合:

#+BEGIN_SRC emacs-lisp :results value table
  (cons (list "First" "Second")
        (identity '((a b) (c d))))
#+END_SRC

#+RESULTS:
| First | Second |
| a     | b      |
| c     | d      |

我必须修改代码块的内容,并且生成的标头实际上不是标头行,它与其他任何行一样。

与此相关(但并非100%相同,上面,我想避免必须将表设置指令放在代码块中,在下面是必需的),是否存在引起插入分隔符的特殊元素?就像是:

#+BEGIN_SRC emacs-lisp :results value table
  (nconc (identity '((a b) (c d)))  ; calculated value A
         (list 'linebreak)          ; explicitly inserted linebreak
         (identity '((A B) (C D)))) ; calculated value B
#+END_SRC

#+RESULTS:
| a | b |
| c | d |
|---+---|
| A | B |
| B | D |

Answers:


9

只需使用hline代替即可linebreak。以下作品:

* test
#+BEGIN_SRC emacs-lisp :results value table
  '(("First" "Second")
    hline
    (a b) (c d))
#+END_SRC

#+RESULTS:
| First | Second |
|-------+--------|
| a     | b      |
| c     | d      |

已经有发挥后:colnames在对方的回答表明,它看起来像我将不得不在打开的功能请求#+BEGIN_SRC ... :colnames yes,以及:colnames "| First | Second |"。在那之前,我将采用这种方法。
tarsius

万一有人记下此找到有用的另外:如果你不使用quoted值的一切(例如,也许您使用的是:var头部和abc,等的实际导出您所使用的变量list上),只是引用'hline符号本身。
林德斯'18

3

添加标题行后:

  1. 分配#+NAME:给代码块。

    #+NAME: needs-a-table-header
    #+BEGIN_SRC emacs-lisp :results value table 
      (cons (list "First" "Second")
            (identity '((a b) (c d))))
    #+END_SRC
    
  2. 添加#+CALL:带有:colnames yes标题的语句

    #+CALL: needs-a-table-header() :colnames yes 
    
  3. #+CALL:使用运行语句C-c C-c

    #+RESULTS:
    | First | Second |
    |-------+--------|
    | a     | b      |
    | c     | d      |
    

希望能有所帮助!


使用代码测试

GNU Emacs 24.5.1(x86_64-unknown-cygwin,GTK +版本3.14.13)
组织版本:8.3.2


谢谢。为了避免有两个表,我在代码块和调用之前都加上#+NAME: same-name。由于在使用这种方法时仍然必须限制标题行,因此我将在另一个答案中使用解决方案。
tarsius

@tarsius感谢您的更新!顺便说一句,谢谢您提出这个问题!我知道添加表头的几种不同方法,这些方法可能会有所帮助。我将在笔记中查找另一个答案。
Melioratus
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.