move LyXerr QString specialisation to support/qstring_helpers
[lyx.git] / src / PDFOptions.h
blob2fa661aa71782b8d0b81fa1905a38ee72c5ebb92
1 // -*- C++ -*-
2 /**
3 * \file src/PDFOptions.h
4 * This file is part of LyX, the document processor.
5 * Licence details can be found in the file COPYING.
7 * \author Pavel Sanda
9 * Full author contact details are available in file CREDITS.
12 #ifndef PDFOPTIONS_H
13 #define PDFOPTIONS_H
15 #include "support/strfwd.h"
17 #include <string>
19 namespace lyx {
21 class Lexer;
23 // FIXME UNICODE
24 // Write functions need to use odostream instead of ostream before
25 // we can use docstring instead of string.
27 /// Options for PDF generation
28 class PDFOptions {
29 public:
30 ///
31 PDFOptions() { clear(); }
32 /// check whether user added any settings for hyperref
33 bool empty() const;
34 /// output to lyx header
35 void writeFile(std::ostream &) const;
36 /// output to tex header
37 void writeLaTeX(odocstream &, bool hyperref_already_provided) const;
38 /// read tokens from lyx header
39 std::string readToken(Lexer &lex, std::string const & token);
40 /// set implicit settings for hyperref
41 void clear();
43 ///
44 bool use_hyperref;
45 ///
46 std::string title;
47 ///
48 std::string author;
49 ///
50 std::string subject;
51 ///
52 std::string keywords;
53 /**
54 * A set of Acrobat bookmarks are written, in a manner similar to the
55 * table of contents.
56 * bookmarks boolean true
58 bool bookmarks;
59 /**
60 * If Acrobat bookmarks are requested, include section numbers.
61 * bookmarksnumbered boolean false
63 bool bookmarksnumbered;
64 /**
65 * If Acrobat bookmarks are requested, show them with all the subtrees
66 * expanded.
67 * bookmarksopen boolean false
69 bool bookmarksopen;
70 /**
71 * Level (\maxdimen) to which bookmarks are open
72 * bookmarksopenlevel parameter
74 int bookmarksopenlevel;
75 /**
76 * Allows link text to break across lines.
77 * breaklinks boolean false
79 bool breaklinks;
80 /**
81 * The style of box around links; defaults to a box with lines of 1pt
82 * thickness, but the colorlinks option resets it to produce no border.
83 * pdfborder "0 0 1" / "0 0 0"
84 * Note that the color of link borders can be specified only as 3
85 * numbers in the range 0..1, giving an RGB color.
86 * You cannot use colors defined in TEX.
88 * We represent here only the last bit, there is no semantics in the
89 * first two. Morover the aim is not to represent the whole pdfborder,
90 * but just to deny the ugly boxes around pdf links.
92 bool pdfborder;
93 /**
94 * colorlinks boolean false
96 bool colorlinks;
97 /**
98 * Adds backlink text to the end of each item in the bibliography,
99 * as a list of section numbers.
100 * This can only work properly if there is a blank line after each
101 * \bibitem.
102 * backref boolean false
104 bool backref;
106 * Adds backlink text to the end of each item in the bibliography,
107 * as a list of page numbers.
108 * pagebackref boolean false
110 bool pagebackref;
112 * Determines how the file is opening in Acrobat;
113 * the possibilities are None, UseThumbs (show thumbnails), UseOutlines
114 * (show bookmarks), and FullScreen.
115 * If no mode if explicitly chosen, but the bookmarks option is set,
116 * UseOutlines is used.
117 * pagemode text empty
119 * We currently implement only FullScreen, but all modes can be saved
120 * here, lyx format & latex writer is prepared.
121 * The only thing needed in such a case is wider Settings
122 * dialog -> PDFOptions.pagemode .
124 std::string pagemode;
126 * Flag indicating whether hyperref tries to derive the values for
127 * pdftitle and pdfauthor from \title and \author.
128 * pdfusetitle boolean false
130 * Note that we use true as default value instead. The option is also
131 * used in latex output only when title and author is not filled.
133 bool pdfusetitle;
134 ///latex string
135 static const std::string pagemode_fullscreen;
137 * Additional parameters for hyperref given from user.
139 std::string quoted_options;
141 * Possible syntax check of users additional parameters here.
142 * Returns repaired string. For the time being only newlines
143 * are checked.
145 std::string quoted_options_check(std::string const str) const;
149 * Flag indicating whether user made some input into PDF preferences.
150 * We want to save options, when user decide to switch off PDF support
151 * for a while.
153 bool store_options;
156 } // namespace lyx
158 #endif // PDFOPTIONS_H