|
@@ -383,11 +383,25 @@ are written as utf8 files."
|
|
|
|
|
|
(defcustom org-latex-title-command "\\maketitle"
|
|
|
"The command used to insert the title just after \\begin{document}.
|
|
|
-If this string contains the formatting specification \"%s\" then
|
|
|
-it will be used as a formatting string, passing the title as an
|
|
|
-argument."
|
|
|
+
|
|
|
+This format string may contain these elements:
|
|
|
+
|
|
|
+ %a for AUTHOR keyword
|
|
|
+ %t for TITLE keyword
|
|
|
+ %k for KEYWORDS line
|
|
|
+ %d for DESCRIPTION line
|
|
|
+ %c for CREATOR line
|
|
|
+ %l for Language keyword
|
|
|
+ %L for capitalized language keyword
|
|
|
+ %D for DATE keyword
|
|
|
+
|
|
|
+If you need to use a \"%\" character, you need to escape it
|
|
|
+like that: \"%%\".
|
|
|
+
|
|
|
+Setting :latex-title-command in publishing projects will take
|
|
|
+precedence over this variable."
|
|
|
:group 'org-export-latex
|
|
|
- :type 'string)
|
|
|
+ :type '(string :tag "Format string"))
|
|
|
|
|
|
(defcustom org-latex-toc-command "\\tableofcontents\n\n"
|
|
|
"LaTeX command to set the table of contents, list of figures, etc.
|
|
@@ -397,20 +411,30 @@ the toc:nil option, not to those generated with #+TOC keyword."
|
|
|
:type 'string)
|
|
|
|
|
|
(defcustom org-latex-hyperref-template
|
|
|
- "\\hypersetup{\n pdfkeywords={%k},\n pdfsubject={%d},\n pdfcreator={%c}}\n"
|
|
|
+ "\\hypersetup{\n pdfauthor={%a},\n pdftitle={%t},\n pdfkeywords={%k},
|
|
|
+ pdfsubject={%d},\n pdfcreator={%c}, \n pdflang={%L}}\n"
|
|
|
"Template for hyperref package options.
|
|
|
|
|
|
-Value is a format string, which can contain the following placeholders:
|
|
|
+This format string may contain these elements:
|
|
|
|
|
|
+ %a for AUTHOR keyword
|
|
|
+ %t for TITLE keyword
|
|
|
%k for KEYWORDS line
|
|
|
%d for DESCRIPTION line
|
|
|
%c for CREATOR line
|
|
|
+ %l for Language keyword
|
|
|
+ %L for capitalized language keyword
|
|
|
+ %D for DATE keyword
|
|
|
+
|
|
|
+If you need to use a \"%\" character, you need to escape it
|
|
|
+like that: \"%%\".
|
|
|
|
|
|
-Set it to the empty string to ignore the command completely."
|
|
|
+Setting :latex-hyperref-template in publishing projects will take
|
|
|
+precedence over this variable."
|
|
|
:group 'org-export-latex
|
|
|
:version "25.1"
|
|
|
:package-version '(Org . "8.3")
|
|
|
- :type 'string)
|
|
|
+ :type '(string :tag "Format string"))
|
|
|
|
|
|
;;;; Headline
|
|
|
|
|
@@ -1193,6 +1217,33 @@ just outside of it."
|
|
|
INFO is a plist used as a communication channel."
|
|
|
(org-export-translate s :latex info))
|
|
|
|
|
|
+(defun org-latex--format-spec (info)
|
|
|
+ "Create a format-spec for document meta-data.
|
|
|
+INFO is a plist used as a communication channel."
|
|
|
+ (let ((objects '(bold code entity export-snippet inline-babel-call
|
|
|
+ inline-src-block italic latex-fragment
|
|
|
+ latex-math-block link macro strike-through
|
|
|
+ subscript superscript timestamp underline
|
|
|
+ verbatim))
|
|
|
+ (language (let ((lang (plist-get info :language)))
|
|
|
+ (or (cdr (assoc lang org-latex-babel-language-alist))
|
|
|
+ lang ""))))
|
|
|
+ `((?a . ,(or (org-export-data (plist-get info :author) info) ""))
|
|
|
+ (?t . ,(or (org-export-data (plist-get info :title) info) ""))
|
|
|
+ (?k . ,(org-export-data (org-latex--wrap-latex-math-block
|
|
|
+ (org-element-parse-secondary-string
|
|
|
+ (plist-get info :keywords) objects)
|
|
|
+ info)
|
|
|
+ info))
|
|
|
+ (?d . ,(org-export-data (org-latex--wrap-latex-math-block
|
|
|
+ (org-element-parse-secondary-string
|
|
|
+ (plist-get info :description) objects)
|
|
|
+ info)
|
|
|
+ info))
|
|
|
+ (?c . ,(if (plist-get info :with-creator) (plist-get info :creator) ""))
|
|
|
+ (?l . ,language)
|
|
|
+ (?L . ,(capitalize language))
|
|
|
+ (?D . ,(org-export-get-date info)))))
|
|
|
|
|
|
|
|
|
;;; Template
|
|
@@ -1201,7 +1252,8 @@ INFO is a plist used as a communication channel."
|
|
|
"Return complete document string after LaTeX conversion.
|
|
|
CONTENTS is the transcoded contents string. INFO is a plist
|
|
|
holding export options."
|
|
|
- (let ((title (org-export-data (plist-get info :title) info)))
|
|
|
+ (let ((title (org-export-data (plist-get info :title) info))
|
|
|
+ (spec (org-latex--format-spec info)))
|
|
|
(concat
|
|
|
;; Time-stamp.
|
|
|
(and (plist-get info :time-stamp-file)
|
|
@@ -1248,17 +1300,15 @@ holding export options."
|
|
|
;; Title
|
|
|
(format "\\title{%s}\n" title)
|
|
|
;; Hyperref options.
|
|
|
- (format-spec (plist-get info :latex-hyperref-template)
|
|
|
- (format-spec-make
|
|
|
- ?k (or (plist-get info :keywords) "")
|
|
|
- ?d (or (plist-get info :description)"")
|
|
|
- ?c (if (plist-get info :with-creator)
|
|
|
- (plist-get info :creator)
|
|
|
- "")))
|
|
|
+ (let ((template (plist-get info :latex-hyperref-template)))
|
|
|
+ (and (stringp template)
|
|
|
+ (format-spec template spec)))
|
|
|
;; Document start.
|
|
|
"\\begin{document}\n\n"
|
|
|
;; Title command.
|
|
|
- (let ((command (plist-get info :latex-title-command)))
|
|
|
+ (let* ((title-command (plist-get info :latex-title-command))
|
|
|
+ (command (and (stringp title-command)
|
|
|
+ (format-spec title-command spec))))
|
|
|
(org-element-normalize-string
|
|
|
(cond ((not (plist-get info :with-title)) nil)
|
|
|
((string= "" title) nil)
|