Hi Pierre, Bastien et al.,
Pierre de Buyl wrote:
> Le 8 juil. 11 à 09:36, Sebastien Vauban a écrit :
>>> 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).
>>
>> Any objection for applying this patch?
>
> Not at all.
After off-line discussion with Bastien, here is the updated proposition --
and patch!
There is no global DIV anymore directly inside the body, as there is already
(in CSS) a virtual DIV called "#body"...
Inside the "body" tags, 3 DIV:
- "preamble" (useful for adding a static menu, outside of the "content" DIV)
- "content" (by default, see "org-export-html-content-div")
- "postamble"
Preamble and postamble DIV are only inserted if they're not void.
The "content" DIV (name free to be customized) will always be inserted.
Any comment or objection?
Best regards,
Seb
--
Sebastien Vauban
diff --git a/lisp/org-html.el b/lisp/org-html.el
index 7bb8b61..8aff1c6 100644
--- a/lisp/org-html.el
+++ b/lisp/org-html.el
@@ -614,11 +614,6 @@ with a link to this URL."
(const :tag "Keep internal css" nil)
(string :tag "URL or local href")))
-(defcustom org-export-html-before-content-div ""
- "Arbitrary HTML code placed before <div id=\"content\">."
- :group 'org-export-html
- :type 'string)
-
(defcustom org-export-html-content-div "content"
"The name of the container DIV that holds all the page contents."
:group 'org-export-html
@@ -1300,8 +1295,6 @@ lang=\"%s\" xml:lang=\"%s\">
</head>
<body>
%s
-<div id=\"%s\">
-%s
"
(format
(or (and (stringp org-export-html-xml-declaration)
@@ -1317,8 +1310,6 @@ lang=\"%s\" xml:lang=\"%s\">
date author description keywords
style
mathjax
- org-export-html-before-content-div
- org-export-html-content-div
(if (or link-up link-home)
(concat
(format org-export-html-home/up-format
@@ -1330,6 +1321,7 @@ lang=\"%s\" xml:lang=\"%s\">
;; insert html preamble
(when (plist-get opt-plist :html-preamble)
(let ((html-pre (plist-get opt-plist :html-preamble)))
+ (insert "<div id=\"preamble\">")
(cond ((stringp html-pre)
(insert
(format-spec html-pre `((?t . ,title) (?a . ,author)
@@ -1343,8 +1335,13 @@ 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 "</div>\n")))
+ ;; begin wrap around body
+ (insert (format "\n<div id=\"%s\">" org-export-html-content-div)))
+
+ ;; insert body
(if (and org-export-with-toc (not body-only))
(progn
(push (format "<h%d>%s</h%d>\n"
@@ -1748,8 +1745,11 @@ lang=\"%s\" xml:lang=\"%s\">
(when bib
(insert "\n" bib "\n")))
- ;; export html postamble
(unless body-only
+ ;; end wrap around body
+ (insert "</div>\n")
+
+ ;; export html postamble
(let ((html-post (plist-get opt-plist :html-postamble))
(email
(mapconcat (lambda(e)
@@ -1759,19 +1759,18 @@ lang=\"%s\" xml:lang=\"%s\">
(creator-info
(concat "Org version " org-version " with Emacs version "
(number-to-string emacs-major-version))))
+
(when (plist-get opt-plist :html-postamble)
+ (insert "\n<div id=\"postamble\">")
(cond ((stringp html-post)
- (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>"))
+ (?v . ,html-validation-link)))))
((functionp html-post)
(funcall html-post))
((eq html-post 'auto)
;; fall back on default postamble
- (insert "<div id=\"postamble\">\n")
(when (plist-get opt-plist :time-stamp-file)
(insert "<p class=\"date\">" (nth 2 lang-words) ": " date "</p>\n"))
(when (and (plist-get opt-plist :author-info) author)
@@ -1782,22 +1781,22 @@ lang=\"%s\" xml:lang=\"%s\">
(insert "<p class=\"creator\">"
(concat "Org version " org-version " with Emacs version "
(number-to-string emacs-major-version) "</p>\n")))
- (insert html-validation-link "\n</div>"))
+ (insert html-validation-link "\n"))
(t
- (insert "<div id=\"postamble\">\n")
(insert (format-spec
(or (cadr (assoc (nth 0 lang-words)
org-export-html-postamble-format))
(cadr (assoc "en" org-export-html-postamble-format)))
`((?a . ,author) (?e . ,email)
(?d . ,date) (?c . ,creator-info)
- (?v . ,html-validation-link))))
- (insert "</div>"))))))
+ (?v . ,html-validation-link))))))
+ (insert "</div>")
+ )))
(if org-export-html-with-timestamp
(insert org-export-html-html-helper-timestamp))
- (unless body-only (insert "\n</div>\n</body>\n</html>\n"))
+ (unless body-only (insert "\n</body>\n</html>\n"))
(unless (plist-get opt-plist :buffer-will-be-killed)
(normal-mode)