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)