From 3d6e938c09f896c9c55575b318829d2ef7d1c9ea Mon Sep 17 00:00:00 2001 Message-ID: <3d6e938c09f896c9c55575b318829d2ef7d1c9ea.1712229941.git.yantar92@posteo.net> From: Ihor Radchenko Date: Thu, 4 Apr 2024 14:22:01 +0300 Subject: [PATCH] org-faq.org (How can I preserve faces...): Update answer * org-faq.org (How can I preserve faces when I export an agenda from the command line?): Fix the answer, making sure that the instructions actually work on the latest Org mode. Link: https://list.orgmode.org/orgmode/PS2P216MB113830307EE638A1FF044F55A024A@PS2P216MB1138.KORP216.PROD.OUTLOOK.COM/ --- org-faq.org | 51 +++++++++++++++++++++++++++++---------------------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/org-faq.org b/org-faq.org index 3674165c..f2b7d510 100644 --- a/org-faq.org +++ b/org-faq.org @@ -3643,41 +3643,48 @@ ** How can I preserve faces when I export an agenda from the command line? #+index: Export!Agenda #+index: Export!Faces -Normally, when you export an org file or an agenda view from within -emacs, htmlize will convert your face definitions to direct color css -styles inlined into each == object, resulting in an HTML output -that preserves the general look of your Org buffers and agenda views. +Normally, when you export an agenda view from within emacs, htmlize +will convert your face definitions to direct color css styles inlined +into each == object, resulting in an HTML output that preserves +the general look of your Org buffers and agenda views. Let's say you generate an export from the command line, such as the following: -: emacs -batch -l ~/.emacs -eval '(org-batch-agenda "e")' - -or - -: emacs -batch -l ~/.emacs -eval '(org-publish-all)' +: emacs -batch -l ~/.emacs.d/init.el \ +: -eval '(progn \ +: (org-agenda nil "a") \ +: (org-agenda-write "~/agenda.html"))' In such an instance, the exported HTML will contain only very basic color styles. The reason is that when Emacs is run in batch mode, it does not have a display and therefore only rudimentary face definitions. If you'd like to use more complex styles, you'll have to -make sure that the export process only assigns classes instead of -direct color values. This can be done by binding the variable -=org-export-htmlize-output-style= to =css= for the duration of the -export, for example with - -: emacs -batch -l ~/.emacs -: -eval '(let ((org-export-htmlize-generate-css (quote css))) -: (org-batch-agenda "e"))' +supply custom css styles to make these classes look any way you like. +To generate face definitions for a CSS file based on any faces you are +currently using in Emacs, you can use the following command: -Then you can use a style file to make these classes look any way you -like. To generate face definitions for a CSS file based on any faces -you are currently using in Emacs, you can use the following command: +#+begin_src emacs-lisp +(defun org-html-htmlize-generate-css-for-agenda () + "Create the CSS for all font definitions in the current Emacs session. +Unlike `org-html-htmlize-generate-css', do not prepend +`org-html-htmlize-font-prefix' to face names." + (interactive) + (require 'ox-html) + (let ((org-html-htmlize-font-prefix "")) + (org-html-htmlize-generate-css))) +#+end_src -: M-x org-export-htmlize-generate-css RET +: M-x org-html-htmlize-generate-css-for-agenda RET This will generate a == section, the content of -which you can add to your style file. +which you can manually copy to your style file: + +: emacs -batch -l ~/.emacs.d/init.el \ +: -eval '(let ((org-agenda-export-html-style \ +: "")) \ +: (org-agenda nil "a") \ +: (org-agenda-write "~/agenda.html"))' ** How can I avoid dark color background when exporting agenda to ps format? :PROPERTIES: -- 2.44.0