Pregunta:
Por ejemplo, obtuve una demostración para mostrar un comando y su salida, y quiero insertarlos en un archivo .org
como un fragmento de código fuente de C o algo así. Luego quiero poder exportar el archivo a un archivo HTML y tener el bloque resaltado como en muchos libros.
Por ejemplo, tengo
#+BEGIN_SRC shell
$ ls
dir1
dir2
file1
file2
...
or any other examples like this
...
#+END_SRC
pero no se puede convertir a HTML: un mensaje de error que dice
shell-mode
: argumento de tipo incorrecto: processp, nil
aparece todo el tiempo. ¿Qué modo debo usar para reemplazar el shell
, y si no debo usar el formato #+BEGIN_SRC...#+END_SRC
, qué debo usar en su lugar?
Respuesta:
Si desea construir ejemplos usted mismo (eso es lo que obtengo de su pregunta, pero corríjame si me equivoco), use un bloque EXAMPLE
lugar de un bloque SRC
:
#+BEGIN_EXAMPLE
$ ls
dir1
dir2
file1
file2
...
#+END_EXAMPLE
Al exportar a HTML, este bloque se convierte en:
<pre class="example">
$ ls
dir1
dir2
file1
file2
...
</pre>
Como puede ver, el contenido del bloque exportado es exactamente el mismo que el contenido del bloque EXAMPLE
original.
Si realmente desea ejecutar uno o más comandos para producir resultados dinámicamente e incluir tanto los comandos como los resultados en su documento HTML, debe modificar el bloque SRC
para que se vea así:
#+BEGIN_SRC sh :exports both
ls
#+END_SRC
Si la salida del ls
comando incluye los directorios y archivos que enumeró en su ejemplo ( dir1
, dir2
, file1
, file2
), esto va a exportar:
<div class="org-src-container">
<pre class="src src-sh">
ls
</pre>
</div>
<table>
<colgroup>
<col class="left" />
</colgroup>
<tbody>
<tr>
<td class="left">dir1</td>
</tr>
<tr>
<td class="left">dir2</td>
</tr>
<tr>
<td class="left">file1</td>
</tr>
<tr>
<td class="left">file2</td>
</tr>
</tbody>
</table>
Como puede ver, el código en sí está envuelto en un bloque de código y los resultados se enumeran en una tabla.
Tenga en cuenta que deberá habilitar la compatibilidad con bloques de código sh
explícitamente a través de:
(require 'ob-sh)
(org-babel-do-load-languages 'org-babel-load-languages '((sh . t)))
Esto se debe a que, por defecto, Org Babel solo habilita el soporte para bloques de código Emacs Lisp (como se explica aquí ).