From 1513beb2ba4aa847eaeb3f5e9c86414e7f8d5cd3 Mon Sep 17 00:00:00 2001 From: Viktor Rosenfeld Date: Sun, 21 Apr 2013 13:41:22 +0200 Subject: [PATCH 2/4] ox-koma-letter.el: Set LCO option before other KOMA variables * ox-koma-letter.el (org-koma-letter-closing): More business-like closing. (org-koma-letter-from-address): Do not set default personal information. (org-koma-letter-opening): Gendered opening. (org-koma-letter-phone-number): Do not set default personal information. (org-koma-letter-sender): Use `#+SENDER:' instead of `#+AUTHOR:' because the latter is always set by the LaTeX exporter. (org-koma-letter-email): Duplicte `#+EMAIL:' in this exporter because it is always set by the LaTeX exporter. (koma-letter): Add additional `#+SENDER:' and `#+EMAIL:' to exporter (see above). (org-koma-letter-template): Set LCO before evaluating other KOMA variables if they are set; add `#+SENDER:' and `#+EMAIL:' to template (see above). The LCO file is set loaded first and KOMA variables are only set if their value is not `nil'. Example: #+LCO: Default #+SIGNATURE: A friend will result in the following LaTeX code: #+BEGIN_SRC latex \LoadLetterOption{Default} % LCO file, with default signature \setkomavar{signature}{A friend} % Overwrite signature #+END_SRC Other KOMA variables defined in the LCO file, e.g., `fromaddress', will not be overwritten. --- contrib/lisp/ox-koma-letter.el | 55 +++++++++++++++++++++++++++--------------- 1 file changed, 36 insertions(+), 19 deletions(-) diff --git a/contrib/lisp/ox-koma-letter.el b/contrib/lisp/ox-koma-letter.el index d8d32e7..5397cf0 100644 --- a/contrib/lisp/ox-koma-letter.el +++ b/contrib/lisp/ox-koma-letter.el @@ -80,22 +80,22 @@ :group 'org-export-koma-letter :type 'string) -(defcustom org-koma-letter-closing "See you soon," +(defcustom org-koma-letter-closing "Sincerely yours," "Koma-Letter's closing, as a string." :group 'org-export-koma-letter :type 'string) -(defcustom org-koma-letter-from-address "Somewhere \\ Over the rainbow." +(defcustom org-koma-letter-from-address nil "Sender's address, as a string." :group 'org-export-koma-letter :type 'string) -(defcustom org-koma-letter-opening "Dear Sir," +(defcustom org-koma-letter-opening "Dear Madam or Sir," "Letter's opening, as a string." :group 'org-export-koma-letter :type 'string) -(defcustom org-koma-letter-phone-number "00-00-00-00" +(defcustom org-koma-letter-phone-number nil "Sender's phone number, as a string." :group 'org-export-koma-letter :type 'string) @@ -105,18 +105,30 @@ :group 'org-export-koma-letter :type 'string) +(defcustom org-koma-letter-sender nil + "Sender's name, as a string." + :group 'org-export-koma-letter + :type 'string) + +(defcustom org-koma-letter-email nil + "Sender's email, as a string." + :group 'org-export-koma-letter + :type 'string) + ;;; Define Back-End (org-export-define-derived-backend 'koma-letter 'latex :options-alist - '((:closing "CLOSING" nil org-koma-letter-closing) + '((:lco "LCO" nil org-koma-letter-class-option-file) + (:sender "SENDER" nil org-koma-letter-sender newline) (:from-address "FROM_ADDRESS" nil org-koma-letter-from-address newline) - (:lco "LCO" nil org-koma-letter-class-option-file) - (:opening "OPENING" nil org-koma-letter-opening) (:phone-number "PHONE_NUMBER" nil org-koma-letter-phone-number) - (:signature "SIGNATURE" nil nil newline) - (:to-address "TO_ADDRESS" nil nil newline)) + (:email "EMAIL" nil org-koma-letter-email) + (:to-address "TO_ADDRESS" nil nil newline) + (:opening "OPENING" nil org-koma-letter-opening) + (:closing "CLOSING" nil org-koma-letter-closing) + (:signature "SIGNATURE" nil org-koma-letter-signature newline)) :translate-alist '((export-block . org-koma-letter-export-block) (export-snippet . org-koma-letter-export-snippet) (keyword . org-koma-letter-keyword) @@ -197,18 +209,23 @@ holding export options." (concat (plist-get info :latex-header) (plist-get info :latex-header-extra)))) info))))) - ;; Define "From" data. - (format "\\setkomavar{fromname}{%s}\n" - (org-export-data (plist-get info :author) info)) - (format "\\setkomavar{fromaddress}{%s}\n" (plist-get info :from-address)) - (format "\\setkomavar{signature}{%s}\n" (plist-get info :signature)) - (format "\\setkomavar{fromemail}{%s}\n" - (org-export-data (plist-get info :email) info)) - (format "\\setkomavar{fromphone}{%s}\n" (plist-get info :phone-number)) + (let ((lco (plist-get info :lco)) + (sender (plist-get info :sender)) + (from-address (plist-get info :from-address)) + (phone-number (plist-get info :phone-number)) + (email (plist-get info :email)) + (signature (plist-get info :signature))) + (concat + ;; Letter Class Option File + (when lco (format "\\LoadLetterOption{%s}\n" lco)) + ;; Define "From" data. + (when sender (format "\\setkomavar{fromname}{%s}\n" sender)) + (when from-address (format "\\setkomavar{fromaddress}{%s}\n" from-address)) + (when phone-number (format "\\setkomavar{fromphone}{%s}\n" phone-number)) + (when email (format "\\setkomavar{fromemail}{%s}\n" email)) + (when signature (format "\\setkomavar{signature}{%s}\n" signature)))) ;; Date. (format "\\date{%s}\n" (org-export-data (org-export-get-date info) info)) - ;; Letter Class Option File - (format "\\LoadLetterOption{%s}\n" (plist-get info :lco)) ;; Letter start. "\\begin{document}\n\n" (format "\\setkomavar{subject}{%s}\n\n" -- 1.8.2