62 lines
2.9 KiB
EmacsLisp
62 lines
2.9 KiB
EmacsLisp
|
|
(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)
|