В блогах, учебниках и т. Д. Действительно часто результаты кода отображаются в виде комментариев, например:
(+ 1 1) ;=> 2
Есть ли способ автоматически отображать такие результаты, используя функцию Babel в Org-Mode?
В частности, я хотел бы иметь возможность указать заголовок, такой:
#+begin_src scheme <some headers>
(+ 1 1)
(/ 4 (* 2 2))
#+end_src
Превратился бы в следующее, когда я C-c C-c
:
#+begin_src scheme <some headers>
(+ 1 1) ;=> 2
(/ 4 (* 2 2)) ;=> 1
#+end_src
И потом, если я внесу некоторые изменения, например, так ...
#+begin_src scheme <some headers>
(+ 1 5) ;=> 2
(/ 8 (* 2 2)) ;=> 1
#+end_src
... и C-c C-c
это заменит комментарии на обновленные:
#+begin_src scheme <some headers>
(+ 1 5) ;=> 6
(/ 8 (* 2 2)) ;=> 2
#+end_src
Или, если не считать того, о чем я мечтал выше, есть ли простой способ отображения результатов с помощью средства визуализации org-файлов в github, так что будет видно следующее (в идеале с форматированием, которое я задаю на уровне документа):
#+RESULTS:
: 2
org-mode
org-export
org-babel
parkeristyping
источник
источник
Ответы:
попробуй это
Используйте именованные блоки кода и
noweb
заголовок, чтобы превратить ваш код в грамотную программу.Создайте
org
блок кода для форматирования кода с вашим результатомСделайте C-c C-cна
org
блоке кода , и вы должны увидеть результаты , аналогичные коду ниже:Если вы отправите код на Github, вы должны увидеть
источник
:var my_code='("my-code" "my-other-code")
. Несмотря на это, это все еще более громоздко, чем мне бы хотелось. Вы хотите, чтобы я обновил свой ответ?Самое близкое, что мне удалось сделать с существующей функциональностью Babel, это следующее:
Сначала я определяю функцию emacs-lisp для добавления результатов
";=> "
:Затем я обрабатываю результаты, используя
:post
заголовок:При этом возвращается следующее значение
C-c C-c
, которое отображается на github из-за:exports both
заголовка, но оно находится в отдельном блоке кода.Я думаю, что эта стратегия оставляет файл org слишком загроможденным, чтобы того стоить. И, если я не отключу подтверждение оценки кода, я должен принять два сообщения: «Вы уверены, что хотите оценить код?» приглашения (один для блока схемы и один для elisp
commentify
).источник
Вы можете сделать что-то вроде этого:
Напишите ваш названный многострочный блок исходного кода как обычно
Измените упаковку с
BEGIN/END_SRC
на…-EXAMPLE
:Добавьте дополнительные многострочные исходные блоки с индивидуальными именами по мере необходимости в ваш текст
Добавьте
#+CALL:
строки, где вы даете имя блока в качествеlcmds
переменной. Вышеуказанный блок преобразования требуется только один раз для каждого документа.Обратите внимание, что блок Transforming должен быть написан на языке, который вы обрабатываете.
Сначала я попытался «автоматизировать» хорошее решение от @melioratus, но столкнулся с проблемами, когда столкнулся с вышеуказанным решением.
@jpkotta, спасибо за указание на исправление, необходимое для избежания проблемы с числом-списком-кодом-блоком.
источник