On Fri, 22 May 2015, Jacob Gerlach wrote:

Hello,

I want to use a one of several custom environments for some babel
results using, for example, ":wrap myverbatim" as a header argument.
(Since I have several possible environments, I think I need to use
:wrap rather than, say, replacing "verbatim" using an export filter).

However, since this block isn't recognized as an actual verbatim
environment, markup gets processed in undesirable ways.

For example:

-------------
#+BEGIN_SRC sh :exports results :wrap myverbatim
echo "Hello_world"
#+END_SRC

#+RESULTS:
#+BEGIN_myverbatim
Hello_world
#+END_myverbatim
-------------
exports to
-------------
\begin{myverbatim}
Hello\(_{\text{world}}\)
\end{myverbatim}
-------------
instead of
-------------
\begin{myverbatim}
Hello_world
\end{myverbatim}
-------------

A couple questions:

- Is there any way I've missed to specify verbatim export as an option
for an arbitrary block/environment?



You can use arbritrary latex environments inside a latex block with these header arguments:

:  :results raw :wrap latex :post postenv("env-name-goes-here")

If you define a wrapper for the results like this:

#+NAME: postenv
#+BEGIN_SRC emacs-lisp :var env="myverb"  :exports none
(format "\\begin{%s}\n%s\\end{%s}" env *this* env)
#+END_SRC

Then calling

#+header: :results raw :wrap latex :post postenv("myverbatim")
#+BEGIN_SRC sh :exports results
echo "Hello_world"
#+END_SRC

gives:

,----
| \begin{myverbatim}
| Hello_world
| \end{myverbatim}
`----

under latex export.

The `:results raw' is needed particularly for multiline results.

See the manual for each of those header args for more info.

You can also do this using :prologue and :epilogue, but I think :post is a bit neater.


HTH,

Chuck

Reply via email to