Di blog, buku teks, dll, sangat umum untuk menampilkan hasil dari beberapa kode sebagai komentar, misalnya:
(+ 1 1) ;=> 2
Apakah ada cara untuk menampilkan hasil seperti ini secara otomatis menggunakan fitur Babel Mode-Org?
Secara khusus, yang saya inginkan adalah dapat menentukan header seperti ini:
#+begin_src scheme <some headers>
(+ 1 1)
(/ 4 (* 2 2))
#+end_src
Akan berubah menjadi yang berikut saat saya C-c C-c
:
#+begin_src scheme <some headers>
(+ 1 1) ;=> 2
(/ 4 (* 2 2)) ;=> 1
#+end_src
Dan kemudian jika saya melakukan beberapa perubahan, seperti ...
#+begin_src scheme <some headers>
(+ 1 5) ;=> 2
(/ 8 (* 2 2)) ;=> 1
#+end_src
... dan C-c C-c
, itu akan menggantikan komentar dengan yang diperbarui:
#+begin_src scheme <some headers>
(+ 1 5) ;=> 6
(/ 8 (* 2 2)) ;=> 2
#+end_src
Atau, singkat dari apa yang saya impikan di atas, apakah ada cara mudah untuk mendapatkan hasil yang ditampilkan oleh rither file org github, sehingga yang berikut ini akan terlihat (idealnya dengan format yang saya tentukan pada level dokumen):
#+RESULTS:
: 2
org-mode
org-export
org-babel
parkeristyping
sumber
sumber
Jawaban:
coba ini
Gunakan blok kode bernama dan
noweb
tajuk untuk mengubah kode Anda menjadi program melek.Buat
org
blok kode untuk memformat kode Anda dengan hasil AndaLakukan C-c C-cpada
org
blok kode dan Anda akan melihat hasil yang mirip dengan kode di bawah ini:Jika Anda memposting kode ke Github, Anda akan melihat
sumber
:var my_code='("my-code" "my-other-code")
. Meski begitu masih lebih rumit dari yang saya inginkan. Apakah Anda ingin saya memperbarui jawaban saya?Yang paling dekat yang saya dapat capai dengan fungsionalitas Babel yang ada adalah sebagai berikut:
Pertama, saya mendefinisikan fungsi emacs-lisp untuk menambahkan hasil dengan
";=> "
:Lalu saya memproses hasil menggunakan
:post
header:Ini mengembalikan yang berikut ini
C-c C-c
, yang ditampilkan pada github karena:exports both
header, tetapi dalam blok kode yang terpisah.Saya pikir strategi ini membuat file org terlalu berantakan untuk menjadi sia-sia. Dan, kecuali saya menonaktifkan konfirmasi evaluasi kode, saya harus menerima dua "Anda yakin ingin mengevaluasi kode?" bisikan (satu untuk blok Skema dan satu untuk elisp
commentify
).sumber
Anda dapat melakukan sesuatu seperti ini:
Menulis Anda bernama Multi-Baris blok kode sumber seperti biasa
Ubah pembungkus dari
BEGIN/END_SRC
menjadi…-EXAMPLE
:Tambahkan blok sumber multisaluran tambahan dengan nama individual sesuai kebutuhan ke dalam teks Anda
Tambahkan
#+CALL:
baris tempat Anda memberi nama Blok sebagailcmds
variabel. Blok transformasi di atas hanya diperlukan satu kali per dokumen.Perhatikan bahwa blok Transformasi perlu ditulis dalam bahasa yang Anda gunakan.
Saya pertama kali mencoba "mengotomatisasi" solusi yang baik dari @melioratus, tetapi mengalami masalah dengan itu, ketika saya berlari ke solusi di atas.
@ jpkotta thx untuk menunjukkan perbaikan yang diperlukan untuk menghindari masalah nomor-daftar-dengan-kode-blok.
sumber