* 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
This commit is contained in:
Jürgen Spitzmüller 2011-04-18 10:55:11 +00:00
parent 876f9c7797
commit cd20c9aa4f

View File

@ -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";
// \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 (hyperref_already_provided && !opt.empty())
os << "}";
if (need_unicode && enc && enc->iconvName() != "UTF-8"
&&!runparams.isFullUnicode()) {