Hi,

"Sebastien Vauban" wrote:
> Sébastien Vauban wrote:
>> Jonathan BISSON wrote:
>>> Sébastien Vauban <wxhgmqzgwmuf@...> writes:
>>>> After a couple of tests, I've observed that the postamble is forced to be
>>>> included *inside* the div "content".
>>>>
>>>> Proof on Line 1764... These are the ending tags of every HTML page:
>>>>
>>>> #+begin_src emacs-lisp
>>>>       (unless body-only (insert "\n</div>\n</body>\n</html>\n"))
>>>> #+end_src
>>>>
>>>> ... the closing </div> referring to the opening of "content".
>>>>
>>>> Shouldn't it make sense to be able to insert something *out of* the
>>>> "content" div?
>>>
>>> I think so (and the same for preamble)!
>>>
>>> I rewrote org-export-as-html and did a custom org-publish-org-to-html to
>>> call it, in order to get them out off the content div (you can look at a
>>> first test on my webpage http://www.bjonnh.net). It's easy to do it I can
>>> send you my file if you are interested.
>>
>> I think sharing the code here is always a good idea.
>>
>> However, I'd favor an approach commonly shared by others, ie by either:
>>
>> - moving the postamble out of the content DIV
>>
>> - adding an extra "environment" next to the content DIV, if the postamble 
>> must
>>   stay where it currently is -- for historical or compliance reasons?
>>
>> (same applies for preamble)
>
> I'm hijacking my own thread, as it received little support, and as the new
> question is quite related to that:
>
> - if we customize the preamble, our string will be inserted as is;
>
> - if we customize the postamble, our string will be inserted as is... between
>   a wrapping div called "postamble".
>
> Shouldn't it be normal to apply the same reasoning for both cases: either
> impose a wrapper, either not?
>
>> Any comment for others?

Except for the reply of Jonathan, I received no answer on this. Here is thus
my proposition for a better div-structured HTML.

There are only four parts required in the HTML for all the magic to work with
the CSS:

- The first part is a container div ("content", by default) that surrounds
  everything.

- Inside that are three more parts:
  + a preamble (in a div, if the user wants it),
  + a div "body" and
  + a postamble (in a div, if the user wants it).

The patch is attached.

Best regards,
  Seb

-- 
Sebastien Vauban
diff --git a/lisp/org-html.el b/lisp/org-html.el
index f6108fc..daf61d2 100644
--- a/lisp/org-html.el
+++ b/lisp/org-html.el
@@ -1325,7 +1325,10 @@ lang=\"%s\" xml:lang=\"%s\">
 				      org-export-html-preamble-format))
 			 (cadr (assoc "en" org-export-html-preamble-format)))
 		     `((?t . ,title) (?a . ,author)
-		       (?d . ,date) (?e . ,email)))))))))
+		       (?d . ,date) (?e . ,email))))))))
+
+	;; insert opening tag for body
+	(insert "\n<div id=\"body\">\n"))
 
       (if (and org-export-with-toc (not body-only))
 	  (progn
@@ -1721,6 +1724,8 @@ lang=\"%s\" xml:lang=\"%s\">
 
       ;; export html postamble
       (unless body-only
+	;; insert closing tag for body
+	(insert "</div>")
 	(let ((html-post (plist-get opt-plist :html-postamble))
 	      (email
 	       (mapconcat (lambda(e)
@@ -1732,12 +1737,13 @@ lang=\"%s\" xml:lang=\"%s\">
 		       (number-to-string emacs-major-version))))
 	  (when (plist-get opt-plist :html-postamble)
 	    (cond ((stringp html-post)
-		   (insert "<div id=\"postamble\">\n")
+		   ;; (insert "<div id=\"postamble\">\n")
 		   (insert (format-spec html-post
 					`((?a . ,author) (?e . ,email)
 					  (?d . ,date)   (?c . ,creator-info)
 					  (?v . ,html-validation-link))))
-		   (insert "</div>"))
+		   ;; (insert "</div>")
+		   )
 		  ((functionp html-post)
 		   (funcall html-post opt-plist))
 		  ((eq html-post 'auto)

Reply via email to