emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [O] [ox-html] Multiple wraps around sections


From: Nicolas Goaziou
Subject: Re: [O] [ox-html] Multiple wraps around sections
Date: Sun, 16 Mar 2014 14:23:49 +0100

Hello,

Rasmus <address@hidden> writes:

> The thing is semantics are pretty easy to mess up in HTML-like
> languages compared to, say, LaTeX, since I have to figure out the
> ending point.

You don't have to figure that out. When using a headline filter, the
first headline relative tag always opens the current headline and the
last one always close it. Of course, this assumes that you can recognize
a top level headline just by looking at its tags.

> A short trial suggests that this filter does the job:
>
> #+begin_src html
> (defun rasmus/org-html-headline-add-extra-div (headline backend info)
>   "Add an extra :html-container around top level sections."
>   (when (org-export-derived-backend-p backend 'html)
>     (let ((element
>            (plist-get (text-properties-at (next-property-change 0 headline) 
> headline) :parent)))
>       (when (= 1 (org-element-property :level element))
>         (save-match-data
>           (string-match "\n" headline)
>           (concat
>            (replace-match
>             (format "\n<%s class=\"outline-container-top\">\n" 
> (org-html--container element info))
>             t nil headline)
>            (format "</%s>\n" (org-html--container element info))))))))
> #+end_html
>
> The critical part is the next-property-change.  I assume that the
> first element is always the headline in question.
> (Do you know if this is generally true, Nicolas?)

This will not always work. Text properties only exist on raw text. If
a headline do not contain raw text at all, like the following one,

  * =Verbatim=

you will not get the correct element.


Regards,

-- 
Nicolas Goaziou



reply via email to

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