Rasmus <ras...@gmx.us> writes:

> As said, I'd prefer load hyperref via org-latex-hyperref-template, but
> it's probably too big a change too late.  Though, it would resolve the
> "issue" that if I do
>
>    (setq org-latex-default-packages-alist
>          (delete '("" "hyperref" nil)
>                  org-latex-default-packages-alist))
>
> Hypersetup is still inserted.

The issue is not to remove hyperref, which is a default package for
a good reason. The problem is to require titletoc before hyperref.

IOW, this is orthogonal to the problem at hand.

> Of course, but isn't it contradicting the docstring of
> org-latex-default-packages-alist?

No it isn't. It is a defcustom after all, and the manual can ensure the
user knows what he is doing.

> Unless I've managed to convenience you otherwise I will add a footnote
> explaining and recommending the following snippet
>
> (with-eval-after-load 'ox-latex
>   (require 'cl)
>   (let* ((packages (mapcar (lambda (elt) (and (listp elt) (nth 1 elt)))
>                            org-latex-default-packages-alist))
>          (pos (position "hyperref" packages :test 'equal))
>          (titletocp (member "titletoc" packages)))
>     (when (and pos (not titletocp))
>       (push '("" "titletoc" nil)
>             (nthcdr pos org-latex-default-packages-alist)))))

It is way too opaque IMO. Suggesting to put ("" "titletoc" nil) before
("" hyperref nil) should be enough.

Regards,

Reply via email to