lyx_mirror/src/PDFOptions.h
Uwe Stöhr d0cd79a7ed PDFOptions: patch by Pavel to store the settings when the user switches hyperref temporarily off
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20456 a592a061-630c-0410-9148-cb99ea01b6c8
2007-09-23 19:17:22 +00:00

154 lines
3.9 KiB
C++

// -*- C++ -*-
/**
* \file src/PDFOptions.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Pavel Sanda
*
* Full author contact details are available in file CREDITS.
*/
#ifndef PDFOPTIONS_H
#define PDFOPTIONS_H
#include "support/docstream.h"
namespace lyx {
class Lexer;
/// Options for PDF generation
/*
Possible cleanups, left for next fileformat change:
- bookmarksopenlevel is stored in .lyx as string;
after change to spinbox it would be appropriate
change to int.
- store_options flag can be completely replaced by
function store_options() doing essentialy the same
as empty() now.
*/
class PDFOptions {
public:
///
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(odocstringstream &) const;
/// read tokens from lyx header
std::string readToken(Lexer &lex, std::string const & token);
/// keep implicit hyperref settings
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
* expanded.
* 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
* 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
* 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
* \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
* (show bookmarks), and FullScreen.
* 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
* here, lyx format & latex writer is prepared.
* The only thing needed in such a case is wider Settings
* dialog -> PDFOptions.pagemode .
*/
std::string pagemode;
///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.
*/
std::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;
};
} // namespace lyx
#endif // PDFOPTIONS_H