X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FPDFOptions.cpp;h=6734beaafa78468d2c4fee5f9da6a2f23c2c886b;hb=af5f69cea77a4ebf277f0e951b66f1d833d46bf4;hp=664688826af18c979ca6de990577f3e3337eaeb1;hpb=c061e339f97b135a97d560904bb1a6884c91c57d;p=lyx.git diff --git a/src/PDFOptions.cpp b/src/PDFOptions.cpp index 664688826a..6734beaafa 100644 --- a/src/PDFOptions.cpp +++ b/src/PDFOptions.cpp @@ -61,13 +61,13 @@ void PDFOptions::writeFile(ostream & os) const return; if (!title.empty() ) - os << "\\pdf_title \"" << title << "\"\n"; + os << "\\pdf_title " << Lexer::quoteString(title) << '\n'; if (!author.empty()) - os << "\\pdf_author \"" << author << "\"\n"; + os << "\\pdf_author " << Lexer::quoteString(author) << '\n'; if (!subject.empty()) - os << "\\pdf_subject \"" << subject << "\"\n"; + os << "\\pdf_subject " << Lexer::quoteString(subject) << '\n'; if (!keywords.empty()) - os << "\\pdf_keywords \"" << keywords << "\"\n"; + os << "\\pdf_keywords " << Lexer::quoteString(keywords) << '\n'; os << "\\pdf_bookmarks " << convert(bookmarks) << '\n'; @@ -85,7 +85,7 @@ void PDFOptions::writeFile(ostream & os) const os << "\\pdf_pagemode " << pagemode << '\n'; if (!quoted_options.empty()) - os << "\\pdf_quoted_options \"" << quoted_options << "\"\n"; + os << "\\pdf_quoted_options " << Lexer::quoteString(quoted_options) << '\n'; } @@ -174,21 +174,15 @@ void PDFOptions::writeLaTeX(OutputParams & runparams, otexstream & os, opt = "\\hypersetup{" + rtrim(opt + hyperset, ",") + "}\n"; } - // hyperref expects LICR macros for non-ASCII chars. With Xe/LuaTeX utf-8 works, too. - // Usually, "(lua)inputenc" converts the input to LICR. + // hyperref expects LICR macros for non-ASCII chars. + // Usually, "(lua)inputenc" converts the input to LICR, with XeTeX utf-8 works, too. // As hyperref provides good coverage for \inputencoding{utf8}, we can try // this if the current input encoding does not support a character. - // FIXME: inputenc (part 1 of 2) - // Replace the "FullUnicode" check with - // check for loading of inputenc or luainputenc package - // (see BufferParams::writeEncodingPreamble and runparams.encoding->package()). - // Otherwise \inputencoding is not defined - // (e.g. if "latex-encoding" is set to "ascii"). - // Dont forget to keep the check below (part 2) in sync! - if (need_unicode && enc && enc->iconvName() != "UTF-8" - &&!runparams.isFullUnicode()) { - os << "\\inputencoding{utf8}\n" - << setEncoding("UTF-8"); + // FIXME: don't use \inputencoding if "inputenc" is not loaded (#9839). + if (need_unicode && enc && enc->iconvName() != "UTF-8") { + if (runparams.flavor != OutputParams::XETEX) + os << "\\inputencoding{utf8}\n"; + os << setEncoding("UTF-8"); } // If hyperref is loaded by the document class, we output // \hypersetup \AtBeginDocument if hypersetup is not (yet) @@ -204,11 +198,10 @@ void PDFOptions::writeLaTeX(OutputParams & runparams, otexstream & os, << "\\fi\n"; } else os << from_utf8(opt); - // FIXME: inputenc (part 2 of 2) - if (need_unicode && enc && enc->iconvName() != "UTF-8" - &&!runparams.isFullUnicode()) { - os << setEncoding(enc->iconvName()) - << "\\inputencoding{" << from_ascii(enc->latexName()) << "}\n"; + if (need_unicode && enc && enc->iconvName() != "UTF-8") { + os << setEncoding(enc->iconvName()); + if (runparams.flavor != OutputParams::XETEX) + os << "\\inputencoding{" << from_ascii(enc->latexName()) << "}\n"; } } @@ -218,13 +211,25 @@ string PDFOptions::readToken(Lexer &lex, string const & token) if (token == "\\use_hyperref") { lex >> use_hyperref; } else if (token == "\\pdf_title") { - lex >> title; + if (lex.isOK()) { + lex.next(true); + title = lex.getString(); + } } else if (token == "\\pdf_author") { - lex >> author; + if (lex.isOK()) { + lex.next(true); + author = lex.getString(); + } } else if (token == "\\pdf_subject") { - lex >> subject; + if (lex.isOK()) { + lex.next(true); + subject = lex.getString(); + } } else if (token == "\\pdf_keywords") { - lex >> keywords; + if (lex.isOK()) { + lex.next(true); + keywords = lex.getString(); + } } else if (token == "\\pdf_bookmarks") { lex >> bookmarks; } else if (token == "\\pdf_bookmarksnumbered") { @@ -246,7 +251,10 @@ string PDFOptions::readToken(Lexer &lex, string const & token) } else if (token == "\\pdf_pagemode") { lex >> pagemode; } else if (token == "\\pdf_quoted_options") { - lex >> quoted_options; + if (lex.isOK()) { + lex.next(true); + quoted_options = lex.getString(); + } } else { return token; }