PDFOptions.cpp:

- fix #4078
- fix #7052
- update/clarify a FIXME notice

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36396 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Uwe Stöhr 2010-11-19 04:21:24 +00:00
parent a3c01d2e25
commit 8b83daaef0

View File

@ -95,17 +95,20 @@ int PDFOptions::writeLaTeX(OutputParams & runparams, odocstream & os,
int lines = 0;
// FIXME Unicode
string opt;
string hyperset;
// since LyX uses unicode, also set the PDF strings to unicode strings with the
// hyperref option "unicode"
opt += "unicode=true, ";
opt += "unicode=true,";
// only use the hyperref settings if hyperref is enabled by the user
// see bug #7052
if(use_hyperref) {
// try to extract author and title from document when none is
// explicitly given
if (pdfusetitle && title.empty() && author.empty())
opt += "pdfusetitle,";
opt += "\n ";
opt += "bookmarks=" + convert<string>(bookmarks) + ',';
if (bookmarks) {
opt += "bookmarksnumbered=" + convert<string>(bookmarksnumbered) + ',';
@ -116,21 +119,16 @@ int PDFOptions::writeLaTeX(OutputParams & runparams, odocstream & os,
}
opt += "\n ";
opt += "breaklinks=" + convert<string>(breaklinks) + ',';
opt += "pdfborder={0 0 ";
opt += (pdfborder ? '0' : '1');
opt += "},";
opt += "backref=" + backref + ',';
opt += "colorlinks=" + convert<string>(colorlinks) + ',';
if (!pagemode.empty())
opt += "pdfpagemode=" + pagemode + ',';
// load the pdftitle etc. as hypersetup, otherwise you'll get
// LaTeX-errors when using non-latin characters
string hyperset;
if (!title.empty())
hyperset += "pdftitle={" + title + "},";
if (!author.empty())
@ -145,6 +143,8 @@ int PDFOptions::writeLaTeX(OutputParams & runparams, odocstream & os,
}
hyperset = rtrim(hyperset,",");
}
// check if the hyperref settings use an encoding that exceeds
// ours. If so, we have to switch to utf8.
Encoding const * const enc = runparams.encoding;
@ -164,14 +164,13 @@ int PDFOptions::writeLaTeX(OutputParams & runparams, odocstream & os,
if (!hyperset.empty())
opt += "\\hypersetup{" + hyperset + "}\n";
} else
} else {
// only in case hyperref is already loaded by the current text class
// try to put it into hyperset
//
// FIXME: this still does not fix the cases where hyperref is loaded
// and the option is active only when part of usepackage parameter
// (e.g. pdfusetitle).
{
// 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";
}
@ -183,7 +182,11 @@ int PDFOptions::writeLaTeX(OutputParams & runparams, odocstream & os,
<< setEncoding("UTF-8");
++lines;
}
// if hyperref is loaded by the document class and hyperset is empty,
// nothing must be output, see bug #7048
if (!(hyperref_already_provided && hyperset.empty()))
os << from_utf8(opt);
if (need_unicode && enc && enc->iconvName() != "UTF-8") {
os << setEncoding(enc->iconvName())
<< "\\inputencoding{" << from_ascii(enc->latexName()) << "}\n";