Cool. You might want to change your string match to :correction: so you don't inadvertently wrap a section with the word correction in the body though. That seems like a possibility here.
Xavier Garrido writes: > 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 >> -- 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