X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FPDFOptions.cpp;h=a3dd1f34e5b57e523cde903bab19e1eb57897e74;hb=0ed820fa0b8ea11a390c182286c5b34a2686058a;hp=6734beaafa78468d2c4fee5f9da6a2f23c2c886b;hpb=a5822a297629fbe497ac5a3eb05455f7bb45487c;p=lyx.git diff --git a/src/PDFOptions.cpp b/src/PDFOptions.cpp index 6734beaafa..a3dd1f34e5 100644 --- a/src/PDFOptions.cpp +++ b/src/PDFOptions.cpp @@ -15,9 +15,13 @@ #include "Encoding.h" #include "Lexer.h" +#include "OutputParams.h" +#include "texstream.h" #include "support/convert.h" #include "support/debug.h" +#include "support/docstream.h" +#include "support/docstring.h" #include "support/lstrings.h" #include @@ -59,7 +63,7 @@ void PDFOptions::writeFile(ostream & os) const os << "\\use_hyperref " << convert(use_hyperref) << '\n'; if (!use_hyperref && empty()) return; - + if (!title.empty() ) os << "\\pdf_title " << Lexer::quoteString(title) << '\n'; if (!author.empty()) @@ -68,22 +72,22 @@ void PDFOptions::writeFile(ostream & os) const os << "\\pdf_subject " << Lexer::quoteString(subject) << '\n'; if (!keywords.empty()) os << "\\pdf_keywords " << Lexer::quoteString(keywords) << '\n'; - - + + os << "\\pdf_bookmarks " << convert(bookmarks) << '\n'; os << "\\pdf_bookmarksnumbered " << convert(bookmarksnumbered) << '\n'; os << "\\pdf_bookmarksopen " << convert(bookmarksopen) << '\n'; os << "\\pdf_bookmarksopenlevel " << bookmarksopenlevel << '\n'; - + os << "\\pdf_breaklinks " << convert(breaklinks) << '\n'; os << "\\pdf_pdfborder " << convert(pdfborder) << '\n'; os << "\\pdf_colorlinks " << convert(colorlinks) << '\n'; os << "\\pdf_backref " << backref << '\n'; os << "\\pdf_pdfusetitle " << convert(pdfusetitle) << '\n'; - + if (!pagemode.empty()) os << "\\pdf_pagemode " << pagemode << '\n'; - + if (!quoted_options.empty()) os << "\\pdf_quoted_options " << Lexer::quoteString(quoted_options) << '\n'; } @@ -95,10 +99,17 @@ void PDFOptions::writeLaTeX(OutputParams & runparams, otexstream & os, // 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,"; + + // Driver needed by specific converters + if (!runparams.hyperref_driver.empty()) + opt += runparams.hyperref_driver + ","; + + // Since LyX uses unicode, also set the PDF strings to unicode strings + // with the hyperref option "unicode". (With Xe/LuaTeX and pTeX, + // unicode=true is the default, with Japanese (platex), the option + // leads to errors (even if the input encoding is UTF-8).) + if (!runparams.isFullUnicode() && !runparams.use_japanese) + opt += "unicode=true,"; // only use the hyperref settings if hyperref is enabled by the user // see bug #7052 @@ -132,7 +143,7 @@ void PDFOptions::writeLaTeX(OutputParams & runparams, otexstream & os, // LaTeX-errors when using non-latin characters if (!title.empty()) hyperset += "pdftitle={" + title + "},"; - if (!author.empty()) + if (!author.empty()) hyperset += "\n pdfauthor={" + author + "},"; if (!subject.empty()) hyperset += "\n pdfsubject={" + subject + "},"; @@ -151,8 +162,8 @@ void PDFOptions::writeLaTeX(OutputParams & runparams, otexstream & os, docstring const hs = from_utf8(hyperset); bool need_unicode = false; if (enc) { - for (size_t n = 0; n < hs.size(); ++n) { - if (!enc->encodable(hs[n])) + for (char_type h : hs) { + if (!enc->encodable(h)) need_unicode = true; } }