emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] [patch, ox-latex] better hyperref and title options


From: Nicolas Goaziou
Subject: Re: [O] [patch, ox-latex] better hyperref and title options
Date: Fri, 13 Feb 2015 00:59:29 +0100

Hello,

Rasmus <address@hidden> writes:

> This patch does two things.
>
>      1. Add better format-spec to ox-latex hyperref and title-command.
>      2. Use this to extend basic hyperref formatting to include title,
>         author, language etc.
>
> Wrt the title-command, this is useful if you need one-off "custom"
> formatting of a header in LaTeX, e.g. in ox-publish projects.

OK.

>  (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."
> +
> +A number of formatting keys can be used to construct the command.
> +See `org-latex-format-spec'."

Since this is a defcustom, I think formatting keys should be listed in
full in its docstring.

>  (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:
> -
> -  %k for KEYWORDS line
> -  %d for DESCRIPTION line
> -  %c for CREATOR line
> +See `org-latex-format-spec' for placeholder keys.

Ditto.

> +(defun org-latex-format-spec (info)
> +  "Create a format-spec for e.g. `org-latex-hyperref-template'.
> +
> +Value is a format string, which can contain the following placeholders:
> +
> +  %a for AUTHOR keyword
> +  %t for TITLE keyword
> +  %k for KEYWORDS line
> +  %d for DESCRIPTION line
> +  %c for CREATOR line
> +  %l for Language keyword
> +  %D for DATE keyword"
> +
> +  `((?a . ,(or (org-export-data (plist-get info :author) info) ""))
> +    (?t . ,(or (org-export-data (plist-get info :title)  info) ""))
> +    (?k . ,(or (plist-get info :keywords) ""))
> +    (?d . ,(or (plist-get info :description) ""))
> +    (?c . ,(if (plist-get info :with-creator) (plist-get info :creator) ""))
> +    (?l . ,(or (plist-get info :language) ""))
> +    (?D . ,(org-export-data (org-export-get-date info) info))))

Please rename it `org-latex--format-spec', this is clearly an internal
function.

Also, its docstring should refer to INFO parameter.

> +     (let ((template (plist-get info :latex-hyperref-template)))
> +       (and (stringp template)
> +            (format-spec template
> +                         (org-latex-format-spec info))))
>       ;; 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
> +                                       (org-latex-format-spec info)))))

This is sub-optimal: you're building the spec twice. I suggest to use a

  (let ((spec (org-latex--format-spec info))))

somewhere above.

You can apply the changes once these issues are resolved.

Thank you.


Regards,

-- 
Nicolas Goaziou



reply via email to

[Prev in Thread] Current Thread [Next in Thread]