X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FPDFOptions.cpp;h=644f26e738bcfe49523dfd5991c8ece4d0b6c559;hb=99f2abf59fc88faeac69df6a64d0d2a3615c8972;hp=62794946be0d3040e9f7881af85969c03ae7faf9;hpb=804e9129105be3c813ec275c25b8db0148490e18;p=lyx.git diff --git a/src/PDFOptions.cpp b/src/PDFOptions.cpp index 62794946be..644f26e738 100644 --- a/src/PDFOptions.cpp +++ b/src/PDFOptions.cpp @@ -12,10 +12,11 @@ #include "PDFOptions.h" +#include "Lexer.h" + #include "support/convert.h" -#include "support/lstrings.h" #include "support/debug.h" -#include "Lexer.h" +#include "support/lstrings.h" #include #include @@ -87,11 +88,10 @@ void PDFOptions::writeFile(ostream & os) const } -void PDFOptions::writeLaTeX(odocstream & os) const +void PDFOptions::writeLaTeX(odocstream & os, bool hyperref_already_provided) const { string opt; - opt = "\\usepackage["; // since LyX uses unicode, also set the PDF strings to unicode strings with the // hyperref option "unicode" opt += "unicode=true, "; @@ -123,8 +123,7 @@ void PDFOptions::writeLaTeX(odocstream & os) const if (!pagemode.empty()) opt += "pdfpagemode=" + pagemode + ','; - opt = rtrim(opt,","); - opt += "]\n {hyperref}\n"; + // load the pdftitle etc. as hypersetup, otherwise you'll get // LaTeX-errors when using non-latin characters @@ -139,11 +138,28 @@ void PDFOptions::writeLaTeX(odocstream & os) const hyperset += "\n pdfkeywords={" + keywords + "},"; if (!quoted_options.empty()){ hyperset += "\n "; - hyperset += quoted_options_get(); + hyperset += quoted_options; } hyperset = rtrim(hyperset,","); - if (!hyperset.empty()) - opt += "\\hypersetup{" + hyperset + "}\n "; + + + // use in \\usepackage parameter as not all options can be handled inside \\hypersetup + if (!hyperref_already_provided) { + opt = rtrim(opt,","); + opt = "\\usepackage[" + opt + "]\n {hyperref}\n"; + + if (!hyperset.empty()) + opt += "\\hypersetup{" + hyperset + "}\n "; + } 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 UNICODE os << from_utf8(opt); @@ -193,10 +209,10 @@ string PDFOptions::readToken(Lexer &lex, string const & token) } -// prepared for check -string PDFOptions::quoted_options_get() const +// check the string from UI +string PDFOptions::quoted_options_check(string const str) const { - return quoted_options; + return subst(str, "\n", ""); }