From cd20c9aa4fa2f8b32d5034bc7515700c24d5d440 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=BCrgen=20Spitzm=C3=BCller?= Date: Mon, 18 Apr 2011 10:55:11 +0000 Subject: [PATCH] * PDFOptions.cpp: If a class has already loaded hyperref (i.e., if \hypersetup is already defined), immediately issue \hypersetup to prevent a LaTeX error (bug #7459). This still assures that \hypersetup is called \AtBeginDocument if hyperref is loaded by a class \AtBeginDocument (such as modernCV, see #7048). git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38438 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/PDFOptions.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/PDFOptions.cpp b/src/PDFOptions.cpp index af36cf16a5..62d0480e1f 100644 --- a/src/PDFOptions.cpp +++ b/src/PDFOptions.cpp @@ -169,7 +169,7 @@ void PDFOptions::writeLaTeX(OutputParams & runparams, otexstream & os, // FIXME: rename in this case the PDF settings dialog checkbox // label from "Use Hyperref" to "Customize Hyperref Settings" // as discussd in bug #6293 - opt = "\\hypersetup{" + opt + hyperset + "}\n"; + opt = "\\hypersetup{" + rtrim(opt + hyperset, ",") + "}\n"; } // hyperref expects utf8! @@ -179,13 +179,19 @@ void PDFOptions::writeLaTeX(OutputParams & runparams, otexstream & os, << setEncoding("UTF-8"); } // If hyperref is loaded by the document class, we output - // \hypersetup \AtBeginDocument, since the class might - // load hyperref late, see bug #7048. - if (hyperref_already_provided && !opt.empty()) - os << "\\AtBeginDocument{%\n"; - os << from_utf8(opt); - if (hyperref_already_provided && !opt.empty()) - os << "}"; + // \hypersetup \AtBeginDocument if hypersetup is not (yet) + // defined. In this case, the class loads hyperref late + // (see bug #7048). + if (hyperref_already_provided && !opt.empty()) { + os << "\\ifx\\hypersetup\\undefined\n" + << " \\AtBeginDocument{%\n " + << from_utf8(opt) + << " }\n" + << "\\else\n " + << from_utf8(opt) + << "\\fi\n"; + } else + os << from_utf8(opt); if (need_unicode && enc && enc->iconvName() != "UTF-8" &&!runparams.isFullUnicode()) { -- 2.39.2