mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-22 13:18:28 +00:00
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:
parent
a3c01d2e25
commit
8b83daaef0
@ -95,55 +95,55 @@ 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, ";
|
||||
|
||||
// try to extract author and title from document when none is
|
||||
// explicitly given
|
||||
if (pdfusetitle && title.empty() && author.empty())
|
||||
opt += "pdfusetitle,";
|
||||
opt += "\n ";
|
||||
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) + ',';
|
||||
opt += "bookmarksopen=" + convert<string>(bookmarksopen) + ',';
|
||||
if (bookmarksopen)
|
||||
opt += "bookmarksopenlevel="
|
||||
+ convert<string>(bookmarksopenlevel) + ',';
|
||||
}
|
||||
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
|
||||
if (!title.empty())
|
||||
hyperset += "pdftitle={" + title + "},";
|
||||
if (!author.empty())
|
||||
hyperset += "\n pdfauthor={" + author + "},";
|
||||
if (!subject.empty())
|
||||
hyperset += "\n pdfsubject={" + subject + "},";
|
||||
if (!keywords.empty())
|
||||
hyperset += "\n pdfkeywords={" + keywords + "},";
|
||||
if (!quoted_options.empty()){
|
||||
hyperset += "\n ";
|
||||
hyperset += quoted_options;
|
||||
}
|
||||
hyperset = rtrim(hyperset,",");
|
||||
|
||||
opt += "bookmarks=" + convert<string>(bookmarks) + ',';
|
||||
if (bookmarks) {
|
||||
opt += "bookmarksnumbered=" + convert<string>(bookmarksnumbered) + ',';
|
||||
opt += "bookmarksopen=" + convert<string>(bookmarksopen) + ',';
|
||||
if (bookmarksopen)
|
||||
opt += "bookmarksopenlevel="
|
||||
+ convert<string>(bookmarksopenlevel) + ',';
|
||||
}
|
||||
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())
|
||||
hyperset += "\n pdfauthor={" + author + "},";
|
||||
if (!subject.empty())
|
||||
hyperset += "\n pdfsubject={" + subject + "},";
|
||||
if (!keywords.empty())
|
||||
hyperset += "\n pdfkeywords={" + keywords + "},";
|
||||
if (!quoted_options.empty()){
|
||||
hyperset += "\n ";
|
||||
hyperset += quoted_options;
|
||||
}
|
||||
hyperset = rtrim(hyperset,",");
|
||||
|
||||
// check if the hyperref settings use an encoding that exceeds
|
||||
// ours. If so, we have to switch to utf8.
|
||||
@ -164,16 +164,15 @@ 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).
|
||||
{
|
||||
opt = "\\hypersetup{" + opt + hyperset + "}\n";
|
||||
}
|
||||
// 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";
|
||||
}
|
||||
|
||||
lines = int(count(opt.begin(), opt.end(), '\n'));
|
||||
|
||||
@ -183,7 +182,11 @@ int PDFOptions::writeLaTeX(OutputParams & runparams, odocstream & os,
|
||||
<< setEncoding("UTF-8");
|
||||
++lines;
|
||||
}
|
||||
os << from_utf8(opt);
|
||||
// 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";
|
||||
|
Loading…
Reference in New Issue
Block a user