The appended patch allows for custom layouts of the exported XHTML. As the custom elements are added literally, PHP code could be added too. Everyone who's informed about my elisp skills will read this with appropriate scepticism :) It's merely a proof of conncept, a suggestion. Maybe we could find a more `template' based solution to make this easier on non-lispers. I didn't implement all the containers mentioned in the docstring of `org-exp-custom-html-function' yet, but it's just adding two lines per block. If you add this patch, you'll be able to do the following: 1.) Define a function that add custom HTML elements. This example will produce a table layout with the TOC on the left, contents on the right. Title and postamble will span both columns. (defun sr-org-export-custom-html(which &optional element-start) "See the docs of org-exp-custom-html-function" (cond ((string= which "body") (if element-start "
" "
")) ((string= which "title") (if element-start "
" "
")) ((string= which "toc") (if element-start "" "")) ((string= which "postamble") (if element-start "
" "
")) )) 2.) Add a line to your `org-publish-project-alist'. ("org-notes" ;; .... :publishing-directory "~/develop/htdocs/org-notes/" ;; Tell org-exp.el to use a custom function: :publishing-function org-publish-org-to-html ;; .... 3.) Apply this patch to the current head: