En blogs, libros de texto, etc., es muy común mostrar los resultados de algunos códigos como comentarios, por ejemplo:
(+ 1 1) ;=> 2
¿Hay alguna manera de mostrar resultados como este automáticamente usando la función Babel de Org-Mode?
Específicamente, lo que me gustaría es poder especificar un encabezado tal que esto:
#+begin_src scheme <some headers>
(+ 1 1)
(/ 4 (* 2 2))
#+end_src
Se convertiría en lo siguiente cuando yo C-c C-c
:
#+begin_src scheme <some headers>
(+ 1 1) ;=> 2
(/ 4 (* 2 2)) ;=> 1
#+end_src
Y luego, si hice algunos cambios, así ...
#+begin_src scheme <some headers>
(+ 1 5) ;=> 2
(/ 8 (* 2 2)) ;=> 1
#+end_src
... y C-c C-c
reemplazaría los comentarios con los actualizados:
#+begin_src scheme <some headers>
(+ 1 5) ;=> 6
(/ 8 (* 2 2)) ;=> 2
#+end_src
O, por debajo de lo que he soñado anteriormente, ¿hay una manera fácil de mostrar los resultados mediante el renderizador de archivos org de github, de modo que lo siguiente sería visible (idealmente con el formato que especifico a nivel de documento):
#+RESULTS:
: 2
org-mode
org-export
org-babel
parkeristyping
fuente
fuente
Respuestas:
prueba esto
Use bloques de código con nombre y
noweb
encabezado para convertir su código en un programa alfabetizado.Cree un
org
bloque de código para formatear su código con su resultado¿Es una C-c C-cde
org
bloque de código y debería ver resultados similares a los del código de abajo:Si publicas código en Github, deberías ver
fuente
:var my_code='("my-code" "my-other-code")
. Aun así, es aún más engorroso de lo que me gustaría. ¿Quieres que actualice mi respuesta?Lo más cercano que he podido lograr con la funcionalidad existente de Babel es lo siguiente:
Primero, defino una función emacs-lisp para anteponer resultados con
";=> "
:Luego proceso los resultados usando el
:post
encabezado:Esto devuelve lo siguiente
C-c C-c
, que se muestra en github debido al:exports both
encabezado, pero está en un bloque de código separado.Sin embargo, creo que esta estrategia deja el archivo org demasiado abarrotado para que valga la pena. Y, a menos que desactive la confirmación de evaluación de código, tengo que aceptar dos "¿Está seguro de que desea evaluar el código?" avisos (uno para el bloque Esquema y otro para el elisp
commentify
).fuente
Puedes hacer algo como esto:
Escriba su bloque de código fuente nombrado de varias líneas como de costumbre
Cambie la envoltura de
BEGIN/END_SRC
a…-EXAMPLE
:Agregue bloques de origen de varias líneas adicionales con nombres individuales según sea necesario en su texto
Agregue
#+CALL:
líneas donde asigne el nombre del Bloque comolcmds
variable. El bloque transformador anterior solo se necesita una vez por documento.Tenga en cuenta que el bloque de transformación debe escribirse en el idioma que está tratando.
Primero intenté "automatizar" la buena solución de @melioratus, pero tuve problemas con eso, cuando encontré la solución anterior.
@jpkotta thx para señalar la solución necesaria para evitar el problema número-lista-con-código-bloque.
fuente