X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FPDFOptions.h;h=d74caf430e638c65cd353970b6bdc0f2554113df;hb=28be7d552f62cc02fa86d7f79201d089bfb2d7b5;hp=395bef704888014654e60f59d581b8499d2a86ef;hpb=d71a15c59326771c89d62df9091ade004ee8120b;p=lyx.git diff --git a/src/PDFOptions.h b/src/PDFOptions.h index 395bef7048..d74caf430e 100644 --- a/src/PDFOptions.h +++ b/src/PDFOptions.h @@ -12,132 +12,136 @@ #ifndef PDFOPTIONS_H #define PDFOPTIONS_H +#include "OutputParams.h" -#include -#include -#include "support/docstream.h" +#include "support/strfwd.h" -using std::string; +#include namespace lyx { class Lexer; +// FIXME UNICODE +// Write functions need to use odostream instead of ostream before +// we can use docstring instead of string. + /// Options for PDF generation class PDFOptions { public: - PDFOptions() { clear(); } - /// - bool use_hyperref; - /// - string title; - /// - string author; - /// - string subject; - /// - string keywords; - /*! - * A set of Acrobat bookmarks are written, in a manner similar to the + /// + PDFOptions() { clear(); } + /// check whether user added any settings for hyperref + bool empty() const; + /// output to lyx header + void writeFile(std::ostream &) const; + /// output to tex header + void writeLaTeX(OutputParams &, otexstream &, + bool hyperref_already_provided) const; + /// read tokens from lyx header + std::string readToken(Lexer &lex, std::string const & token); + /// set implicit settings for hyperref + void clear(); + + /// + bool use_hyperref; + /// + std::string title; + /// + std::string author; + /// + std::string subject; + /// + std::string keywords; + /** + * A set of Acrobat bookmarks are written, in a manner similar to the * table of contents. - * bookmarks boolean true - */ - bool bookmarks; - /*! - * If Acrobat bookmarks are requested, include section numbers. - * bookmarksnumbered boolean false - */ - bool bookmarksnumbered; - /*! - * If Acrobat bookmarks are requested, show them with all the subtrees + * bookmarks boolean true + */ + bool bookmarks; + /** + * If Acrobat bookmarks are requested, include section numbers. + * bookmarksnumbered boolean false + */ + bool bookmarksnumbered; + /** + * If Acrobat bookmarks are requested, show them with all the subtrees * expanded. - * bookmarksopen boolean false - */ - bool bookmarksopen; - /*! - * Level (\maxdimen) to which bookmarks are open - * bookmarksopenlevel parameter - */ - string bookmarksopenlevel; - /*! - * Allows link text to break across lines. - * breaklinks boolean false - */ - bool breaklinks; - /*! - * The style of box around links; defaults to a box with lines of 1pt + * bookmarksopen boolean false + */ + bool bookmarksopen; + /** + * Level (\maxdimen) to which bookmarks are open + * bookmarksopenlevel parameter + */ + int bookmarksopenlevel; + /** + * Allows link text to break across lines. + * breaklinks boolean false + */ + bool breaklinks; + /** + * The style of box around links; defaults to a box with lines of 1pt * thickness, but the colorlinks option resets it to produce no border. - * pdfborder "0 0 1" / "0 0 0" - * Note that the color of link borders can be specified only as 3 + * pdfborder "0 0 1" / "0 0 0" + * Note that the color of link borders can be specified only as 3 * numbers in the range 0..1, giving an RGB color. * You cannot use colors defined in TEX. - * - * We represent here only the last bit, there is no semantics in the + * + * We represent here only the last bit, there is no semantics in the * first two. Morover the aim is not to represent the whole pdfborder, * but just to deny the ugly boxes around pdf links. - */ - bool pdfborder; - /*! - * colorlinks boolean false - */ - bool colorlinks; - /*! - * Adds backlink text to the end of each item in the bibliography, - * as a list of section numbers. - * This can only work properly if there is a blank line after each + */ + bool pdfborder; + /** + * colorlinks boolean false + */ + bool colorlinks; + /** + * Adds backlink text to the end of each item in the bibliography, + * as a list of section/slide/page numbers. + * This can only work properly if there is a blank line after each * \bibitem. - * backref boolean false - */ - bool backref; - /*! - * Adds backlink text to the end of each item in the bibliography, - * as a list of page numbers. - * pagebackref boolean false - */ - bool pagebackref; - /*! - * Determines how the file is opening in Acrobat; - * the possibilities are None, UseThumbs (show thumbnails), UseOutlines + * backref string empty(="section"), "false", "section", "slide", "page" + * + * Internally we use false/section/slide/pages. See also bug 5340. + */ + std::string backref; + /** + * Determines how the file is opening in Acrobat; + * the possibilities are None, UseThumbs (show thumbnails), UseOutlines * (show bookmarks), and FullScreen. - * If no mode if explicitly chosen, but the bookmarks option is set, + * If no mode if explicitly chosen, but the bookmarks option is set, * UseOutlines is used. - * pagemode text empty - * - * We currently implement only FullScreen, but all modes can be saved + * pagemode text empty + * + * We currently implement only FullScreen, but all modes can be saved * here, lyx format & latex writer is prepared. - * The only thing needed in such a case is wider Settings + * The only thing needed in such a case is wider Settings * dialog -> PDFOptions.pagemode . - */ - string pagemode; - ///latex string - static const string pagemode_fullscreen; - /*! - * Additional parameters for hyperref given from user. - */ - string quoted_options; - /*! - * Possible syntax check of users additional parameters here. - */ - string quoted_options_get() const; - - - /*! - * Flag indicating whether user made some input into PDF preferences. - * We want to save options, when user decide to switch off PDF support - * for a while. - */ - bool store_options; - /// check for string settings - bool empty() const; - /// output to lyx header - void writeFile(std::ostream &) const; - /// output to tex header - void writeLaTeX(odocstream &) const; - /// read tokens from lyx header - string readToken(Lexer &lex, string const & token); - /// keep implicit hyperref settings - void clear(); - + */ + std::string pagemode; + /** + * Flag indicating whether hyperref tries to derive the values for + * pdftitle and pdfauthor from \title and \author. + * pdfusetitle boolean false + * + * Note that we use true as default value instead. The option is also + * used in latex output only when title and author is not filled. + */ + bool pdfusetitle; + ///latex string + static const std::string pagemode_fullscreen; + /** + * Additional parameters for hyperref given from user. + */ + std::string quoted_options; + /** + * Possible syntax check of users additional parameters here. + * Returns repaired string. For the time being only newlines + * are checked. + */ + std::string quoted_options_check(std::string const & str) const; }; } // namespace lyx