emacs-orgmode
[Top][All Lists]

## [Orgmode] Re: markup in environments in latex export

 From: Chris Gray Subject: [Orgmode] Re: markup in environments in latex export Date: Sun, 19 Apr 2009 21:55:20 +0200 User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.2 (gnu/linux)

Hi Carsten,

I took up your challenge and made a patch that does what I want.  It
does what I suggested in my previous email in that it allows one to
put #+begin_foo and #+end_foo tags in the body of an org file.  These
tags allow you to change the environment of the text between them.
What that means is left up to the exporter.  For example, in LaTeX,
the tags are expanded to \begin{foo} and \end{foo}, whereas in HTML, I
have the tags being expanded to <div class="foo"> and </div>.  (I am
not sure if that is the right thing to do in HTML...)  The text
between the tags is not protected, and thus it is interpreted for
markup just as the rest of the file.

I have left the old cases in place, so blockquote, verse, and center
should still have the same behaviour as before.  The only behaviour
that changes is with #+begin_quote in HTML.  This no longer generates
a blockquote, but a <div class="quote">.  It would be easy to revert
this to the old behaviour if many people were using #+begin_quote with
HTML export.

I have put the patches up in a github repository (basically because I
wanted to play with github), so you should be able to pull them from

Cheers,
Chris

Carsten Dominik wrote:

> Hi Chris,

> no, this is really by design the way it is.  Org-mode has its own
> markup.  As a bonus to people used to LaTeX, it allows certain
> LaTeX constructs to be intermingled into the file.  For LaTeX
> export, it will export these *literally*, the entire construct.
> For HTML export, you can arrange for these snippets to be
> processed by LaTeX as well and then included as images,
> this is useful for formulas and some other constructs.

> Here is a way to fool it:

> \nop{}\begin{center}

> - /a/ this is a
> - /b/ this is b

> \begin{itemize}
> \item \emph{a} this is a
> \item \emph{b} this is b
> \end{itemize}

> \nop{}\end{center}

> - /a/ this is a
> - /b/ this is b

> Why does it fool it?  Because it recognized full environments to be
> included
> by \begin ... \end, wit these macros at the beginning of the line.

> If I were to allow what you propose, it would quickly become hard to
> know
> what should be LaTeX and what not.  I think.

> Feel free to try to make a patch that will convince me of the opposite.

> - Carsten

> On Apr 16, 2009, at 3:09 PM, Chris Gray wrote:

>> Carsten Dominik wrote:

>>> Hi Chris,

>>> you can't have the cake and eat it.

>>> if you insert a LaTeX environment, the entire environment
>>> will be protected.  After all, you rely on this quoting with your
>>> itemize environment!

>> Hi Carsten,

>> I don't really understand this.  I can see it for things like the
>> verbatim environment, but that might be a special case.

>>> However, you can do this:

>>> #+begin_center

>> I should have chosen a different example I suppose.  What I am really
>> using, rather than center, are the theorem, lemma, and proof
>> environments.  I thought it would be safer for my example to use an
>> environment that is included by default in LaTeX.  Unfortunately,
>> center
>> is already a special case in org.  But I tried #+begin_proof and that
>> did not work.

>>> This works by the protection being done first, and only
>>> then #+begin_center is turned into \begin{center}

>> Perhaps that could be generalized so that #+begin_foo means "do the
>> regular org parsing and then turn on \begin{foo}"?  Other exporters
>> would be free to ignore these commands.

>> I really like doing my work in org mode, and I can certainly convert
>> my
>> markup commands to regular LaTeX, but doing that really seems like a
>> second-best solution.

>> Cheers,
>> Chris

>> _______________________________________________
>> Emacs-orgmode mailing list
>> Remember: use Reply All' to send replies to the list.
>> http://lists.gnu.org/mailman/listinfo/emacs-orgmode

> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use Reply All' to send replies to the list.