W blogach, podręcznikach itp. Wyświetlanie wyników niektórych kodów w postaci komentarzy, np .:
(+ 1 1) ;=> 2
Czy istnieje sposób automatycznego wyświetlania takich wyników przy użyciu funkcji Babel w trybie Org-Mode?
W szczególności chciałbym móc określić taki nagłówek, aby:
#+begin_src scheme <some headers>
(+ 1 1)
(/ 4 (* 2 2))
#+end_src
Gdybym C-c C-c
:
#+begin_src scheme <some headers>
(+ 1 1) ;=> 2
(/ 4 (* 2 2)) ;=> 1
#+end_src
A jeśli wprowadzę jakieś zmiany, tak ...
#+begin_src scheme <some headers>
(+ 1 5) ;=> 2
(/ 8 (* 2 2)) ;=> 1
#+end_src
... i C-c C-c
zastąpiłoby komentarze tymi zaktualizowanymi:
#+begin_src scheme <some headers>
(+ 1 5) ;=> 6
(/ 8 (* 2 2)) ;=> 2
#+end_src
Lub, poza tym, o czym marzyłem powyżej, czy istnieje prosty sposób, aby wyniki były wyświetlane przez renderer plików org github, aby były widoczne następujące (najlepiej z formatowaniem, które określam na poziomie dokumentu):
#+RESULTS:
: 2
org-mode
org-export
org-babel
parkeristyping
źródło
źródło
Odpowiedzi:
Spróbuj tego
Użyj nazwanych bloków kodu i
noweb
nagłówka, aby zamienić kod w umiejętny program.Utwórz
org
blok kodu, aby sformatować kod z wynikiemZrobić C-c C-cna
org
bloku kodu i powinieneś zobaczyć wyniki podobne do kodu poniżej:Jeśli wyślesz kod do Github, powinieneś zobaczyć
źródło
:var my_code='("my-code" "my-other-code")
. Mimo to jest to jeszcze bardziej kłopotliwe, niż bym chciał. Czy chcesz, żebym zaktualizował moją odpowiedź?Najbliższe, jakie udało mi się osiągnąć dzięki istniejącej funkcjonalności Babel, to:
Najpierw definiuję funkcję emacs-lisp, aby dodawać wyniki do
";=> "
:Następnie przetwarzam wyniki za pomocą
:post
nagłówka:Zwraca to następujące
C-c C-c
, które jest wyświetlane w github z powodu:exports both
nagłówka, ale jest w osobnym bloku kodu.Myślę, że ta strategia powoduje, że plik org jest zbyt zagracony, aby był tego wart. I dopóki nie wyłączę potwierdzenia oceny kodu, muszę zaakceptować dwa „Czy na pewno chcesz ocenić kod?” monity (jeden dla bloku schematu i jeden dla elipsa
commentify
).źródło
Możesz zrobić coś takiego:
Napisz jak zwykle nazwany blok kodu źródłowego Multi-Line
Zmień opakowanie z
BEGIN/END_SRC
na…-EXAMPLE
:Dodaj do tekstu dodatkowe wieloliniowe bloki źródłowe z indywidualnymi nazwami
Dodaj
#+CALL:
wiersze, w których podajesz nazwę bloku jakolcmds
zmienną. Powyższy blok przekształcający jest potrzebny tylko raz na dokument.Zauważ, że blok przekształcania musi być napisany w języku, który traktujesz.
Najpierw próbowałem „zautomatyzować” dobre rozwiązanie z @melioratus, ale natknąłem się na problemy, kiedy natrafiłem na powyższe rozwiązanie.
@jpkotta thx za wskazanie poprawki potrzebnej do uniknięcia problemu z listą numerów z blokiem kodu.
źródło