(defun org-lsf-gen-header (docinfo) (let ((my-org-doc-tags '(("THEME" . nil) ("REVIEWERS" . "docreviewers") ("VERSION" . "docversion") ("STATUS" . "docstatus") ("CIRCULATION" . "circulation") ("PROJDESCR" . "docdescription") ("CONTRIBUTORS" . "contributors") ("TYPE" . "doctype") ("PROJID" . "projid") ("PRODVER" . "productversion") ("PRODNAME" . "productname") ("PROJNAME" . "projname") ("PROJECT" . "docname") ("AUTHOR" . "docauthor")))) (concat "\\usepackage{mythemes}\n" (apply #'concat (mapcar #'(lambda (tag) (let ((tagname (car tag)) (cmd (cdr tag))) (let ((v (cdr (assoc tagname docinfo)))) (when cmd (concat "\\newcommand\\" cmd "{" (if v v "") "}\n"))))) my-org-doc-tags)) "\\newcommand\\docupdate{\\today}\n"))) (defun org-lsf-gen-title (docinfo) (let ((history "")) (org-table-map-tables #'(lambda () (let ((tblname (my-org-get-table-name))) (when (string= tblname "document-history") (let ((table (buffer-substring-no-properties (org-table-begin) (org-table-end)))) (setq history (let ((params (list :tstart "\\begin{dochistory}" :tend "\\end{dochistory}" :lstart "" :lend "\\\\" :sep " & " :efmt "%s\\,(%s)" :hline "\\hline"))) (orgtbl-to-generic (org-table-to-lisp table) params))))))) t) (concat "\\ibmcoverpage\n\\projectinfo\n" history "\n\\newpage\n"))) (defun org-lsf-put-info (info docinfo) (plist-put info :latex-header-extra (org-lsf-gen-header docinfo)) (plist-put info :latex-title-command (org-lsf-gen-title docinfo)) info) ;;;###autoload (defun org-lsf-theme-latex-template (content info docinfo) (list (concat "\\newpage\n" content) (org-lsf-put-info info docinfo))) (provide 'org-lsf-theme)