emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Wrapping section within LaTeX environment


From: Xavier Garrido
Subject: Re: [O] Wrapping section within LaTeX environment
Date: Mon, 14 Dec 2015 08:06:14 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.4.0

Le 14/12/2015 02:39, John Kitchin a écrit :
could you provide a brief example of what you want to happen?

i.e. are you looking for this:

* some heading :correction:
one line of content

to convert to this in LaTeX?

\begin{correction}
one line of content
\end{correction}


Exactly. Actually when I read your mail I realize that =org-export-filter-headline-functions= filter not only give access to the heading but to the whole content within the heading. So,

#+BEGIN_SRC emacs-lisp
  (defun cpp-correction-headline (contents backend info)
    (when (and (org-export-derived-backend-p backend 'latex)
               (string-match "\\`.*correction.*\n" (downcase contents)))
(concat "\\begin{correction}" (replace-regexp-in-string "\\`.*correction.*\n" "" contents) "\\end{correction}"))
    )
(add-to-list 'org-export-filter-headline-functions 'cpp-correction-headline)
#+END_SRC

is doing what I want. So thanks for the insights and sorry for the noise.

Xavier



Xavier Garrido writes:

Dear orgers,

I would like to wrap a given org section between =\begin,\end= LaTeX
environment. These sections are identified by a special tag :correction:
and to initiate the =\begin= flag I have basically no problem by using
the  org-export-filter-headline-function filter. The problem comes when
I want to close the environment i.e. when another section starts. I have
try this piece of code

#+BEGIN_SRC emacs-lisp
    (setq correction-flag nil)
    (defun cpp-correction-headline (contents backend info)
      (if (and (org-export-derived-backend-p backend 'latex)
                 (string-match "\\`.*correction.*\n" (downcase contents)))
          (progn
            (setq correction-flag t)
            (replace-match "\\\\begin{correction}" nil nil contents)
            )
        (when correction-flag
          (setq correction-flag nil)
          (concat "\\end{correction}" contents))
        )
      )
    (add-to-list 'org-export-filter-headline-functions
'cpp-correction-headline)
#+END_SRC

but I get several =\end{correction}= in the produced LaTeX file.
Actually this is much more a emacs-lisp related question since the
boolean =correction-flag= seems not to work and I don't know why (of
course I have very little knowledge in lisp). Can some emacs-lisp
experts helps me understand why the above code just does not work.

Thanks a lot,
Xavier

--
Professor John Kitchin
Doherty Hall A207F
Department of Chemical Engineering
Carnegie Mellon University
Pittsburgh, PA 15213
412-268-7803
@johnkitchin
http://kitchingroup.cheme.cmu.edu




reply via email to

[Prev in Thread] Current Thread [Next in Thread]