Kod bloğundan başlıkları olan tablolar oluşturma


9

Kod blokları başlıkları olan tablolar oluşturmak istiyorum. Bunun gibi bir şey:

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

Ne yazık ki böyle bir şey :table-header | First | Second |mevcut değil. Ya da daha doğrusu bir şeye bakmamı umuyorum. (Burada (identity ...)aslında bir değeri hesaplayan kod için bir yer tutucu olarak kullanıyorum .)

Bu geçici çözüm benim için pek işe yaramıyor:

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

Kod bloğunun içeriğini değiştirmek zorunda ve ortaya çıkan başlık aslında bir başlık satırı değil, onun gibi herhangi bir satır.

Bununla ilgili (ancak% 100 aynı değil, yukarıda Ben aşağıda gerekli kod bloğu içinde tablo kurulum talimatları koymak zorunda kaçınmak istiyorum ), bir ayırıcı ekleme neden özel bir öğe var mı? Gibi bir şey:

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

Yanıtlar:


9

Bunun hlineyerine kullanın linebreak. Aşağıdaki işler:

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

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

İle oynandıktan sonra :colnamesdiğer cevap önerildiği gibi açık özellik isteği gerekecek gibi görünüyor #+BEGIN_SRC ... :colnames yesyanı sıra :colnames "| First | Second |". O zamana kadar bu yaklaşımla devam edeceğim.
tarsius

Sadece durumda herkes bir not bu yararlı bir ek bulur: Eğer kullanmıyorsanız quote(örneğin belki bir kullandığınız her şey için d değerleri :varbaşlık ve a, b, cvb aslında kullandığınız değişkenleri türetilmiştir listüzerine), sadece alıntı 'hlinesembolün kendisi.
18'de

3

Üstbilgi satırını ekledikten sonra:

  1. #+NAME:Kod bloğuna atayın .

    #+NAME: needs-a-table-header
    #+BEGIN_SRC emacs-lisp :results value table 
      (cons (list "First" "Second")
            (identity '((a b) (c d))))
    #+END_SRC
    
  2. Üstbilgiyle #+CALL:ifade ekle:colnames yes

    #+CALL: needs-a-table-header() :colnames yes 
    
  3. İfadesini #+CALL:kullanarak çalıştırın C-c C-c.

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

Umut etmek bu yardım etmek!


Kod kullanılarak test edildi

GNU Emacs 24.5.1 (x86_64-bilinmeyen-cygwin, GTK + Sürüm 3.14.13)
org sürümü: 8.3.2


Teşekkürler. İki tabloya sahip olmaktan kaçınmak için hem kod bloğunu hem de çağrısını önceden ekledim #+NAME: same-name. Bu yaklaşımı kullanırken hala başlık satırını göz önünde bulundurmam gerektiğinden, diğer cevaptaki çözümle devam edeceğim.
tarsius

@tarsius Güncelleme için teşekkürler! BTW bu soruyu sorduğunuz için teşekkürler! Faydalı bulabileceğiniz tablo başlıkları eklemenin birkaç farklı yolunu biliyorum. Notlarıma bir mesaj daha bakacağım.
Melioratus
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.