#ifndef PDFOPTIONS_H
#define PDFOPTIONS_H
+#include "OutputParams.h"
-#include <string>
-#include <debug.h>
-#include "support/docstream.h"
+#include "support/strfwd.h"
-using std::string;
+#include <string>
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
+ */
+ 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;
+
+
+ /**
+ * 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();
-
+ */
+ bool store_options;
};
} // namespace lyx
+
+#endif // PDFOPTIONS_H