#ifndef PDFOPTIONS_H
#define PDFOPTIONS_H
+#include "support/strfwd.h"
#include <string>
-#include "support/docstream.h"
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(); }
- /// check for string settings
+ /// 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(odocstringstream &) const;
+ void writeLaTeX(odocstream &, bool hyperref_already_provided) const;
/// read tokens from lyx header
std::string readToken(Lexer &lex, std::string const & token);
- /// keep implicit hyperref settings
+ /// set implicit settings for hyperref
void clear();
///
* Level (\maxdimen) to which bookmarks are open
* bookmarksopenlevel parameter
*/
- std::string bookmarksopenlevel;
+ int bookmarksopenlevel;
/**
* Allows link text to break across lines.
* breaklinks boolean false
bool colorlinks;
/**
* Adds backlink text to the end of each item in the bibliography,
- * as a list of section numbers.
+ * 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
+ * backref string empty(="section"), "false", "section", "slide", "page"
+ *
+ * Internally we use false/section/slide/pages. See also bug 5340.
*/
- bool pagebackref;
+ std::string backref;
/**
* Determines how the file is opening in Acrobat;
* the possibilities are None, UseThumbs (show thumbnails), UseOutlines
* dialog -> PDFOptions.pagemode .
*/
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;
/**
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_get() const;
+ std::string quoted_options_check(std::string const str) const;
/**