How to easily convert org to html
4/4/2026 / 3 minutes to read / Tags: blog
How to easily convert org to html
[2024-01-23 Tue]
Easy snippet to convert any org document to html
- put css files in
~/.emacs.d/org-css/(or change org-theme-css-dir) - run
toggle-org-custom-inline-stylein a org buffer associated with a file C-c C-eto export to html , it should ask you for a theme now
;; put your css files there(defvar org-theme-css-dir "~/.emacs.d/org-css/")
(defun toggle-org-custom-inline-style () (interactive) (let ((hook 'org-export-before-parsing-hook) (fun 'set-org-html-style)) (if (memq fun (eval hook)) (progn (remove-hook hook fun 'buffer-local) (message "Removed %s from %s" (symbol-name fun) (symbol-name hook))) (add-hook hook fun nil 'buffer-local) (message "Added %s to %s" (symbol-name fun) (symbol-name hook)))))
(defun org-theme () (interactive) (let* ((cssdir org-theme-css-dir) (css-choices (directory-files cssdir nil ".css$")) (css (completing-read "theme: " css-choices nil t))) (concat cssdir css)))
(defun set-org-html-style (&optional backend) (interactive) (when (or (null backend) (eq backend 'html)) (let ((f (or (and (boundp 'org-theme-css) org-theme-css) (org-theme)))) (if (file-exists-p f) (progn (set (make-local-variable 'org-theme-css) f) (set (make-local-variable 'org-html-head) (with-temp-buffer (insert "<style type=\"text/css\">\n<!--/*--><![CDATA[/*><!--*/\n") (insert-file-contents f) (goto-char (point-max)) (insert "\n/*]]>*/-->\n</style>\n") (buffer-string))) (set (make-local-variable 'org-html-head-include-default-style) nil) (message "Set custom style from %s" f)) (message "Custom header file %s doesnt exist")))))PS: picked up this snippet from u/aaptel just wrote this so others can find this snippet easier
← Back to blog