2003-08-23 00:17:00 +00:00
|
|
|
/**
|
2007-04-26 04:41:58 +00:00
|
|
|
* \file BufferParams.cpp
|
2003-08-23 00:17:00 +00:00
|
|
|
* This file is part of LyX, the document processor.
|
|
|
|
* Licence details can be found in the file COPYING.
|
2002-03-21 17:27:08 +00:00
|
|
|
*
|
2003-08-23 00:17:00 +00:00
|
|
|
* \author Alfredo Braunstein
|
2008-11-14 15:58:50 +00:00
|
|
|
* \author Lars Gullik Bjønnes
|
2003-08-23 00:17:00 +00:00
|
|
|
* \author Jean-Marc Lasgouttes
|
|
|
|
* \author John Levon
|
2008-11-14 15:58:50 +00:00
|
|
|
* \author André Pönitz
|
2003-08-23 00:17:00 +00:00
|
|
|
* \author Martin Vermeer
|
2002-03-21 17:27:08 +00:00
|
|
|
*
|
2003-08-23 00:17:00 +00:00
|
|
|
* Full author contact details are available in file CREDITS.
|
|
|
|
*/
|
1999-09-27 18:44:28 +00:00
|
|
|
|
|
|
|
#include <config.h>
|
|
|
|
|
2007-04-26 04:41:58 +00:00
|
|
|
#include "BufferParams.h"
|
2003-09-06 23:36:02 +00:00
|
|
|
|
2007-04-26 04:41:58 +00:00
|
|
|
#include "Author.h"
|
2008-03-07 03:53:21 +00:00
|
|
|
#include "LayoutFile.h"
|
2003-09-09 17:00:19 +00:00
|
|
|
#include "BranchList.h"
|
This is one of a series of patches that will merge the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This first patch does some reworking of the infrastructrue. We need to distinguish between the TextClass that a particular document is using and the layout of that document, since modules, in particular, can modify the layout. The solution adopted here is to add a TextClass pointer to BufferParams, which will hold the layout. The layout itself is then constructed from the TextClass the document is using. At present, this is completely trivial, but that will change when modules are added.
The pointer in question is a boost::shared_ptr. This is needed because CutAndPaste saves a copy of the layout with each cut or copied selection. We cannot assume the selection vanishes when the document is closed, so there are two options: (i) keep a list of all the layouts that have ever been used by any document; (ii) used some kind of smart pointer. The latter seems preferable, as the former would waste memory. More importantly, the use of a smart pointer allows modules to be modified on disk and then reloaded while LyX is running, and it will eventually allow the same for layout files.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19756 a592a061-630c-0410-9148-cb99ea01b6c8
2007-08-23 16:41:13 +00:00
|
|
|
#include "buffer_funcs.h"
|
2003-09-06 23:36:02 +00:00
|
|
|
#include "Bullet.h"
|
2007-11-02 23:42:27 +00:00
|
|
|
#include "Color.h"
|
2009-02-09 23:30:24 +00:00
|
|
|
#include "ColorSet.h"
|
2007-04-26 04:41:58 +00:00
|
|
|
#include "Encoding.h"
|
2009-07-19 21:13:27 +00:00
|
|
|
#include "HSpace.h"
|
2009-04-16 07:29:01 +00:00
|
|
|
#include "IndicesList.h"
|
2007-04-26 04:41:58 +00:00
|
|
|
#include "Language.h"
|
2003-09-04 03:54:04 +00:00
|
|
|
#include "LaTeXFeatures.h"
|
This is one of a series of patches that will merge the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the backend. The ModuleList class holds a list of the available modules, which are retrieved from lyxmodules.lst, itself generated by configure.py. There are two LFUNs available: modules-clear and module-add, which do the obvious thing; you can test by typing these into the minibuffer, along with the name of one of the available modules: URL (a CharStyle), Endnote (a Custom Inset), and---with the spaces---End To Foot (View>LaTeX and look at the user preamble), which are themselves in lib/layouts. There are some others, too, that allow theorems to be added to classes like article and book.
The GUI will come next.
Issues: (i) The configure.py script could be improved. It'd be nice, for example, if it tested for the presence of the LaTeX packages a particular module needs. But this would mean re-working the LaTeX script, and I don't know how to do that. Note that at present, the packages are ignored. This will change shortly. (ii) I've used std::string in LyXModule, following what seemed to be a precedent in TextClass. If some of these should be docstrings, please let me know, and I'll change them. (iii) There is at present no distinction between LaTeX and DocBook modules. Should there be? That is: Should there be modules that are available when the document class is a LaTeX class and others that are available only when it is DocBook? Or should there just be one set of modules? Each module can of course indicate for what it is suitable in its description.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19893 a592a061-630c-0410-9148-cb99ea01b6c8
2007-08-29 17:59:49 +00:00
|
|
|
#include "ModuleList.h"
|
2007-04-29 18:17:15 +00:00
|
|
|
#include "Font.h"
|
2007-04-26 11:30:54 +00:00
|
|
|
#include "Lexer.h"
|
2007-04-26 04:41:58 +00:00
|
|
|
#include "LyXRC.h"
|
|
|
|
#include "OutputParams.h"
|
2003-09-09 17:00:19 +00:00
|
|
|
#include "Spacing.h"
|
2007-04-26 04:41:58 +00:00
|
|
|
#include "TexRow.h"
|
|
|
|
#include "VSpace.h"
|
2007-09-20 22:31:18 +00:00
|
|
|
#include "PDFOptions.h"
|
2001-12-28 13:26:54 +00:00
|
|
|
|
2007-04-28 20:44:46 +00:00
|
|
|
#include "frontends/alert.h"
|
2007-11-29 07:04:28 +00:00
|
|
|
|
Add support for listings package. Two listings command \lstinline, \lstinputlisting and an environment \lstlisting are supported, along with preamble \lstset. \lstinputlisting is implemented through Include dialog, and the other two are implemented with a new inset listings, along with its dialog.
* src/LyXAction.cpp: listing-insert action
* src/insets/Inset.h,cpp: LISTINGS_CODE
* src/insets/InsetInclude.cpp: handle \lstinputlisting
* src/insets/InsetListings.h,cpp: new listings inset
* src/insets/InsetListingsParams.h,cpp: parameters from listings package
* src/insets/InsetCommandParams.h,cpp: handle lstinputlisting option
* src/Bidi.cpp: handle LISTINGS_CODE
* src/frontends/qt4/ui/TextLayoutUi.ui: update UI
* src/frontends/qt4/ui/ListingsUi.ui: new dialog
* src/frontends/qt4/ui/IncludeUi.ui: update UI
* src/frontends/qt4/QInclude.h,cpp: add lstinputlisting
* src/frontends/qt4/QDocument.h,cpp: add textedit for preamble listings_params
* src/frontends/qt4/QListings.h,cpp: new listings inset
* src/frontends/qt4/Dialogs.cpp: new listings dialog
* src/frontends/controllers/ControlInclude.h,cpp: add lstinputlisting
* src/frontends/controllers/ControlListings.h,cpp: new listings inset
* src/LyXFunc.cpp: handle LISTING_CODE
* src/Paragraph.cpp: handle LISTING_CODE
* src/factory.cpp: new listings inset
* src/CutAndPaste.cpp: handle LISTINGS_CODE
* src/LaTeXFeatures.cpp: require listings
* src/Text3.cpp: Handle LISTINGS_CODE
* src/lfuns.h: add LFUN_LISTING_INSERT
* src/Buffer.cpp: change lyx file format to 269
* src/BufferParams.h,cpp: add listings_params to preamble
* lib/lyx2lyx/LyX.py: lyx2lyx
* lib/lyx2lyx/lyx_1_5.py: lyx2lyx
* lib/ui/stdmenus.inc: new menu item (no shortcut!)
* src/insets/Makefile.am: update autotools
* src/frontends/controllers/Makefile.am
* src/frontends/qt4/Makefile.dialogs
* src/frontends/qt4/Makefile.am
* po/POTFILES.in: a few more translatable files.
* development/scons/scons_manifest.py: scons build system
* development/FORMAT: document format changes
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18243 a592a061-630c-0410-9148-cb99ea01b6c8
2007-05-09 19:11:42 +00:00
|
|
|
#include "insets/InsetListingsParams.h"
|
2003-08-17 11:28:23 +00:00
|
|
|
|
2005-01-06 16:39:35 +00:00
|
|
|
#include "support/convert.h"
|
2007-11-29 07:04:28 +00:00
|
|
|
#include "support/debug.h"
|
2007-11-01 22:17:22 +00:00
|
|
|
#include "support/docstream.h"
|
2007-11-28 15:25:07 +00:00
|
|
|
#include "support/FileName.h"
|
This is one of a series of patches that will merge the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the backend. The ModuleList class holds a list of the available modules, which are retrieved from lyxmodules.lst, itself generated by configure.py. There are two LFUNs available: modules-clear and module-add, which do the obvious thing; you can test by typing these into the minibuffer, along with the name of one of the available modules: URL (a CharStyle), Endnote (a Custom Inset), and---with the spaces---End To Foot (View>LaTeX and look at the user preamble), which are themselves in lib/layouts. There are some others, too, that allow theorems to be added to classes like article and book.
The GUI will come next.
Issues: (i) The configure.py script could be improved. It'd be nice, for example, if it tested for the presence of the LaTeX packages a particular module needs. But this would mean re-working the LaTeX script, and I don't know how to do that. Note that at present, the packages are ignored. This will change shortly. (ii) I've used std::string in LyXModule, following what seemed to be a precedent in TextClass. If some of these should be docstrings, please let me know, and I'll change them. (iii) There is at present no distinction between LaTeX and DocBook modules. Should there be? That is: Should there be modules that are available when the document class is a LaTeX class and others that are available only when it is DocBook? Or should there just be one set of modules? Each module can of course indicate for what it is suitable in its description.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19893 a592a061-630c-0410-9148-cb99ea01b6c8
2007-08-29 17:59:49 +00:00
|
|
|
#include "support/filetools.h"
|
2007-11-29 07:04:28 +00:00
|
|
|
#include "support/gettext.h"
|
|
|
|
#include "support/Messages.h"
|
Rename files in src/support, step one.
src/support/package.h src/support/Package.h Package
src/support/package.C.in src/support/Package.C.in Package
src/support/path.h src/support/Path.h Path
src/support/fs_extras.h src/support/fs_extras.h NOCLASSES
src/support/RandomAccessList.h src/support/RandomAccessList.h RandomAccessList
src/support/lyxmanip.h src/support/lyxmanip.h NOCLASSES
src/support/rename.C src/support/rename.cpp NOCLASSES
src/support/abort.C src/support/abort.cpp NOCLASSES
src/support/lyxlib.h src/support/lyxlib.h NOCLASSES
src/support/ExceptionMessage.h src/support/ExceptionMessage.h ExceptionMessage
src/support/copy.C src/support/copy.cpp NOCLASSES
src/support/limited_stack.h src/support/limited_stack.h limited_stack
src/support/filefilterlist.C src/support/FileFilterList.cpp ['FileFilterList', 'Filter']
src/support/cow_ptr.h src/support/cow_ptr.h cow_ptr
src/support/os_unix.C src/support/os_unix.cpp NOCLASSES
src/support/socktools.h src/support/socktools.h NOCLASSES
src/support/forkedcontr.h src/support/ForkedcallsController.h ForkedcallsController
src/support/os.h src/support/os.h NOCLASSES
src/support/FileMonitor.h src/support/FileMonitor.h FileMonitor
src/support/copied_ptr.h src/support/copied_ptr.h copied_ptr
src/support/translator.h src/support/Translator.h Translator
src/support/filetools.C src/support/filetools.cpp NOCLASSES
src/support/unlink.C src/support/unlink.cpp NOCLASSES
src/support/os_win32.C src/support/os_win32.cpp GetFolderPath
src/support/lstrings.C src/support/lstrings.cpp NOCLASSES
src/support/qstring_helpers.C src/support/qstring_helpers.cpp NOCLASSES
src/support/getcwd.C src/support/getcwd.cpp NOCLASSES
src/support/systemcall.C src/support/Systemcall.cpp Systemcall
src/support/lyxalgo.h src/support/lyxalgo.h NOCLASSES
src/support/filefilterlist.h src/support/FileFilterList.h ['FileFilterList', 'Filter']
src/support/unicode.C src/support/unicode.cpp IconvProcessor
src/support/userinfo.C src/support/userinfo.cpp NOCLASSES
src/support/lyxtime.C src/support/lyxtime.cpp NOCLASSES
src/support/kill.C src/support/kill.cpp NOCLASSES
src/support/docstring.C src/support/docstring.cpp to_local8bit_failure
src/support/os_cygwin.C src/support/os_cygwin.cpp NOCLASSES
src/support/lyxsum.C src/support/lyxsum.cpp NOCLASSES
src/support/environment.C src/support/environment.cpp NOCLASSES
src/support/filetools.h src/support/filetools.h NOCLASSES
src/support/textutils.C src/support/textutils.cpp NOCLASSES
src/support/mkdir.C src/support/mkdir.cpp NOCLASSES
src/support/forkedcall.C src/support/Forkedcall.cpp ['ForkedProcess', 'Forkedcall']
src/support/tempname.C src/support/tempname.cpp NOCLASSES
src/support/os_win32.h src/support/os_win32.h GetFolderPath
src/support/types.h src/support/types.h NOCLASSES
src/support/lstrings.h src/support/lstrings.h NOCLASSES
src/support/forkedcallqueue.C src/support/ForkedCallQueue.cpp ForkedCallQueue
src/support/qstring_helpers.h src/support/qstring_helpers.h NOCLASSES
src/support/convert.C src/support/convert.cpp NOCLASSES
src/support/filename.C src/support/FileName.cpp ['FileName', 'DocFileName']
src/support/tests/convert.C src/support/tests/convert.cpp NOCLASSES
src/support/tests/filetools.C src/support/tests/filetools.cpp NOCLASSES
src/support/tests/lstrings.C src/support/tests/lstrings.cpp NOCLASSES
src/support/tests/boost.C src/support/tests/boost.cpp NOCLASSES
src/support/docstream.C src/support/docstream.cpp ['iconv_codecvt_facet_exception', 'idocfstream', 'odocfstream']
src/support/std_istream.h src/support/std_istream.h NOCLASSES
src/support/systemcall.h src/support/Systemcall.h Systemcall
src/support/chdir.C src/support/chdir.cpp NOCLASSES
src/support/std_ostream.h src/support/std_ostream.h NOCLASSES
src/support/unicode.h src/support/unicode.h IconvProcessor
src/support/path.C src/support/Path.cpp Path
src/support/fs_extras.C src/support/fs_extras.cpp NOCLASSES
src/support/userinfo.h src/support/userinfo.h NOCLASSES
src/support/lyxtime.h src/support/lyxtime.h NOCLASSES
src/support/docstring.h src/support/docstring.h to_local8bit_failure
src/support/debugstream.h src/support/debugstream.h basic_debugstream
src/support/environment.h src/support/environment.h NOCLASSES
src/support/textutils.h src/support/textutils.h NOCLASSES
src/support/forkedcall.h src/support/Forkedcall.h ['ForkedProcess', 'Forkedcall']
src/support/socktools.C src/support/socktools.cpp NOCLASSES
src/support/forkedcallqueue.h src/support/ForkedCallQueue.h ForkedCallQueue
src/support/forkedcontr.C src/support/ForkedcallsController.cpp ForkedcallsController
src/support/os.C src/support/os.cpp NOCLASSES
src/support/convert.h src/support/convert.h NOCLASSES
src/support/filename.h src/support/FileName.h ['FileName', 'DocFileName']
src/support/docstream.h src/support/docstream.h ['iconv_codecvt_facet_exception', 'idocfstream', 'odocfstream']
src/support/FileMonitor.C src/support/FileMonitor.cpp FileMonitor
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18024 a592a061-630c-0410-9148-cb99ea01b6c8
2007-04-26 05:12:52 +00:00
|
|
|
#include "support/Translator.h"
|
2007-09-20 22:31:18 +00:00
|
|
|
#include "support/lstrings.h"
|
2003-05-03 19:24:36 +00:00
|
|
|
|
2007-08-12 08:57:17 +00:00
|
|
|
#include <algorithm>
|
2004-07-24 10:55:30 +00:00
|
|
|
#include <sstream>
|
2000-02-22 00:36:17 +00:00
|
|
|
|
2007-12-12 10:16:00 +00:00
|
|
|
using namespace std;
|
2007-12-12 18:57:56 +00:00
|
|
|
using namespace lyx::support;
|
2007-04-30 21:01:24 +00:00
|
|
|
|
|
|
|
|
|
|
|
static char const * const string_paragraph_separation[] = {
|
|
|
|
"indent", "skip", ""
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
static char const * const string_quotes_language[] = {
|
|
|
|
"english", "swedish", "german", "polish", "french", "danish", ""
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
static char const * const string_papersize[] = {
|
2008-05-15 22:54:13 +00:00
|
|
|
"default", "custom", "letterpaper", "legalpaper", "executivepaper",
|
2010-05-18 01:22:08 +00:00
|
|
|
"a0paper", "a1paper", "a2paper", "a3paper", "a4paper", "a5paper",
|
|
|
|
"a6paper", "b0paper", "b1paper", "b2paper","b3paper", "b4paper",
|
|
|
|
"b5paper", "b6paper", "b0j", "b1j", "b2j", "b3j", "b4j", "b5j",
|
|
|
|
"b6j", ""
|
2007-04-30 21:01:24 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
static char const * const string_orientation[] = {
|
|
|
|
"portrait", "landscape", ""
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
static char const * const string_footnotekinds[] = {
|
|
|
|
"footnote", "margin", "fig", "tab", "alg", "wide-fig", "wide-tab", ""
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
static char const * const tex_graphics[] = {
|
2008-09-29 19:33:37 +00:00
|
|
|
"default", "dvialw", "dvilaser", "dvipdf", "dvipdfm", "dvipdfmx",
|
|
|
|
"dvips", "dvipsone", "dvitops", "dviwin", "dviwindo", "dvi2ps", "emtex",
|
|
|
|
"ln", "oztex", "pctexhp", "pctexps", "pctexwin", "pctex32", "pdftex",
|
|
|
|
"psprint", "pubps", "tcidvi", "textures", "truetex", "vtex", "xdvi",
|
|
|
|
"xetex", "none", ""
|
2007-04-30 21:01:24 +00:00
|
|
|
};
|
|
|
|
|
2004-05-19 15:11:37 +00:00
|
|
|
|
2009-04-06 06:58:30 +00:00
|
|
|
|
2007-04-30 21:01:24 +00:00
|
|
|
namespace lyx {
|
2003-05-13 16:24:49 +00:00
|
|
|
|
2004-10-05 13:18:28 +00:00
|
|
|
// Local translators
|
2004-08-20 13:06:33 +00:00
|
|
|
namespace {
|
|
|
|
|
2004-10-05 13:18:28 +00:00
|
|
|
// Paragraph separation
|
2008-03-15 00:22:54 +00:00
|
|
|
typedef Translator<string, BufferParams::ParagraphSeparation> ParSepTranslator;
|
2004-10-05 13:18:28 +00:00
|
|
|
|
|
|
|
|
2005-01-05 20:21:27 +00:00
|
|
|
ParSepTranslator const init_parseptranslator()
|
|
|
|
{
|
2008-03-15 00:22:54 +00:00
|
|
|
ParSepTranslator translator
|
|
|
|
(string_paragraph_separation[0], BufferParams::ParagraphIndentSeparation);
|
|
|
|
translator.addPair(string_paragraph_separation[1], BufferParams::ParagraphSkipSeparation);
|
2004-10-05 13:18:28 +00:00
|
|
|
return translator;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2005-01-05 20:21:27 +00:00
|
|
|
ParSepTranslator const & parseptranslator()
|
|
|
|
{
|
2004-10-05 13:18:28 +00:00
|
|
|
static ParSepTranslator translator = init_parseptranslator();
|
|
|
|
return translator;
|
|
|
|
}
|
|
|
|
|
2005-01-05 20:21:27 +00:00
|
|
|
|
2004-10-05 13:18:28 +00:00
|
|
|
// Quotes language
|
2008-03-15 00:22:54 +00:00
|
|
|
typedef Translator<string, InsetQuotes::QuoteLanguage> QuotesLangTranslator;
|
2004-10-05 13:18:28 +00:00
|
|
|
|
|
|
|
|
2005-01-05 20:21:27 +00:00
|
|
|
QuotesLangTranslator const init_quoteslangtranslator()
|
|
|
|
{
|
2008-03-15 00:22:54 +00:00
|
|
|
QuotesLangTranslator translator
|
|
|
|
(string_quotes_language[0], InsetQuotes::EnglishQuotes);
|
|
|
|
translator.addPair(string_quotes_language[1], InsetQuotes::SwedishQuotes);
|
|
|
|
translator.addPair(string_quotes_language[2], InsetQuotes::GermanQuotes);
|
|
|
|
translator.addPair(string_quotes_language[3], InsetQuotes::PolishQuotes);
|
|
|
|
translator.addPair(string_quotes_language[4], InsetQuotes::FrenchQuotes);
|
|
|
|
translator.addPair(string_quotes_language[5], InsetQuotes::DanishQuotes);
|
2004-10-05 13:18:28 +00:00
|
|
|
return translator;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2005-01-05 20:21:27 +00:00
|
|
|
QuotesLangTranslator const & quoteslangtranslator()
|
|
|
|
{
|
2004-10-05 13:18:28 +00:00
|
|
|
static QuotesLangTranslator translator = init_quoteslangtranslator();
|
|
|
|
return translator;
|
|
|
|
}
|
|
|
|
|
2005-01-05 20:21:27 +00:00
|
|
|
|
2004-10-05 13:18:28 +00:00
|
|
|
// Paper size
|
2007-12-12 19:28:07 +00:00
|
|
|
typedef Translator<string, PAPER_SIZE> PaperSizeTranslator;
|
2004-10-05 13:18:28 +00:00
|
|
|
|
|
|
|
|
2008-03-15 00:22:54 +00:00
|
|
|
static PaperSizeTranslator initPaperSizeTranslator()
|
2005-01-05 20:21:27 +00:00
|
|
|
{
|
2005-07-16 16:57:55 +00:00
|
|
|
PaperSizeTranslator translator(string_papersize[0], PAPER_DEFAULT);
|
|
|
|
translator.addPair(string_papersize[1], PAPER_CUSTOM);
|
|
|
|
translator.addPair(string_papersize[2], PAPER_USLETTER);
|
|
|
|
translator.addPair(string_papersize[3], PAPER_USLEGAL);
|
|
|
|
translator.addPair(string_papersize[4], PAPER_USEXECUTIVE);
|
2010-05-18 01:22:08 +00:00
|
|
|
translator.addPair(string_papersize[5], PAPER_A0);
|
|
|
|
translator.addPair(string_papersize[6], PAPER_A1);
|
|
|
|
translator.addPair(string_papersize[7], PAPER_A2);
|
|
|
|
translator.addPair(string_papersize[8], PAPER_A3);
|
|
|
|
translator.addPair(string_papersize[9], PAPER_A4);
|
|
|
|
translator.addPair(string_papersize[10], PAPER_A5);
|
|
|
|
translator.addPair(string_papersize[11], PAPER_A6);
|
|
|
|
translator.addPair(string_papersize[12], PAPER_B0);
|
|
|
|
translator.addPair(string_papersize[13], PAPER_B1);
|
|
|
|
translator.addPair(string_papersize[14], PAPER_B2);
|
|
|
|
translator.addPair(string_papersize[15], PAPER_B3);
|
|
|
|
translator.addPair(string_papersize[16], PAPER_B4);
|
|
|
|
translator.addPair(string_papersize[17], PAPER_B5);
|
|
|
|
translator.addPair(string_papersize[18], PAPER_B6);
|
|
|
|
translator.addPair(string_papersize[19], PAPER_JISB0);
|
|
|
|
translator.addPair(string_papersize[20], PAPER_JISB1);
|
|
|
|
translator.addPair(string_papersize[21], PAPER_JISB2);
|
|
|
|
translator.addPair(string_papersize[22], PAPER_JISB3);
|
|
|
|
translator.addPair(string_papersize[23], PAPER_JISB4);
|
|
|
|
translator.addPair(string_papersize[24], PAPER_JISB5);
|
|
|
|
translator.addPair(string_papersize[25], PAPER_JISB6);
|
2004-10-05 13:18:28 +00:00
|
|
|
return translator;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2005-01-05 20:21:27 +00:00
|
|
|
PaperSizeTranslator const & papersizetranslator()
|
|
|
|
{
|
2008-03-15 00:22:54 +00:00
|
|
|
static PaperSizeTranslator translator = initPaperSizeTranslator();
|
2004-10-05 13:18:28 +00:00
|
|
|
return translator;
|
|
|
|
}
|
|
|
|
|
2005-01-05 20:21:27 +00:00
|
|
|
|
2004-10-05 13:18:28 +00:00
|
|
|
// Paper orientation
|
2005-01-05 20:21:27 +00:00
|
|
|
typedef Translator<string, PAPER_ORIENTATION> PaperOrientationTranslator;
|
2004-10-05 13:18:28 +00:00
|
|
|
|
|
|
|
|
2005-01-05 20:21:27 +00:00
|
|
|
PaperOrientationTranslator const init_paperorientationtranslator()
|
|
|
|
{
|
2004-10-05 13:18:28 +00:00
|
|
|
PaperOrientationTranslator translator(string_orientation[0], ORIENTATION_PORTRAIT);
|
|
|
|
translator.addPair(string_orientation[1], ORIENTATION_LANDSCAPE);
|
|
|
|
return translator;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2005-01-05 20:21:27 +00:00
|
|
|
PaperOrientationTranslator const & paperorientationtranslator()
|
|
|
|
{
|
2004-10-05 13:18:28 +00:00
|
|
|
static PaperOrientationTranslator translator = init_paperorientationtranslator();
|
|
|
|
return translator;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Page sides
|
2007-11-07 23:25:08 +00:00
|
|
|
typedef Translator<int, PageSides> SidesTranslator;
|
2004-10-05 13:18:28 +00:00
|
|
|
|
|
|
|
|
2005-01-05 20:21:27 +00:00
|
|
|
SidesTranslator const init_sidestranslator()
|
|
|
|
{
|
2007-11-07 23:25:08 +00:00
|
|
|
SidesTranslator translator(1, OneSide);
|
|
|
|
translator.addPair(2, TwoSides);
|
2004-10-05 13:18:28 +00:00
|
|
|
return translator;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2005-01-05 20:21:27 +00:00
|
|
|
SidesTranslator const & sidestranslator()
|
|
|
|
{
|
2004-10-05 13:18:28 +00:00
|
|
|
static SidesTranslator translator = init_sidestranslator();
|
|
|
|
return translator;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2006-11-13 17:35:18 +00:00
|
|
|
// LaTeX packages
|
|
|
|
typedef Translator<int, BufferParams::Package> PackageTranslator;
|
2004-10-05 13:18:28 +00:00
|
|
|
|
|
|
|
|
2006-11-13 17:35:18 +00:00
|
|
|
PackageTranslator const init_packagetranslator()
|
2005-01-05 20:21:27 +00:00
|
|
|
{
|
2006-11-13 17:35:18 +00:00
|
|
|
PackageTranslator translator(0, BufferParams::package_off);
|
|
|
|
translator.addPair(1, BufferParams::package_auto);
|
|
|
|
translator.addPair(2, BufferParams::package_on);
|
2004-10-05 13:18:28 +00:00
|
|
|
return translator;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2006-11-13 17:35:18 +00:00
|
|
|
PackageTranslator const & packagetranslator()
|
2005-01-05 20:21:27 +00:00
|
|
|
{
|
2006-11-13 17:35:18 +00:00
|
|
|
static PackageTranslator translator = init_packagetranslator();
|
2004-10-05 13:18:28 +00:00
|
|
|
return translator;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Cite engine
|
2008-04-20 15:00:11 +00:00
|
|
|
typedef Translator<string, CiteEngine> CiteEngineTranslator;
|
2004-10-05 13:18:28 +00:00
|
|
|
|
|
|
|
|
2005-01-05 20:21:27 +00:00
|
|
|
CiteEngineTranslator const init_citeenginetranslator()
|
|
|
|
{
|
2008-04-20 15:00:11 +00:00
|
|
|
CiteEngineTranslator translator("basic", ENGINE_BASIC);
|
|
|
|
translator.addPair("natbib_numerical", ENGINE_NATBIB_NUMERICAL);
|
|
|
|
translator.addPair("natbib_authoryear", ENGINE_NATBIB_AUTHORYEAR);
|
|
|
|
translator.addPair("jurabib", ENGINE_JURABIB);
|
2004-10-05 13:18:28 +00:00
|
|
|
return translator;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2005-01-05 20:21:27 +00:00
|
|
|
CiteEngineTranslator const & citeenginetranslator()
|
|
|
|
{
|
2004-10-05 13:18:28 +00:00
|
|
|
static CiteEngineTranslator translator = init_citeenginetranslator();
|
|
|
|
return translator;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Spacing
|
|
|
|
typedef Translator<string, Spacing::Space> SpaceTranslator;
|
2004-08-20 13:06:33 +00:00
|
|
|
|
2004-10-05 13:18:28 +00:00
|
|
|
|
2005-01-05 20:21:27 +00:00
|
|
|
SpaceTranslator const init_spacetranslator()
|
|
|
|
{
|
2004-10-05 13:18:28 +00:00
|
|
|
SpaceTranslator translator("default", Spacing::Default);
|
|
|
|
translator.addPair("single", Spacing::Single);
|
|
|
|
translator.addPair("onehalf", Spacing::Onehalf);
|
|
|
|
translator.addPair("double", Spacing::Double);
|
2005-01-06 13:48:13 +00:00
|
|
|
translator.addPair("other", Spacing::Other);
|
2004-10-05 13:18:28 +00:00
|
|
|
return translator;
|
2004-08-20 13:06:33 +00:00
|
|
|
}
|
|
|
|
|
2004-10-05 13:18:28 +00:00
|
|
|
|
2005-01-05 20:21:27 +00:00
|
|
|
SpaceTranslator const & spacetranslator()
|
|
|
|
{
|
2004-10-05 13:18:28 +00:00
|
|
|
static SpaceTranslator translator = init_spacetranslator();
|
|
|
|
return translator;
|
|
|
|
}
|
|
|
|
|
2007-01-27 17:22:58 +00:00
|
|
|
} // anon namespace
|
|
|
|
|
2004-08-20 13:06:33 +00:00
|
|
|
|
2005-01-19 15:03:31 +00:00
|
|
|
class BufferParams::Impl
|
2003-09-09 17:00:19 +00:00
|
|
|
{
|
2005-01-19 15:03:31 +00:00
|
|
|
public:
|
2003-09-09 17:00:19 +00:00
|
|
|
Impl();
|
|
|
|
|
|
|
|
AuthorList authorlist;
|
|
|
|
BranchList branchlist;
|
2007-11-03 18:30:05 +00:00
|
|
|
Bullet temp_bullets[4];
|
|
|
|
Bullet user_defined_bullets[4];
|
2009-04-16 07:29:01 +00:00
|
|
|
IndicesList indiceslist;
|
2003-09-09 17:00:19 +00:00
|
|
|
Spacing spacing;
|
|
|
|
/** This is the amount of space used for paragraph_separation "skip",
|
|
|
|
* and for detached paragraphs in "indented" documents.
|
|
|
|
*/
|
2009-07-19 21:13:27 +00:00
|
|
|
HSpace indentation;
|
2003-09-09 17:00:19 +00:00
|
|
|
VSpace defskip;
|
2007-09-20 22:31:18 +00:00
|
|
|
PDFOptions pdfoptions;
|
This is the last of the commits that hopes to enforce the distinction between "layout files" and "document classes" that was introduced by the modules code. For the most part, these changes just refactor code from TextClass between: (a) a TextClass base class; (b) a LayoutFile subclass, which represents the information in a .layout file; and (c) a DocumentClass subclass, which represents the layout information associated with a Buffer---a LayoutFile plus Modules. Methods from TextClass have been apportioned between the three classes depending upon what is needed where, and signatures have been changed where necessary so that the right kind of class is required.
At this point, there are no simple TextClass objects in the main LyX code, and it is impossible to create them, since the TextClass constructor is protected. Only LayoutFile and DocumentClass objects can be constructed, and for the most part these are constructed only by their respective containers: BaseClassList and DocumentClassBundle. There is an exception: LayoutFile does have a public default constructor, but if anyone knows how to make it go away, please do.
There will be one or two more commits along these lines, but these will be simple renamings. For example, BaseClassList should be LayoutFileList.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23343 a592a061-630c-0410-9148-cb99ea01b6c8
2008-02-29 02:45:33 +00:00
|
|
|
LayoutFileIndex baseClass_;
|
2003-09-09 17:00:19 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
BufferParams::Impl::Impl()
|
2008-02-28 21:04:55 +00:00
|
|
|
: defskip(VSpace::MEDSKIP), baseClass_(string(""))
|
2003-09-09 17:00:19 +00:00
|
|
|
{
|
|
|
|
// set initial author
|
2006-12-21 13:58:28 +00:00
|
|
|
// FIXME UNICODE
|
|
|
|
authorlist.record(Author(from_utf8(lyxrc.user_name), from_utf8(lyxrc.user_email)));
|
2003-09-09 17:00:19 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2003-09-15 20:23:57 +00:00
|
|
|
BufferParams::Impl *
|
|
|
|
BufferParams::MemoryTraits::clone(BufferParams::Impl const * ptr)
|
|
|
|
{
|
2008-04-10 21:49:34 +00:00
|
|
|
LASSERT(ptr, /**/);
|
2005-01-05 20:21:27 +00:00
|
|
|
|
2003-09-15 20:23:57 +00:00
|
|
|
return new BufferParams::Impl(*ptr);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void BufferParams::MemoryTraits::destroy(BufferParams::Impl * ptr)
|
|
|
|
{
|
|
|
|
delete ptr;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
1999-09-27 18:44:28 +00:00
|
|
|
BufferParams::BufferParams()
|
This is one of a series of patches that will merge the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This first patch does some reworking of the infrastructrue. We need to distinguish between the TextClass that a particular document is using and the layout of that document, since modules, in particular, can modify the layout. The solution adopted here is to add a TextClass pointer to BufferParams, which will hold the layout. The layout itself is then constructed from the TextClass the document is using. At present, this is completely trivial, but that will change when modules are added.
The pointer in question is a boost::shared_ptr. This is needed because CutAndPaste saves a copy of the layout with each cut or copied selection. We cannot assume the selection vanishes when the document is closed, so there are two options: (i) keep a list of all the layouts that have ever been used by any document; (ii) used some kind of smart pointer. The latter seems preferable, as the former would waste memory. More importantly, the use of a smart pointer allows modules to be modified on disk and then reloaded while LyX is running, and it will eventually allow the same for layout files.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19756 a592a061-630c-0410-9148-cb99ea01b6c8
2007-08-23 16:41:13 +00:00
|
|
|
: pimpl_(new Impl)
|
1999-09-27 18:44:28 +00:00
|
|
|
{
|
2008-02-24 16:59:49 +00:00
|
|
|
setBaseClass(defaultBaseclass());
|
2008-02-28 01:42:02 +00:00
|
|
|
makeDocumentClass();
|
2008-03-15 00:22:54 +00:00
|
|
|
paragraph_separation = ParagraphIndentSeparation;
|
|
|
|
quotes_language = InsetQuotes::EnglishQuotes;
|
1999-09-27 18:44:28 +00:00
|
|
|
fontsize = "default";
|
1999-11-25 17:29:19 +00:00
|
|
|
|
2001-11-29 17:12:21 +00:00
|
|
|
/* PaperLayout */
|
1999-09-27 18:44:28 +00:00
|
|
|
papersize = PAPER_DEFAULT;
|
|
|
|
orientation = ORIENTATION_PORTRAIT;
|
2001-11-29 17:12:21 +00:00
|
|
|
use_geometry = false;
|
2006-11-13 17:35:18 +00:00
|
|
|
use_amsmath = package_auto;
|
|
|
|
use_esint = package_auto;
|
2009-11-11 01:48:07 +00:00
|
|
|
use_mhchem = package_auto;
|
2008-04-20 15:00:11 +00:00
|
|
|
cite_engine_ = ENGINE_BASIC;
|
2004-03-29 13:17:25 +00:00
|
|
|
use_bibtopic = false;
|
2009-04-16 07:29:01 +00:00
|
|
|
use_indices = false;
|
2006-10-06 18:53:35 +00:00
|
|
|
trackChanges = false;
|
|
|
|
outputChanges = false;
|
2008-10-12 09:36:00 +00:00
|
|
|
use_default_options = true;
|
2010-01-10 13:25:41 +00:00
|
|
|
maintain_unincluded_children = false;
|
1999-09-27 18:44:28 +00:00
|
|
|
secnumdepth = 3;
|
|
|
|
tocdepth = 3;
|
2000-10-10 12:36:36 +00:00
|
|
|
language = default_language;
|
2009-11-29 14:43:00 +00:00
|
|
|
fontenc = "global";
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
fontsRoman = "default";
|
|
|
|
fontsSans = "default";
|
|
|
|
fontsTypewriter = "default";
|
|
|
|
fontsDefaultFamily = "default";
|
2009-04-06 06:58:30 +00:00
|
|
|
useXetex = false;
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
fontsSC = false;
|
|
|
|
fontsOSF = false;
|
|
|
|
fontsSansScale = 100;
|
|
|
|
fontsTypewriterScale = 100;
|
2000-07-04 20:32:37 +00:00
|
|
|
inputenc = "auto";
|
1999-09-27 18:44:28 +00:00
|
|
|
graphicsDriver = "default";
|
2009-04-10 11:06:53 +00:00
|
|
|
defaultOutputFormat = "default";
|
2009-05-22 07:20:00 +00:00
|
|
|
bibtex_command = "default";
|
|
|
|
index_command = "default";
|
2007-11-07 23:25:08 +00:00
|
|
|
sides = OneSide;
|
1999-09-27 18:44:28 +00:00
|
|
|
columns = 1;
|
Add support for listings package. Two listings command \lstinline, \lstinputlisting and an environment \lstlisting are supported, along with preamble \lstset. \lstinputlisting is implemented through Include dialog, and the other two are implemented with a new inset listings, along with its dialog.
* src/LyXAction.cpp: listing-insert action
* src/insets/Inset.h,cpp: LISTINGS_CODE
* src/insets/InsetInclude.cpp: handle \lstinputlisting
* src/insets/InsetListings.h,cpp: new listings inset
* src/insets/InsetListingsParams.h,cpp: parameters from listings package
* src/insets/InsetCommandParams.h,cpp: handle lstinputlisting option
* src/Bidi.cpp: handle LISTINGS_CODE
* src/frontends/qt4/ui/TextLayoutUi.ui: update UI
* src/frontends/qt4/ui/ListingsUi.ui: new dialog
* src/frontends/qt4/ui/IncludeUi.ui: update UI
* src/frontends/qt4/QInclude.h,cpp: add lstinputlisting
* src/frontends/qt4/QDocument.h,cpp: add textedit for preamble listings_params
* src/frontends/qt4/QListings.h,cpp: new listings inset
* src/frontends/qt4/Dialogs.cpp: new listings dialog
* src/frontends/controllers/ControlInclude.h,cpp: add lstinputlisting
* src/frontends/controllers/ControlListings.h,cpp: new listings inset
* src/LyXFunc.cpp: handle LISTING_CODE
* src/Paragraph.cpp: handle LISTING_CODE
* src/factory.cpp: new listings inset
* src/CutAndPaste.cpp: handle LISTINGS_CODE
* src/LaTeXFeatures.cpp: require listings
* src/Text3.cpp: Handle LISTINGS_CODE
* src/lfuns.h: add LFUN_LISTING_INSERT
* src/Buffer.cpp: change lyx file format to 269
* src/BufferParams.h,cpp: add listings_params to preamble
* lib/lyx2lyx/LyX.py: lyx2lyx
* lib/lyx2lyx/lyx_1_5.py: lyx2lyx
* lib/ui/stdmenus.inc: new menu item (no shortcut!)
* src/insets/Makefile.am: update autotools
* src/frontends/controllers/Makefile.am
* src/frontends/qt4/Makefile.dialogs
* src/frontends/qt4/Makefile.am
* po/POTFILES.in: a few more translatable files.
* development/scons/scons_manifest.py: scons build system
* development/FORMAT: document format changes
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18243 a592a061-630c-0410-9148-cb99ea01b6c8
2007-05-09 19:11:42 +00:00
|
|
|
listings_params = string();
|
1999-09-27 18:44:28 +00:00
|
|
|
pagestyle = "default";
|
2009-08-14 00:52:33 +00:00
|
|
|
suppress_date = false;
|
2010-04-05 20:31:10 +00:00
|
|
|
// no color is the default (white)
|
2009-04-11 21:40:11 +00:00
|
|
|
backgroundcolor = lyx::rgbFromHexName("#ffffff");
|
2010-04-05 20:31:10 +00:00
|
|
|
isbackgroundcolor = false;
|
2010-04-02 23:39:36 +00:00
|
|
|
// no color is the default (black)
|
|
|
|
fontcolor = lyx::rgbFromHexName("#000000");
|
|
|
|
isfontcolor = false;
|
2010-03-31 00:46:50 +00:00
|
|
|
// light gray is the default font color for greyed-out notes
|
|
|
|
notefontcolor = lyx::rgbFromHexName("#cccccc");
|
2010-04-08 00:14:08 +00:00
|
|
|
boxbgcolor = lyx::rgbFromHexName("#ff0000");
|
2010-03-26 14:02:56 +00:00
|
|
|
compressed = lyxrc.save_compressed;
|
2000-11-04 10:00:12 +00:00
|
|
|
for (int iter = 0; iter < 4; ++iter) {
|
2003-09-09 17:00:19 +00:00
|
|
|
user_defined_bullet(iter) = ITEMIZE_DEFAULTS[iter];
|
|
|
|
temp_bullet(iter) = ITEMIZE_DEFAULTS[iter];
|
1999-09-27 18:44:28 +00:00
|
|
|
}
|
2009-04-16 07:29:01 +00:00
|
|
|
// default index
|
|
|
|
indiceslist().addDefault(B_("Index"));
|
2010-04-21 15:18:25 +00:00
|
|
|
html_be_strict = false;
|
2010-03-18 20:35:08 +00:00
|
|
|
html_math_output = MathML;
|
2010-04-21 15:18:25 +00:00
|
|
|
html_math_img_scale = 1.0;
|
2010-05-25 11:36:00 +00:00
|
|
|
|
|
|
|
output_sync = false;
|
1999-09-27 18:44:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2008-03-15 00:22:54 +00:00
|
|
|
docstring BufferParams::B_(string const & l10n) const
|
2007-05-01 08:26:40 +00:00
|
|
|
{
|
2008-04-10 21:49:34 +00:00
|
|
|
LASSERT(language, /**/);
|
2007-05-01 08:26:40 +00:00
|
|
|
return getMessages(language->code()).get(l10n);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2003-09-09 17:00:19 +00:00
|
|
|
AuthorList & BufferParams::authors()
|
|
|
|
{
|
|
|
|
return pimpl_->authorlist;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
AuthorList const & BufferParams::authors() const
|
|
|
|
{
|
|
|
|
return pimpl_->authorlist;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BranchList & BufferParams::branchlist()
|
|
|
|
{
|
|
|
|
return pimpl_->branchlist;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BranchList const & BufferParams::branchlist() const
|
|
|
|
{
|
|
|
|
return pimpl_->branchlist;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2009-04-16 07:29:01 +00:00
|
|
|
IndicesList & BufferParams::indiceslist()
|
|
|
|
{
|
|
|
|
return pimpl_->indiceslist;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
IndicesList const & BufferParams::indiceslist() const
|
|
|
|
{
|
|
|
|
return pimpl_->indiceslist;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2005-01-05 20:21:27 +00:00
|
|
|
Bullet & BufferParams::temp_bullet(lyx::size_type const index)
|
2003-09-09 17:00:19 +00:00
|
|
|
{
|
2008-04-10 21:49:34 +00:00
|
|
|
LASSERT(index < 4, /**/);
|
2003-09-09 17:00:19 +00:00
|
|
|
return pimpl_->temp_bullets[index];
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2005-01-05 20:21:27 +00:00
|
|
|
Bullet const & BufferParams::temp_bullet(lyx::size_type const index) const
|
2003-09-09 17:00:19 +00:00
|
|
|
{
|
2008-04-10 21:49:34 +00:00
|
|
|
LASSERT(index < 4, /**/);
|
2003-09-09 17:00:19 +00:00
|
|
|
return pimpl_->temp_bullets[index];
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2005-01-05 20:21:27 +00:00
|
|
|
Bullet & BufferParams::user_defined_bullet(lyx::size_type const index)
|
2003-09-09 17:00:19 +00:00
|
|
|
{
|
2008-04-10 21:49:34 +00:00
|
|
|
LASSERT(index < 4, /**/);
|
2003-09-09 17:00:19 +00:00
|
|
|
return pimpl_->user_defined_bullets[index];
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2005-01-05 20:21:27 +00:00
|
|
|
Bullet const & BufferParams::user_defined_bullet(lyx::size_type const index) const
|
2003-09-09 17:00:19 +00:00
|
|
|
{
|
2008-04-10 21:49:34 +00:00
|
|
|
LASSERT(index < 4, /**/);
|
2003-09-09 17:00:19 +00:00
|
|
|
return pimpl_->user_defined_bullets[index];
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Spacing & BufferParams::spacing()
|
|
|
|
{
|
|
|
|
return pimpl_->spacing;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Spacing const & BufferParams::spacing() const
|
|
|
|
{
|
|
|
|
return pimpl_->spacing;
|
|
|
|
}
|
|
|
|
|
2007-09-20 22:42:16 +00:00
|
|
|
|
2007-09-20 22:31:18 +00:00
|
|
|
PDFOptions & BufferParams::pdfoptions()
|
|
|
|
{
|
|
|
|
return pimpl_->pdfoptions;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
PDFOptions const & BufferParams::pdfoptions() const
|
|
|
|
{
|
|
|
|
return pimpl_->pdfoptions;
|
|
|
|
}
|
2003-09-09 17:00:19 +00:00
|
|
|
|
2007-09-20 22:42:16 +00:00
|
|
|
|
2009-07-19 21:13:27 +00:00
|
|
|
HSpace const & BufferParams::getIndentation() const
|
|
|
|
{
|
|
|
|
return pimpl_->indentation;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void BufferParams::setIndentation(HSpace const & indent)
|
|
|
|
{
|
|
|
|
pimpl_->indentation = indent;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2003-09-09 17:00:19 +00:00
|
|
|
VSpace const & BufferParams::getDefSkip() const
|
|
|
|
{
|
|
|
|
return pimpl_->defskip;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void BufferParams::setDefSkip(VSpace const & vs)
|
|
|
|
{
|
|
|
|
pimpl_->defskip = vs;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2008-03-15 00:22:54 +00:00
|
|
|
string BufferParams::readToken(Lexer & lex, string const & token,
|
2008-04-20 03:08:11 +00:00
|
|
|
FileName const & filepath)
|
2003-03-12 02:39:12 +00:00
|
|
|
{
|
|
|
|
if (token == "\\textclass") {
|
2004-08-14 18:41:27 +00:00
|
|
|
lex.next();
|
2003-03-12 02:39:12 +00:00
|
|
|
string const classname = lex.getString();
|
2007-11-26 15:45:54 +00:00
|
|
|
// if there exists a local layout file, ignore the system one
|
|
|
|
// NOTE: in this case, the textclass (.cls file) is assumed to be available.
|
2008-02-28 21:04:55 +00:00
|
|
|
string tcp;
|
2008-03-07 03:53:21 +00:00
|
|
|
LayoutFileList & bcl = LayoutFileList::get();
|
2008-03-11 18:31:38 +00:00
|
|
|
if (tcp.empty() && !filepath.empty())
|
2010-04-21 01:19:09 +00:00
|
|
|
tcp = bcl.addLocalLayout(classname, filepath.absFileName());
|
2008-02-28 21:04:55 +00:00
|
|
|
if (!tcp.empty())
|
|
|
|
setBaseClass(tcp);
|
2008-07-11 02:43:02 +00:00
|
|
|
else
|
2008-02-28 21:04:55 +00:00
|
|
|
setBaseClass(classname);
|
2008-07-11 02:43:02 +00:00
|
|
|
// We assume that a tex class exists for local or unknown layouts so this warning
|
|
|
|
// will only be given for system layouts.
|
This is the last of the commits that hopes to enforce the distinction between "layout files" and "document classes" that was introduced by the modules code. For the most part, these changes just refactor code from TextClass between: (a) a TextClass base class; (b) a LayoutFile subclass, which represents the information in a .layout file; and (c) a DocumentClass subclass, which represents the layout information associated with a Buffer---a LayoutFile plus Modules. Methods from TextClass have been apportioned between the three classes depending upon what is needed where, and signatures have been changed where necessary so that the right kind of class is required.
At this point, there are no simple TextClass objects in the main LyX code, and it is impossible to create them, since the TextClass constructor is protected. Only LayoutFile and DocumentClass objects can be constructed, and for the most part these are constructed only by their respective containers: BaseClassList and DocumentClassBundle. There is an exception: LayoutFile does have a public default constructor, but if anyone knows how to make it go away, please do.
There will be one or two more commits along these lines, but these will be simple renamings. For example, BaseClassList should be LayoutFileList.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23343 a592a061-630c-0410-9148-cb99ea01b6c8
2008-02-29 02:45:33 +00:00
|
|
|
if (!baseClass()->isTeXClassAvailable()) {
|
2010-03-25 15:25:14 +00:00
|
|
|
docstring desc =
|
|
|
|
translateIfPossible(from_utf8(baseClass()->description()));
|
2006-09-11 08:54:10 +00:00
|
|
|
docstring const msg =
|
2010-05-15 02:58:23 +00:00
|
|
|
bformat(_("The used document class\n"
|
2010-03-25 00:44:15 +00:00
|
|
|
"\t%1$s\n"
|
|
|
|
"requires external files that are not available.\n"
|
|
|
|
"The document class can still be used, but LyX\n"
|
|
|
|
"will not be able to produce output until the\n"
|
|
|
|
"following prerequisites are installed:\n"
|
|
|
|
"\t%2$s\n"
|
2010-03-25 15:25:14 +00:00
|
|
|
"See section 3.1.2.2 of the User's Guide for\n"
|
|
|
|
"more information."),
|
|
|
|
desc, from_utf8(baseClass()->prerequisites()));
|
2007-04-30 21:01:24 +00:00
|
|
|
frontend::Alert::warning(_("Document class not available"),
|
2010-03-25 00:44:15 +00:00
|
|
|
msg);
|
2010-03-22 12:25:16 +00:00
|
|
|
}
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\begin_preamble") {
|
|
|
|
readPreamble(lex);
|
2008-03-24 12:31:07 +00:00
|
|
|
} else if (token == "\\begin_local_layout") {
|
|
|
|
readLocalLayout(lex);
|
This is one of a series of patches that will merge the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the backend. The ModuleList class holds a list of the available modules, which are retrieved from lyxmodules.lst, itself generated by configure.py. There are two LFUNs available: modules-clear and module-add, which do the obvious thing; you can test by typing these into the minibuffer, along with the name of one of the available modules: URL (a CharStyle), Endnote (a Custom Inset), and---with the spaces---End To Foot (View>LaTeX and look at the user preamble), which are themselves in lib/layouts. There are some others, too, that allow theorems to be added to classes like article and book.
The GUI will come next.
Issues: (i) The configure.py script could be improved. It'd be nice, for example, if it tested for the presence of the LaTeX packages a particular module needs. But this would mean re-working the LaTeX script, and I don't know how to do that. Note that at present, the packages are ignored. This will change shortly. (ii) I've used std::string in LyXModule, following what seemed to be a precedent in TextClass. If some of these should be docstrings, please let me know, and I'll change them. (iii) There is at present no distinction between LaTeX and DocBook modules. Should there be? That is: Should there be modules that are available when the document class is a LaTeX class and others that are available only when it is DocBook? Or should there just be one set of modules? Each module can of course indicate for what it is suitable in its description.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19893 a592a061-630c-0410-9148-cb99ea01b6c8
2007-08-29 17:59:49 +00:00
|
|
|
} else if (token == "\\begin_modules") {
|
|
|
|
readModules(lex);
|
2008-07-27 17:46:27 +00:00
|
|
|
} else if (token == "\\begin_removed_modules") {
|
|
|
|
readRemovedModules(lex);
|
2010-01-07 10:01:26 +00:00
|
|
|
} else if (token == "\\begin_includeonly") {
|
|
|
|
readIncludeonly(lex);
|
2010-01-10 13:25:41 +00:00
|
|
|
} else if (token == "\\maintain_unincluded_children") {
|
|
|
|
lex >> maintain_unincluded_children;
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\options") {
|
|
|
|
lex.eatLine();
|
|
|
|
options = lex.getString();
|
2008-10-12 09:36:00 +00:00
|
|
|
} else if (token == "\\use_default_options") {
|
|
|
|
lex >> use_default_options;
|
2008-04-28 16:38:56 +00:00
|
|
|
} else if (token == "\\master") {
|
|
|
|
lex.eatLine();
|
|
|
|
master = lex.getString();
|
2009-08-14 00:52:33 +00:00
|
|
|
} else if (token == "\\suppress_date") {
|
|
|
|
lex >> suppress_date;
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\language") {
|
|
|
|
readLanguage(lex);
|
|
|
|
} else if (token == "\\inputencoding") {
|
2004-10-05 13:18:28 +00:00
|
|
|
lex >> inputenc;
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\graphics") {
|
|
|
|
readGraphicsDriver(lex);
|
2009-04-10 11:06:53 +00:00
|
|
|
} else if (token == "\\default_output_format") {
|
|
|
|
lex >> defaultOutputFormat;
|
2009-05-22 07:20:00 +00:00
|
|
|
} else if (token == "\\bibtex_command") {
|
|
|
|
lex.eatLine();
|
|
|
|
bibtex_command = lex.getString();
|
|
|
|
} else if (token == "\\index_command") {
|
|
|
|
lex.eatLine();
|
|
|
|
index_command = lex.getString();
|
2009-11-29 14:43:00 +00:00
|
|
|
} else if (token == "\\fontencoding") {
|
|
|
|
lex.eatLine();
|
|
|
|
fontenc = lex.getString();
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
} else if (token == "\\font_roman") {
|
2009-04-06 06:58:30 +00:00
|
|
|
lex.eatLine();
|
|
|
|
fontsRoman = lex.getString();
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
} else if (token == "\\font_sans") {
|
2009-04-06 06:58:30 +00:00
|
|
|
lex.eatLine();
|
|
|
|
fontsSans = lex.getString();
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
} else if (token == "\\font_typewriter") {
|
2009-04-06 06:58:30 +00:00
|
|
|
lex.eatLine();
|
|
|
|
fontsTypewriter = lex.getString();
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
} else if (token == "\\font_default_family") {
|
|
|
|
lex >> fontsDefaultFamily;
|
2009-04-06 06:58:30 +00:00
|
|
|
} else if (token == "\\use_xetex") {
|
|
|
|
lex >> useXetex;
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
} else if (token == "\\font_sc") {
|
|
|
|
lex >> fontsSC;
|
|
|
|
} else if (token == "\\font_osf") {
|
|
|
|
lex >> fontsOSF;
|
|
|
|
} else if (token == "\\font_sf_scale") {
|
|
|
|
lex >> fontsSansScale;
|
|
|
|
} else if (token == "\\font_tt_scale") {
|
|
|
|
lex >> fontsTypewriterScale;
|
2008-06-05 06:18:34 +00:00
|
|
|
} else if (token == "\\font_cjk") {
|
|
|
|
lex >> fontsCJK;
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\paragraph_separation") {
|
2004-10-05 13:18:28 +00:00
|
|
|
string parsep;
|
|
|
|
lex >> parsep;
|
|
|
|
paragraph_separation = parseptranslator().find(parsep);
|
2009-07-19 21:13:27 +00:00
|
|
|
} else if (token == "\\paragraph_indentation") {
|
|
|
|
lex.next();
|
|
|
|
string indentation = lex.getString();
|
|
|
|
pimpl_->indentation = HSpace(indentation);
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\defskip") {
|
2004-08-14 18:41:27 +00:00
|
|
|
lex.next();
|
2008-02-15 14:13:05 +00:00
|
|
|
string defskip = lex.getString();
|
|
|
|
if (defskip == "defskip")
|
|
|
|
// this is invalid
|
|
|
|
defskip = "medskip";
|
|
|
|
pimpl_->defskip = VSpace(defskip);
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\quotes_language") {
|
2004-10-05 13:18:28 +00:00
|
|
|
string quotes_lang;
|
|
|
|
lex >> quotes_lang;
|
|
|
|
quotes_language = quoteslangtranslator().find(quotes_lang);
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\papersize") {
|
2004-10-05 13:18:28 +00:00
|
|
|
string ppsize;
|
|
|
|
lex >> ppsize;
|
2005-07-16 16:57:55 +00:00
|
|
|
papersize = papersizetranslator().find(ppsize);
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\use_geometry") {
|
2004-10-05 13:18:28 +00:00
|
|
|
lex >> use_geometry;
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\use_amsmath") {
|
2004-10-05 13:18:28 +00:00
|
|
|
int use_ams;
|
|
|
|
lex >> use_ams;
|
2006-11-13 17:35:18 +00:00
|
|
|
use_amsmath = packagetranslator().find(use_ams);
|
|
|
|
} else if (token == "\\use_esint") {
|
|
|
|
int useesint;
|
|
|
|
lex >> useesint;
|
|
|
|
use_esint = packagetranslator().find(useesint);
|
2009-11-11 01:48:07 +00:00
|
|
|
} else if (token == "\\use_mhchem") {
|
|
|
|
int usemhchem;
|
|
|
|
lex >> usemhchem;
|
|
|
|
use_mhchem = packagetranslator().find(usemhchem);
|
2004-05-13 20:44:35 +00:00
|
|
|
} else if (token == "\\cite_engine") {
|
2004-10-05 13:18:28 +00:00
|
|
|
string engine;
|
|
|
|
lex >> engine;
|
2007-03-25 01:12:38 +00:00
|
|
|
cite_engine_ = citeenginetranslator().find(engine);
|
2004-03-29 13:17:25 +00:00
|
|
|
} else if (token == "\\use_bibtopic") {
|
2004-10-05 13:18:28 +00:00
|
|
|
lex >> use_bibtopic;
|
2009-04-16 07:29:01 +00:00
|
|
|
} else if (token == "\\use_indices") {
|
|
|
|
lex >> use_indices;
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\tracking_changes") {
|
2006-10-06 18:53:35 +00:00
|
|
|
lex >> trackChanges;
|
2005-01-24 17:12:19 +00:00
|
|
|
} else if (token == "\\output_changes") {
|
2006-10-06 18:53:35 +00:00
|
|
|
lex >> outputChanges;
|
2003-08-17 11:28:23 +00:00
|
|
|
} else if (token == "\\branch") {
|
2009-02-26 00:24:12 +00:00
|
|
|
lex.eatLine();
|
2006-11-03 15:16:45 +00:00
|
|
|
docstring branch = lex.getDocString();
|
2003-09-09 17:00:19 +00:00
|
|
|
branchlist().add(branch);
|
2003-08-17 11:28:23 +00:00
|
|
|
while (true) {
|
2004-08-14 18:41:27 +00:00
|
|
|
lex.next();
|
2003-08-17 11:28:23 +00:00
|
|
|
string const tok = lex.getString();
|
|
|
|
if (tok == "\\end_branch")
|
|
|
|
break;
|
2003-12-14 16:33:56 +00:00
|
|
|
Branch * branch_ptr = branchlist().find(branch);
|
2003-08-17 11:28:23 +00:00
|
|
|
if (tok == "\\selected") {
|
2004-08-14 18:41:27 +00:00
|
|
|
lex.next();
|
2003-12-14 16:33:56 +00:00
|
|
|
if (branch_ptr)
|
|
|
|
branch_ptr->setSelected(lex.getInteger());
|
2003-08-17 11:28:23 +00:00
|
|
|
}
|
2009-07-13 14:30:08 +00:00
|
|
|
if (tok == "\\filename_suffix") {
|
|
|
|
lex.next();
|
|
|
|
if (branch_ptr)
|
2010-04-21 01:19:35 +00:00
|
|
|
branch_ptr->setFileNameSuffix(lex.getInteger());
|
2009-07-13 14:30:08 +00:00
|
|
|
}
|
2003-08-17 11:28:23 +00:00
|
|
|
if (tok == "\\color") {
|
2004-08-14 18:41:27 +00:00
|
|
|
lex.eatLine();
|
2003-08-17 11:28:23 +00:00
|
|
|
string color = lex.getString();
|
2003-12-14 16:33:56 +00:00
|
|
|
if (branch_ptr)
|
|
|
|
branch_ptr->setColor(color);
|
2007-04-26 17:34:20 +00:00
|
|
|
// Update also the Color table:
|
2003-09-09 17:25:35 +00:00
|
|
|
if (color == "none")
|
2007-10-25 12:41:02 +00:00
|
|
|
color = lcolor.getX11Name(Color_background);
|
2006-11-03 15:16:45 +00:00
|
|
|
// FIXME UNICODE
|
|
|
|
lcolor.setColor(to_utf8(branch), color);
|
2003-08-17 11:28:23 +00:00
|
|
|
}
|
|
|
|
}
|
2009-04-16 07:29:01 +00:00
|
|
|
} else if (token == "\\index") {
|
|
|
|
lex.eatLine();
|
|
|
|
docstring index = lex.getDocString();
|
2009-08-17 08:01:35 +00:00
|
|
|
docstring shortcut;
|
2009-04-16 07:29:01 +00:00
|
|
|
indiceslist().add(index);
|
|
|
|
while (true) {
|
|
|
|
lex.next();
|
|
|
|
string const tok = lex.getString();
|
|
|
|
if (tok == "\\end_index")
|
|
|
|
break;
|
|
|
|
Index * index_ptr = indiceslist().find(index);
|
|
|
|
if (tok == "\\shortcut") {
|
|
|
|
lex.next();
|
2009-08-17 08:01:35 +00:00
|
|
|
shortcut = lex.getDocString();
|
2009-04-16 07:29:01 +00:00
|
|
|
if (index_ptr)
|
2009-08-17 08:01:35 +00:00
|
|
|
index_ptr->setShortcut(shortcut);
|
2009-04-16 07:29:01 +00:00
|
|
|
}
|
|
|
|
if (tok == "\\color") {
|
|
|
|
lex.eatLine();
|
|
|
|
string color = lex.getString();
|
|
|
|
if (index_ptr)
|
|
|
|
index_ptr->setColor(color);
|
|
|
|
// Update also the Color table:
|
|
|
|
if (color == "none")
|
|
|
|
color = lcolor.getX11Name(Color_background);
|
|
|
|
// FIXME UNICODE
|
2009-08-17 08:01:35 +00:00
|
|
|
if (!shortcut.empty())
|
|
|
|
lcolor.setColor(to_utf8(shortcut), color);
|
2009-04-16 07:29:01 +00:00
|
|
|
}
|
|
|
|
}
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\author") {
|
2004-08-23 11:02:20 +00:00
|
|
|
lex.eatLine();
|
2003-09-15 11:00:00 +00:00
|
|
|
istringstream ss(lex.getString());
|
2003-03-12 02:39:12 +00:00
|
|
|
Author a;
|
|
|
|
ss >> a;
|
2009-07-23 20:08:05 +00:00
|
|
|
author_map[a.buffer_id()] = pimpl_->authorlist.record(a);
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\paperorientation") {
|
2004-10-05 13:18:28 +00:00
|
|
|
string orient;
|
|
|
|
lex >> orient;
|
|
|
|
orientation = paperorientationtranslator().find(orient);
|
2009-04-11 21:40:11 +00:00
|
|
|
} else if (token == "\\backgroundcolor") {
|
|
|
|
lex.eatLine();
|
|
|
|
backgroundcolor = lyx::rgbFromHexName(lex.getString());
|
2010-04-05 20:31:10 +00:00
|
|
|
isbackgroundcolor = true;
|
2010-04-02 23:39:36 +00:00
|
|
|
} else if (token == "\\fontcolor") {
|
|
|
|
lex.eatLine();
|
|
|
|
fontcolor = lyx::rgbFromHexName(lex.getString());
|
|
|
|
isfontcolor = true;
|
2010-03-31 00:46:50 +00:00
|
|
|
} else if (token == "\\notefontcolor") {
|
|
|
|
lex.eatLine();
|
|
|
|
string color = lex.getString();
|
|
|
|
notefontcolor = lyx::rgbFromHexName(color);
|
2010-04-08 00:14:08 +00:00
|
|
|
} else if (token == "\\boxbgcolor") {
|
|
|
|
lex.eatLine();
|
|
|
|
string color = lex.getString();
|
|
|
|
boxbgcolor = lyx::rgbFromHexName(color);
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\paperwidth") {
|
2004-10-05 13:18:28 +00:00
|
|
|
lex >> paperwidth;
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\paperheight") {
|
2004-10-05 13:18:28 +00:00
|
|
|
lex >> paperheight;
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\leftmargin") {
|
2004-10-05 13:18:28 +00:00
|
|
|
lex >> leftmargin;
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\topmargin") {
|
2004-10-05 13:18:28 +00:00
|
|
|
lex >> topmargin;
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\rightmargin") {
|
2004-10-05 13:18:28 +00:00
|
|
|
lex >> rightmargin;
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\bottommargin") {
|
2004-10-05 13:18:28 +00:00
|
|
|
lex >> bottommargin;
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\headheight") {
|
2004-10-05 13:18:28 +00:00
|
|
|
lex >> headheight;
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\headsep") {
|
2004-10-05 13:18:28 +00:00
|
|
|
lex >> headsep;
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\footskip") {
|
2004-10-05 13:18:28 +00:00
|
|
|
lex >> footskip;
|
2008-02-19 05:24:48 +00:00
|
|
|
} else if (token == "\\columnsep") {
|
|
|
|
lex >> columnsep;
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\paperfontsize") {
|
2004-10-05 13:18:28 +00:00
|
|
|
lex >> fontsize;
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\papercolumns") {
|
2004-10-05 13:18:28 +00:00
|
|
|
lex >> columns;
|
Add support for listings package. Two listings command \lstinline, \lstinputlisting and an environment \lstlisting are supported, along with preamble \lstset. \lstinputlisting is implemented through Include dialog, and the other two are implemented with a new inset listings, along with its dialog.
* src/LyXAction.cpp: listing-insert action
* src/insets/Inset.h,cpp: LISTINGS_CODE
* src/insets/InsetInclude.cpp: handle \lstinputlisting
* src/insets/InsetListings.h,cpp: new listings inset
* src/insets/InsetListingsParams.h,cpp: parameters from listings package
* src/insets/InsetCommandParams.h,cpp: handle lstinputlisting option
* src/Bidi.cpp: handle LISTINGS_CODE
* src/frontends/qt4/ui/TextLayoutUi.ui: update UI
* src/frontends/qt4/ui/ListingsUi.ui: new dialog
* src/frontends/qt4/ui/IncludeUi.ui: update UI
* src/frontends/qt4/QInclude.h,cpp: add lstinputlisting
* src/frontends/qt4/QDocument.h,cpp: add textedit for preamble listings_params
* src/frontends/qt4/QListings.h,cpp: new listings inset
* src/frontends/qt4/Dialogs.cpp: new listings dialog
* src/frontends/controllers/ControlInclude.h,cpp: add lstinputlisting
* src/frontends/controllers/ControlListings.h,cpp: new listings inset
* src/LyXFunc.cpp: handle LISTING_CODE
* src/Paragraph.cpp: handle LISTING_CODE
* src/factory.cpp: new listings inset
* src/CutAndPaste.cpp: handle LISTINGS_CODE
* src/LaTeXFeatures.cpp: require listings
* src/Text3.cpp: Handle LISTINGS_CODE
* src/lfuns.h: add LFUN_LISTING_INSERT
* src/Buffer.cpp: change lyx file format to 269
* src/BufferParams.h,cpp: add listings_params to preamble
* lib/lyx2lyx/LyX.py: lyx2lyx
* lib/lyx2lyx/lyx_1_5.py: lyx2lyx
* lib/ui/stdmenus.inc: new menu item (no shortcut!)
* src/insets/Makefile.am: update autotools
* src/frontends/controllers/Makefile.am
* src/frontends/qt4/Makefile.dialogs
* src/frontends/qt4/Makefile.am
* po/POTFILES.in: a few more translatable files.
* development/scons/scons_manifest.py: scons build system
* development/FORMAT: document format changes
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18243 a592a061-630c-0410-9148-cb99ea01b6c8
2007-05-09 19:11:42 +00:00
|
|
|
} else if (token == "\\listings_params") {
|
|
|
|
string par;
|
|
|
|
lex >> par;
|
2007-06-12 17:10:28 +00:00
|
|
|
listings_params = InsetListingsParams(par).params();
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\papersides") {
|
2004-10-05 13:18:28 +00:00
|
|
|
int psides;
|
|
|
|
lex >> psides;
|
|
|
|
sides = sidestranslator().find(psides);
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\paperpagestyle") {
|
2004-10-05 13:18:28 +00:00
|
|
|
lex >> pagestyle;
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\bullet") {
|
2004-10-05 13:18:28 +00:00
|
|
|
readBullets(lex);
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\bulletLaTeX") {
|
2004-10-05 13:18:28 +00:00
|
|
|
readBulletsLaTeX(lex);
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\secnumdepth") {
|
2004-10-05 13:18:28 +00:00
|
|
|
lex >> secnumdepth;
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\tocdepth") {
|
2004-10-05 13:18:28 +00:00
|
|
|
lex >> tocdepth;
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\spacing") {
|
2004-10-05 13:18:28 +00:00
|
|
|
string nspacing;
|
|
|
|
lex >> nspacing;
|
2005-01-06 13:48:13 +00:00
|
|
|
string tmp_val;
|
2004-10-05 13:18:28 +00:00
|
|
|
if (nspacing == "other") {
|
|
|
|
lex >> tmp_val;
|
2003-03-12 02:39:12 +00:00
|
|
|
}
|
2004-10-05 13:18:28 +00:00
|
|
|
spacing().set(spacetranslator().find(nspacing), tmp_val);
|
2003-03-12 02:39:12 +00:00
|
|
|
} else if (token == "\\float_placement") {
|
2004-10-05 13:18:28 +00:00
|
|
|
lex >> float_placement;
|
2007-09-20 22:31:18 +00:00
|
|
|
|
|
|
|
} else if (prefixIs(token, "\\pdf_") || token == "\\use_hyperref") {
|
2007-09-20 22:42:16 +00:00
|
|
|
string toktmp = pdfoptions().readToken(lex, token);
|
2007-09-20 22:31:18 +00:00
|
|
|
if (!toktmp.empty()) {
|
|
|
|
lyxerr << "PDFOptions::readToken(): Unknown token: " <<
|
|
|
|
toktmp << endl;
|
|
|
|
return toktmp;
|
|
|
|
}
|
2010-03-18 20:35:08 +00:00
|
|
|
} else if (token == "\\html_math_output") {
|
|
|
|
int temp;
|
|
|
|
lex >> temp;
|
|
|
|
html_math_output = static_cast<MathOutput>(temp);
|
2009-12-30 22:22:33 +00:00
|
|
|
} else if (token == "\\html_be_strict") {
|
|
|
|
lex >> html_be_strict;
|
2010-04-21 15:18:25 +00:00
|
|
|
} else if (token == "\\html_math_img_scale") {
|
|
|
|
lex >> html_math_img_scale;
|
|
|
|
} else if (token == "\\html_latex_start") {
|
2010-05-24 19:34:43 +00:00
|
|
|
lex.eatLine();
|
|
|
|
html_latex_start = lex.getString();
|
2010-04-21 15:18:25 +00:00
|
|
|
} else if (token == "\\html_latex_end") {
|
2010-05-24 19:34:43 +00:00
|
|
|
lex.eatLine();
|
|
|
|
html_latex_end = lex.getString();
|
2010-05-25 11:36:00 +00:00
|
|
|
} else if (token == "\\output_sync") {
|
|
|
|
lex >> output_sync;
|
|
|
|
} else if (token == "\\output_sync_macro") {
|
|
|
|
lex >> output_sync_macro;
|
2003-03-12 02:39:12 +00:00
|
|
|
} else {
|
This is one of a series of patches that will merge the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the backend. The ModuleList class holds a list of the available modules, which are retrieved from lyxmodules.lst, itself generated by configure.py. There are two LFUNs available: modules-clear and module-add, which do the obvious thing; you can test by typing these into the minibuffer, along with the name of one of the available modules: URL (a CharStyle), Endnote (a Custom Inset), and---with the spaces---End To Foot (View>LaTeX and look at the user preamble), which are themselves in lib/layouts. There are some others, too, that allow theorems to be added to classes like article and book.
The GUI will come next.
Issues: (i) The configure.py script could be improved. It'd be nice, for example, if it tested for the presence of the LaTeX packages a particular module needs. But this would mean re-working the LaTeX script, and I don't know how to do that. Note that at present, the packages are ignored. This will change shortly. (ii) I've used std::string in LyXModule, following what seemed to be a precedent in TextClass. If some of these should be docstrings, please let me know, and I'll change them. (iii) There is at present no distinction between LaTeX and DocBook modules. Should there be? That is: Should there be modules that are available when the document class is a LaTeX class and others that are available only when it is DocBook? Or should there just be one set of modules? Each module can of course indicate for what it is suitable in its description.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19893 a592a061-630c-0410-9148-cb99ea01b6c8
2007-08-29 17:59:49 +00:00
|
|
|
lyxerr << "BufferParams::readToken(): Unknown token: " <<
|
|
|
|
token << endl;
|
2003-03-12 02:39:12 +00:00
|
|
|
return token;
|
|
|
|
}
|
|
|
|
|
|
|
|
return string();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2000-02-22 00:36:17 +00:00
|
|
|
void BufferParams::writeFile(ostream & os) const
|
1999-09-27 18:44:28 +00:00
|
|
|
{
|
|
|
|
// The top of the file is written by the buffer.
|
|
|
|
// Prints out the buffer info into the .lyx file given by file
|
|
|
|
|
2002-03-21 17:27:08 +00:00
|
|
|
// the textclass
|
2008-02-28 21:04:55 +00:00
|
|
|
os << "\\textclass " << baseClass()->name() << '\n';
|
2002-03-21 17:27:08 +00:00
|
|
|
|
2007-03-12 15:15:21 +00:00
|
|
|
// then the preamble
|
1999-09-27 18:44:28 +00:00
|
|
|
if (!preamble.empty()) {
|
1999-12-07 00:44:53 +00:00
|
|
|
// remove '\n' from the end of preamble
|
2002-07-28 22:50:13 +00:00
|
|
|
string const tmppreamble = rtrim(preamble, "\n");
|
1999-12-07 00:44:53 +00:00
|
|
|
os << "\\begin_preamble\n"
|
2000-02-22 00:36:17 +00:00
|
|
|
<< tmppreamble
|
1999-12-07 00:44:53 +00:00
|
|
|
<< "\n\\end_preamble\n";
|
1999-09-27 18:44:28 +00:00
|
|
|
}
|
2002-03-21 17:27:08 +00:00
|
|
|
|
2005-01-05 20:21:27 +00:00
|
|
|
// the options
|
1999-09-27 18:44:28 +00:00
|
|
|
if (!options.empty()) {
|
1999-12-07 00:44:53 +00:00
|
|
|
os << "\\options " << options << '\n';
|
1999-09-27 18:44:28 +00:00
|
|
|
}
|
2008-04-28 16:38:56 +00:00
|
|
|
|
2008-10-12 09:36:00 +00:00
|
|
|
// use the class options defined in the layout?
|
|
|
|
os << "\\use_default_options "
|
|
|
|
<< convert<string>(use_default_options) << "\n";
|
|
|
|
|
2008-04-28 16:38:56 +00:00
|
|
|
// the master document
|
|
|
|
if (!master.empty()) {
|
|
|
|
os << "\\master " << master << '\n';
|
|
|
|
}
|
This is one of a series of patches that will merge the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the backend. The ModuleList class holds a list of the available modules, which are retrieved from lyxmodules.lst, itself generated by configure.py. There are two LFUNs available: modules-clear and module-add, which do the obvious thing; you can test by typing these into the minibuffer, along with the name of one of the available modules: URL (a CharStyle), Endnote (a Custom Inset), and---with the spaces---End To Foot (View>LaTeX and look at the user preamble), which are themselves in lib/layouts. There are some others, too, that allow theorems to be added to classes like article and book.
The GUI will come next.
Issues: (i) The configure.py script could be improved. It'd be nice, for example, if it tested for the presence of the LaTeX packages a particular module needs. But this would mean re-working the LaTeX script, and I don't know how to do that. Note that at present, the packages are ignored. This will change shortly. (ii) I've used std::string in LyXModule, following what seemed to be a precedent in TextClass. If some of these should be docstrings, please let me know, and I'll change them. (iii) There is at present no distinction between LaTeX and DocBook modules. Should there be? That is: Should there be modules that are available when the document class is a LaTeX class and others that are available only when it is DocBook? Or should there just be one set of modules? Each module can of course indicate for what it is suitable in its description.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19893 a592a061-630c-0410-9148-cb99ea01b6c8
2007-08-29 17:59:49 +00:00
|
|
|
|
2008-07-27 17:46:27 +00:00
|
|
|
// removed modules
|
|
|
|
if (!removedModules_.empty()) {
|
|
|
|
os << "\\begin_removed_modules" << '\n';
|
2009-02-19 19:10:59 +00:00
|
|
|
list<string>::const_iterator it = removedModules_.begin();
|
|
|
|
list<string>::const_iterator en = removedModules_.end();
|
2008-07-27 17:46:27 +00:00
|
|
|
for (; it != en; it++)
|
|
|
|
os << *it << '\n';
|
|
|
|
os << "\\end_removed_modules" << '\n';
|
|
|
|
}
|
|
|
|
|
|
|
|
// the modules
|
This is one of a series of patches that will merge the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the backend. The ModuleList class holds a list of the available modules, which are retrieved from lyxmodules.lst, itself generated by configure.py. There are two LFUNs available: modules-clear and module-add, which do the obvious thing; you can test by typing these into the minibuffer, along with the name of one of the available modules: URL (a CharStyle), Endnote (a Custom Inset), and---with the spaces---End To Foot (View>LaTeX and look at the user preamble), which are themselves in lib/layouts. There are some others, too, that allow theorems to be added to classes like article and book.
The GUI will come next.
Issues: (i) The configure.py script could be improved. It'd be nice, for example, if it tested for the presence of the LaTeX packages a particular module needs. But this would mean re-working the LaTeX script, and I don't know how to do that. Note that at present, the packages are ignored. This will change shortly. (ii) I've used std::string in LyXModule, following what seemed to be a precedent in TextClass. If some of these should be docstrings, please let me know, and I'll change them. (iii) There is at present no distinction between LaTeX and DocBook modules. Should there be? That is: Should there be modules that are available when the document class is a LaTeX class and others that are available only when it is DocBook? Or should there just be one set of modules? Each module can of course indicate for what it is suitable in its description.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19893 a592a061-630c-0410-9148-cb99ea01b6c8
2007-08-29 17:59:49 +00:00
|
|
|
if (!layoutModules_.empty()) {
|
|
|
|
os << "\\begin_modules" << '\n';
|
|
|
|
LayoutModuleList::const_iterator it = layoutModules_.begin();
|
2008-07-27 17:46:27 +00:00
|
|
|
LayoutModuleList::const_iterator en = layoutModules_.end();
|
|
|
|
for (; it != en; it++)
|
This is one of a series of patches that will merge the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the backend. The ModuleList class holds a list of the available modules, which are retrieved from lyxmodules.lst, itself generated by configure.py. There are two LFUNs available: modules-clear and module-add, which do the obvious thing; you can test by typing these into the minibuffer, along with the name of one of the available modules: URL (a CharStyle), Endnote (a Custom Inset), and---with the spaces---End To Foot (View>LaTeX and look at the user preamble), which are themselves in lib/layouts. There are some others, too, that allow theorems to be added to classes like article and book.
The GUI will come next.
Issues: (i) The configure.py script could be improved. It'd be nice, for example, if it tested for the presence of the LaTeX packages a particular module needs. But this would mean re-working the LaTeX script, and I don't know how to do that. Note that at present, the packages are ignored. This will change shortly. (ii) I've used std::string in LyXModule, following what seemed to be a precedent in TextClass. If some of these should be docstrings, please let me know, and I'll change them. (iii) There is at present no distinction between LaTeX and DocBook modules. Should there be? That is: Should there be modules that are available when the document class is a LaTeX class and others that are available only when it is DocBook? Or should there just be one set of modules? Each module can of course indicate for what it is suitable in its description.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19893 a592a061-630c-0410-9148-cb99ea01b6c8
2007-08-29 17:59:49 +00:00
|
|
|
os << *it << '\n';
|
|
|
|
os << "\\end_modules" << '\n';
|
|
|
|
}
|
2010-01-07 10:01:26 +00:00
|
|
|
|
|
|
|
// includeonly
|
|
|
|
if (!includedChildren_.empty()) {
|
|
|
|
os << "\\begin_includeonly" << '\n';
|
|
|
|
list<string>::const_iterator it = includedChildren_.begin();
|
|
|
|
list<string>::const_iterator en = includedChildren_.end();
|
|
|
|
for (; it != en; it++)
|
|
|
|
os << *it << '\n';
|
|
|
|
os << "\\end_includeonly" << '\n';
|
|
|
|
}
|
2010-01-10 13:25:41 +00:00
|
|
|
os << "\\maintain_unincluded_children "
|
|
|
|
<< convert<string>(maintain_unincluded_children) << '\n';
|
2010-01-07 10:01:26 +00:00
|
|
|
|
2008-03-24 12:31:07 +00:00
|
|
|
// local layout information
|
|
|
|
if (!local_layout.empty()) {
|
|
|
|
// remove '\n' from the end
|
|
|
|
string const tmplocal = rtrim(local_layout, "\n");
|
|
|
|
os << "\\begin_local_layout\n"
|
|
|
|
<< tmplocal
|
|
|
|
<< "\n\\end_local_layout\n";
|
|
|
|
}
|
|
|
|
|
2005-01-05 20:21:27 +00:00
|
|
|
// then the text parameters
|
2001-07-27 12:03:36 +00:00
|
|
|
if (language != ignore_language)
|
|
|
|
os << "\\language " << language->lang() << '\n';
|
|
|
|
os << "\\inputencoding " << inputenc
|
2009-11-29 14:43:00 +00:00
|
|
|
<< "\n\\fontencoding " << fontenc
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
<< "\n\\font_roman " << fontsRoman
|
|
|
|
<< "\n\\font_sans " << fontsSans
|
|
|
|
<< "\n\\font_typewriter " << fontsTypewriter
|
|
|
|
<< "\n\\font_default_family " << fontsDefaultFamily
|
2009-04-06 06:58:30 +00:00
|
|
|
<< "\n\\use_xetex " << convert<string>(useXetex)
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
<< "\n\\font_sc " << convert<string>(fontsSC)
|
|
|
|
<< "\n\\font_osf " << convert<string>(fontsOSF)
|
|
|
|
<< "\n\\font_sf_scale " << fontsSansScale
|
|
|
|
<< "\n\\font_tt_scale " << fontsTypewriterScale
|
2008-06-05 06:18:34 +00:00
|
|
|
<< '\n';
|
|
|
|
if (!fontsCJK.empty()) {
|
|
|
|
os << "\\font_cjk " << fontsCJK << '\n';
|
|
|
|
}
|
|
|
|
os << "\n\\graphics " << graphicsDriver << '\n';
|
2009-04-10 11:06:53 +00:00
|
|
|
os << "\\default_output_format " << defaultOutputFormat << '\n';
|
2010-05-25 11:36:00 +00:00
|
|
|
os << "\\output_sync " << output_sync << '\n';
|
|
|
|
if (!output_sync_macro.empty())
|
|
|
|
os << "\\output_sync_macro \"" << output_sync_macro << "\"\n";
|
2009-05-22 07:20:00 +00:00
|
|
|
os << "\\bibtex_command " << bibtex_command << '\n';
|
|
|
|
os << "\\index_command " << index_command << '\n';
|
1999-09-27 18:44:28 +00:00
|
|
|
|
|
|
|
if (!float_placement.empty()) {
|
1999-12-07 00:44:53 +00:00
|
|
|
os << "\\float_placement " << float_placement << '\n';
|
1999-09-27 18:44:28 +00:00
|
|
|
}
|
1999-12-07 00:44:53 +00:00
|
|
|
os << "\\paperfontsize " << fontsize << '\n';
|
1999-09-27 18:44:28 +00:00
|
|
|
|
2003-09-09 17:00:19 +00:00
|
|
|
spacing().writeFile(os);
|
2007-09-20 22:31:18 +00:00
|
|
|
pdfoptions().writeFile(os);
|
1999-09-27 18:44:28 +00:00
|
|
|
|
2005-07-16 16:57:55 +00:00
|
|
|
os << "\\papersize " << string_papersize[papersize]
|
2005-01-06 15:40:49 +00:00
|
|
|
<< "\n\\use_geometry " << convert<string>(use_geometry)
|
1999-12-07 00:44:53 +00:00
|
|
|
<< "\n\\use_amsmath " << use_amsmath
|
2006-11-13 17:35:18 +00:00
|
|
|
<< "\n\\use_esint " << use_esint
|
2009-11-11 01:48:07 +00:00
|
|
|
<< "\n\\use_mhchem " << use_mhchem
|
2007-03-25 01:12:38 +00:00
|
|
|
<< "\n\\cite_engine " << citeenginetranslator().find(cite_engine_)
|
2005-01-06 15:40:49 +00:00
|
|
|
<< "\n\\use_bibtopic " << convert<string>(use_bibtopic)
|
2009-04-16 07:29:01 +00:00
|
|
|
<< "\n\\use_indices " << convert<string>(use_indices)
|
1999-12-07 00:44:53 +00:00
|
|
|
<< "\n\\paperorientation " << string_orientation[orientation]
|
2009-08-14 00:52:33 +00:00
|
|
|
<< "\n\\suppress_date " << convert<string>(suppress_date)
|
1999-12-07 00:44:53 +00:00
|
|
|
<< '\n';
|
2010-04-05 20:31:10 +00:00
|
|
|
if (isbackgroundcolor == true)
|
2009-05-18 10:53:02 +00:00
|
|
|
os << "\\backgroundcolor " << lyx::X11hexname(backgroundcolor) << '\n';
|
2010-04-02 23:59:42 +00:00
|
|
|
if (isfontcolor == true)
|
2010-04-02 23:39:36 +00:00
|
|
|
os << "\\fontcolor " << lyx::X11hexname(fontcolor) << '\n';
|
2010-04-02 23:59:42 +00:00
|
|
|
if (notefontcolor != lyx::rgbFromHexName("#cccccc"))
|
2010-03-31 00:46:50 +00:00
|
|
|
os << "\\notefontcolor " << lyx::X11hexname(notefontcolor) << '\n';
|
2010-04-08 00:14:08 +00:00
|
|
|
if (boxbgcolor != lyx::rgbFromHexName("#ff0000"))
|
|
|
|
os << "\\boxbgcolor " << lyx::X11hexname(boxbgcolor) << '\n';
|
2003-08-17 11:28:23 +00:00
|
|
|
|
2005-10-25 15:21:49 +00:00
|
|
|
BranchList::const_iterator it = branchlist().begin();
|
|
|
|
BranchList::const_iterator end = branchlist().end();
|
2003-08-17 11:28:23 +00:00
|
|
|
for (; it != end; ++it) {
|
2008-09-21 19:27:20 +00:00
|
|
|
os << "\\branch " << to_utf8(it->branch())
|
|
|
|
<< "\n\\selected " << it->isSelected()
|
2010-04-21 01:19:35 +00:00
|
|
|
<< "\n\\filename_suffix " << it->hasFileNameSuffix()
|
2008-09-21 19:27:20 +00:00
|
|
|
<< "\n\\color " << lyx::X11hexname(it->color())
|
2003-09-09 17:25:35 +00:00
|
|
|
<< "\n\\end_branch"
|
2003-08-17 11:28:23 +00:00
|
|
|
<< "\n";
|
|
|
|
}
|
|
|
|
|
2009-04-16 07:29:01 +00:00
|
|
|
IndicesList::const_iterator iit = indiceslist().begin();
|
|
|
|
IndicesList::const_iterator iend = indiceslist().end();
|
|
|
|
for (; iit != iend; ++iit) {
|
|
|
|
os << "\\index " << to_utf8(iit->index())
|
|
|
|
<< "\n\\shortcut " << to_utf8(iit->shortcut())
|
|
|
|
<< "\n\\color " << lyx::X11hexname(iit->color())
|
|
|
|
<< "\n\\end_index"
|
|
|
|
<< "\n";
|
|
|
|
}
|
|
|
|
|
2002-03-21 17:27:08 +00:00
|
|
|
if (!paperwidth.empty())
|
1999-12-07 00:44:53 +00:00
|
|
|
os << "\\paperwidth "
|
|
|
|
<< VSpace(paperwidth).asLyXCommand() << '\n';
|
2002-03-21 17:27:08 +00:00
|
|
|
if (!paperheight.empty())
|
1999-12-07 00:44:53 +00:00
|
|
|
os << "\\paperheight "
|
|
|
|
<< VSpace(paperheight).asLyXCommand() << '\n';
|
2002-03-21 17:27:08 +00:00
|
|
|
if (!leftmargin.empty())
|
1999-12-07 00:44:53 +00:00
|
|
|
os << "\\leftmargin "
|
|
|
|
<< VSpace(leftmargin).asLyXCommand() << '\n';
|
2002-03-21 17:27:08 +00:00
|
|
|
if (!topmargin.empty())
|
1999-12-07 00:44:53 +00:00
|
|
|
os << "\\topmargin "
|
|
|
|
<< VSpace(topmargin).asLyXCommand() << '\n';
|
2002-03-21 17:27:08 +00:00
|
|
|
if (!rightmargin.empty())
|
1999-12-07 00:44:53 +00:00
|
|
|
os << "\\rightmargin "
|
|
|
|
<< VSpace(rightmargin).asLyXCommand() << '\n';
|
2002-03-21 17:27:08 +00:00
|
|
|
if (!bottommargin.empty())
|
1999-12-07 00:44:53 +00:00
|
|
|
os << "\\bottommargin "
|
|
|
|
<< VSpace(bottommargin).asLyXCommand() << '\n';
|
2002-03-21 17:27:08 +00:00
|
|
|
if (!headheight.empty())
|
1999-12-07 00:44:53 +00:00
|
|
|
os << "\\headheight "
|
|
|
|
<< VSpace(headheight).asLyXCommand() << '\n';
|
2002-03-21 17:27:08 +00:00
|
|
|
if (!headsep.empty())
|
1999-12-07 00:44:53 +00:00
|
|
|
os << "\\headsep "
|
|
|
|
<< VSpace(headsep).asLyXCommand() << '\n';
|
2002-03-21 17:27:08 +00:00
|
|
|
if (!footskip.empty())
|
1999-12-07 00:44:53 +00:00
|
|
|
os << "\\footskip "
|
|
|
|
<< VSpace(footskip).asLyXCommand() << '\n';
|
2008-02-19 05:24:48 +00:00
|
|
|
if (!columnsep.empty())
|
|
|
|
os << "\\columnsep "
|
|
|
|
<< VSpace(columnsep).asLyXCommand() << '\n';
|
1999-12-07 00:44:53 +00:00
|
|
|
os << "\\secnumdepth " << secnumdepth
|
|
|
|
<< "\n\\tocdepth " << tocdepth
|
|
|
|
<< "\n\\paragraph_separation "
|
2009-07-19 21:13:27 +00:00
|
|
|
<< string_paragraph_separation[paragraph_separation];
|
|
|
|
if (!paragraph_separation)
|
|
|
|
os << "\n\\paragraph_indentation " << getIndentation().asLyXCommand();
|
|
|
|
else
|
|
|
|
os << "\n\\defskip " << getDefSkip().asLyXCommand();
|
|
|
|
os << "\n\\quotes_language "
|
2005-10-13 10:59:39 +00:00
|
|
|
<< string_quotes_language[quotes_language]
|
2004-10-05 13:18:28 +00:00
|
|
|
<< "\n\\papercolumns " << columns
|
1999-12-07 00:44:53 +00:00
|
|
|
<< "\n\\papersides " << sides
|
|
|
|
<< "\n\\paperpagestyle " << pagestyle << '\n';
|
Add support for listings package. Two listings command \lstinline, \lstinputlisting and an environment \lstlisting are supported, along with preamble \lstset. \lstinputlisting is implemented through Include dialog, and the other two are implemented with a new inset listings, along with its dialog.
* src/LyXAction.cpp: listing-insert action
* src/insets/Inset.h,cpp: LISTINGS_CODE
* src/insets/InsetInclude.cpp: handle \lstinputlisting
* src/insets/InsetListings.h,cpp: new listings inset
* src/insets/InsetListingsParams.h,cpp: parameters from listings package
* src/insets/InsetCommandParams.h,cpp: handle lstinputlisting option
* src/Bidi.cpp: handle LISTINGS_CODE
* src/frontends/qt4/ui/TextLayoutUi.ui: update UI
* src/frontends/qt4/ui/ListingsUi.ui: new dialog
* src/frontends/qt4/ui/IncludeUi.ui: update UI
* src/frontends/qt4/QInclude.h,cpp: add lstinputlisting
* src/frontends/qt4/QDocument.h,cpp: add textedit for preamble listings_params
* src/frontends/qt4/QListings.h,cpp: new listings inset
* src/frontends/qt4/Dialogs.cpp: new listings dialog
* src/frontends/controllers/ControlInclude.h,cpp: add lstinputlisting
* src/frontends/controllers/ControlListings.h,cpp: new listings inset
* src/LyXFunc.cpp: handle LISTING_CODE
* src/Paragraph.cpp: handle LISTING_CODE
* src/factory.cpp: new listings inset
* src/CutAndPaste.cpp: handle LISTINGS_CODE
* src/LaTeXFeatures.cpp: require listings
* src/Text3.cpp: Handle LISTINGS_CODE
* src/lfuns.h: add LFUN_LISTING_INSERT
* src/Buffer.cpp: change lyx file format to 269
* src/BufferParams.h,cpp: add listings_params to preamble
* lib/lyx2lyx/LyX.py: lyx2lyx
* lib/lyx2lyx/lyx_1_5.py: lyx2lyx
* lib/ui/stdmenus.inc: new menu item (no shortcut!)
* src/insets/Makefile.am: update autotools
* src/frontends/controllers/Makefile.am
* src/frontends/qt4/Makefile.dialogs
* src/frontends/qt4/Makefile.am
* po/POTFILES.in: a few more translatable files.
* development/scons/scons_manifest.py: scons build system
* development/FORMAT: document format changes
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18243 a592a061-630c-0410-9148-cb99ea01b6c8
2007-05-09 19:11:42 +00:00
|
|
|
if (!listings_params.empty())
|
2007-05-28 22:27:45 +00:00
|
|
|
os << "\\listings_params \"" <<
|
Add support for listings package. Two listings command \lstinline, \lstinputlisting and an environment \lstlisting are supported, along with preamble \lstset. \lstinputlisting is implemented through Include dialog, and the other two are implemented with a new inset listings, along with its dialog.
* src/LyXAction.cpp: listing-insert action
* src/insets/Inset.h,cpp: LISTINGS_CODE
* src/insets/InsetInclude.cpp: handle \lstinputlisting
* src/insets/InsetListings.h,cpp: new listings inset
* src/insets/InsetListingsParams.h,cpp: parameters from listings package
* src/insets/InsetCommandParams.h,cpp: handle lstinputlisting option
* src/Bidi.cpp: handle LISTINGS_CODE
* src/frontends/qt4/ui/TextLayoutUi.ui: update UI
* src/frontends/qt4/ui/ListingsUi.ui: new dialog
* src/frontends/qt4/ui/IncludeUi.ui: update UI
* src/frontends/qt4/QInclude.h,cpp: add lstinputlisting
* src/frontends/qt4/QDocument.h,cpp: add textedit for preamble listings_params
* src/frontends/qt4/QListings.h,cpp: new listings inset
* src/frontends/qt4/Dialogs.cpp: new listings dialog
* src/frontends/controllers/ControlInclude.h,cpp: add lstinputlisting
* src/frontends/controllers/ControlListings.h,cpp: new listings inset
* src/LyXFunc.cpp: handle LISTING_CODE
* src/Paragraph.cpp: handle LISTING_CODE
* src/factory.cpp: new listings inset
* src/CutAndPaste.cpp: handle LISTINGS_CODE
* src/LaTeXFeatures.cpp: require listings
* src/Text3.cpp: Handle LISTINGS_CODE
* src/lfuns.h: add LFUN_LISTING_INSERT
* src/Buffer.cpp: change lyx file format to 269
* src/BufferParams.h,cpp: add listings_params to preamble
* lib/lyx2lyx/LyX.py: lyx2lyx
* lib/lyx2lyx/lyx_1_5.py: lyx2lyx
* lib/ui/stdmenus.inc: new menu item (no shortcut!)
* src/insets/Makefile.am: update autotools
* src/frontends/controllers/Makefile.am
* src/frontends/qt4/Makefile.dialogs
* src/frontends/qt4/Makefile.am
* po/POTFILES.in: a few more translatable files.
* development/scons/scons_manifest.py: scons build system
* development/FORMAT: document format changes
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18243 a592a061-630c-0410-9148-cb99ea01b6c8
2007-05-09 19:11:42 +00:00
|
|
|
InsetListingsParams(listings_params).encodedString() << "\"\n";
|
1999-09-27 18:44:28 +00:00
|
|
|
for (int i = 0; i < 4; ++i) {
|
2003-09-09 17:00:19 +00:00
|
|
|
if (user_defined_bullet(i) != ITEMIZE_DEFAULTS[i]) {
|
|
|
|
if (user_defined_bullet(i).getFont() != -1) {
|
2004-08-14 18:41:27 +00:00
|
|
|
os << "\\bullet " << i << " "
|
|
|
|
<< user_defined_bullet(i).getFont() << " "
|
|
|
|
<< user_defined_bullet(i).getCharacter() << " "
|
|
|
|
<< user_defined_bullet(i).getSize() << "\n";
|
1999-09-27 18:44:28 +00:00
|
|
|
}
|
|
|
|
else {
|
2006-10-20 19:26:23 +00:00
|
|
|
// FIXME UNICODE
|
2004-08-14 18:41:27 +00:00
|
|
|
os << "\\bulletLaTeX " << i << " \""
|
2006-10-20 19:26:23 +00:00
|
|
|
<< lyx::to_ascii(user_defined_bullet(i).getText())
|
2004-08-14 18:41:27 +00:00
|
|
|
<< "\"\n";
|
1999-09-27 18:44:28 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2003-02-08 19:18:01 +00:00
|
|
|
|
2010-04-21 15:18:25 +00:00
|
|
|
os << "\\tracking_changes " << convert<string>(trackChanges) << '\n'
|
|
|
|
<< "\\output_changes " << convert<string>(outputChanges) << '\n'
|
|
|
|
<< "\\html_math_output " << html_math_output << '\n'
|
2010-05-24 19:38:14 +00:00
|
|
|
<< "\\html_be_strict " << convert<string>(html_be_strict) << '\n';
|
|
|
|
|
|
|
|
if (html_math_img_scale != 1.0)
|
|
|
|
os << "\\html_math_img_scale " << convert<string>(html_math_img_scale) << '\n';
|
|
|
|
if (!html_latex_start.empty())
|
|
|
|
os << "\\html_latex_start " << html_latex_start << '\n';
|
|
|
|
if (!html_latex_end.empty())
|
|
|
|
os << "\\html_latex_end " << html_latex_end << '\n';
|
2003-03-12 02:39:12 +00:00
|
|
|
|
2009-07-23 20:08:05 +00:00
|
|
|
os << pimpl_->authorlist;
|
1999-09-27 18:44:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-12-14 14:51:47 +00:00
|
|
|
void BufferParams::validate(LaTeXFeatures & features) const
|
|
|
|
{
|
2008-02-28 01:42:02 +00:00
|
|
|
features.require(documentClass().requires());
|
2008-01-07 16:59:10 +00:00
|
|
|
|
2007-12-14 14:51:47 +00:00
|
|
|
if (outputChanges) {
|
|
|
|
bool dvipost = LaTeXFeatures::isAvailable("dvipost");
|
2009-01-12 08:01:28 +00:00
|
|
|
bool xcolorulem = LaTeXFeatures::isAvailable("ulem") &&
|
2007-12-14 14:51:47 +00:00
|
|
|
LaTeXFeatures::isAvailable("xcolor");
|
|
|
|
|
|
|
|
switch (features.runparams().flavor) {
|
|
|
|
case OutputParams::LATEX:
|
|
|
|
if (dvipost) {
|
|
|
|
features.require("ct-dvipost");
|
|
|
|
features.require("dvipost");
|
2009-01-12 08:01:28 +00:00
|
|
|
} else if (xcolorulem) {
|
|
|
|
features.require("ct-xcolor-ulem");
|
|
|
|
features.require("ulem");
|
2007-12-14 14:51:47 +00:00
|
|
|
features.require("xcolor");
|
|
|
|
} else {
|
|
|
|
features.require("ct-none");
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case OutputParams::PDFLATEX:
|
2009-04-06 06:58:30 +00:00
|
|
|
case OutputParams::XETEX:
|
2009-01-12 08:01:28 +00:00
|
|
|
if (xcolorulem) {
|
|
|
|
features.require("ct-xcolor-ulem");
|
|
|
|
features.require("ulem");
|
2007-12-14 14:51:47 +00:00
|
|
|
features.require("xcolor");
|
|
|
|
// improves color handling in PDF output
|
|
|
|
features.require("pdfcolmk");
|
|
|
|
} else {
|
|
|
|
features.require("ct-none");
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Floats with 'Here definitely' as default setting.
|
|
|
|
if (float_placement.find('H') != string::npos)
|
|
|
|
features.require("float");
|
|
|
|
|
|
|
|
// AMS Style is at document level
|
2008-02-24 14:59:23 +00:00
|
|
|
if (use_amsmath == package_on
|
2008-02-28 01:42:02 +00:00
|
|
|
|| documentClass().provides("amsmath"))
|
2007-12-14 14:51:47 +00:00
|
|
|
features.require("amsmath");
|
|
|
|
if (use_esint == package_on)
|
|
|
|
features.require("esint");
|
2009-11-11 01:48:07 +00:00
|
|
|
if (use_mhchem == package_on)
|
|
|
|
features.require("mhchem");
|
2007-12-14 14:51:47 +00:00
|
|
|
|
2008-01-22 08:41:45 +00:00
|
|
|
// Document-level line spacing
|
|
|
|
if (spacing().getSpace() != Spacing::Single && !spacing().isDefault())
|
|
|
|
features.require("setspace");
|
|
|
|
|
2007-12-14 14:51:47 +00:00
|
|
|
// the bullet shapes are buffer level not paragraph level
|
|
|
|
// so they are tested here
|
|
|
|
for (int i = 0; i < 4; ++i) {
|
|
|
|
if (user_defined_bullet(i) == ITEMIZE_DEFAULTS[i])
|
|
|
|
continue;
|
|
|
|
int const font = user_defined_bullet(i).getFont();
|
|
|
|
if (font == 0) {
|
|
|
|
int const c = user_defined_bullet(i).getCharacter();
|
|
|
|
if (c == 16
|
|
|
|
|| c == 17
|
|
|
|
|| c == 25
|
|
|
|
|| c == 26
|
|
|
|
|| c == 31) {
|
|
|
|
features.require("latexsym");
|
|
|
|
}
|
|
|
|
} else if (font == 1) {
|
|
|
|
features.require("amssymb");
|
|
|
|
} else if (font >= 2 && font <= 5) {
|
|
|
|
features.require("pifont");
|
|
|
|
}
|
|
|
|
}
|
2008-01-19 11:17:12 +00:00
|
|
|
|
2008-09-29 19:18:00 +00:00
|
|
|
if (pdfoptions().use_hyperref) {
|
2008-01-19 11:17:12 +00:00
|
|
|
features.require("hyperref");
|
2008-09-29 19:18:00 +00:00
|
|
|
// due to interferences with babel and hyperref, the color package has to
|
|
|
|
// be loaded after hyperref when hyperref is used with the colorlinks
|
2009-12-11 00:59:10 +00:00
|
|
|
// option, see http://www.lyx.org/trac/ticket/5291
|
2008-09-29 19:18:00 +00:00
|
|
|
if (pdfoptions().colorlinks)
|
|
|
|
features.require("color");
|
|
|
|
}
|
2008-07-15 13:08:27 +00:00
|
|
|
|
2009-04-06 06:58:30 +00:00
|
|
|
if (useXetex)
|
|
|
|
features.require("xetex");
|
|
|
|
|
2008-07-15 13:08:27 +00:00
|
|
|
if (language->lang() == "vietnamese")
|
|
|
|
features.require("vietnamese");
|
|
|
|
else if (language->lang() == "japanese")
|
|
|
|
features.require("japanese");
|
2007-12-14 14:51:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2006-10-19 16:51:30 +00:00
|
|
|
bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features,
|
2010-01-07 10:01:26 +00:00
|
|
|
TexRow & texrow, FileName const & filepath) const
|
2003-02-16 00:54:43 +00:00
|
|
|
{
|
|
|
|
os << "\\documentclass";
|
|
|
|
|
2008-02-28 01:42:02 +00:00
|
|
|
DocumentClass const & tclass = documentClass();
|
2008-02-24 14:59:23 +00:00
|
|
|
|
2003-02-16 00:54:43 +00:00
|
|
|
ostringstream clsoptions; // the document class options.
|
|
|
|
|
|
|
|
if (tokenPos(tclass.opt_fontsize(),
|
|
|
|
'|', fontsize) >= 0) {
|
|
|
|
// only write if existing in list (and not default)
|
|
|
|
clsoptions << fontsize << "pt,";
|
|
|
|
}
|
|
|
|
|
2010-05-18 01:22:08 +00:00
|
|
|
// all paper sizes except of A4, A5, B5 and the US sizes need the
|
|
|
|
// geometry package
|
2010-05-21 01:33:50 +00:00
|
|
|
bool nonstandard_papersize = papersize != PAPER_DEFAULT
|
|
|
|
&& papersize != PAPER_USLETTER
|
2010-05-18 01:22:08 +00:00
|
|
|
&& papersize != PAPER_USLEGAL
|
|
|
|
&& papersize != PAPER_USEXECUTIVE
|
|
|
|
&& papersize != PAPER_A4
|
|
|
|
&& papersize != PAPER_A5
|
|
|
|
&& papersize != PAPER_B5;
|
2003-02-16 00:54:43 +00:00
|
|
|
|
2005-07-17 11:17:13 +00:00
|
|
|
if (!use_geometry) {
|
2003-02-16 00:54:43 +00:00
|
|
|
switch (papersize) {
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_A4:
|
2003-02-16 00:54:43 +00:00
|
|
|
clsoptions << "a4paper,";
|
|
|
|
break;
|
|
|
|
case PAPER_USLETTER:
|
|
|
|
clsoptions << "letterpaper,";
|
|
|
|
break;
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_A5:
|
2003-02-16 00:54:43 +00:00
|
|
|
clsoptions << "a5paper,";
|
|
|
|
break;
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_B5:
|
2003-02-16 00:54:43 +00:00
|
|
|
clsoptions << "b5paper,";
|
|
|
|
break;
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_USEXECUTIVE:
|
2003-02-16 00:54:43 +00:00
|
|
|
clsoptions << "executivepaper,";
|
|
|
|
break;
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_USLEGAL:
|
2003-02-16 00:54:43 +00:00
|
|
|
clsoptions << "legalpaper,";
|
|
|
|
break;
|
2003-06-10 14:39:45 +00:00
|
|
|
case PAPER_DEFAULT:
|
2010-05-18 01:22:08 +00:00
|
|
|
case PAPER_A0:
|
|
|
|
case PAPER_A1:
|
|
|
|
case PAPER_A2:
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_A3:
|
2010-05-18 01:22:08 +00:00
|
|
|
case PAPER_A6:
|
|
|
|
case PAPER_B0:
|
|
|
|
case PAPER_B1:
|
|
|
|
case PAPER_B2:
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_B3:
|
|
|
|
case PAPER_B4:
|
2010-05-18 01:22:08 +00:00
|
|
|
case PAPER_B6:
|
|
|
|
case PAPER_JISB0:
|
|
|
|
case PAPER_JISB1:
|
|
|
|
case PAPER_JISB2:
|
|
|
|
case PAPER_JISB3:
|
|
|
|
case PAPER_JISB4:
|
|
|
|
case PAPER_JISB5:
|
|
|
|
case PAPER_JISB6:
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_CUSTOM:
|
2003-06-10 14:39:45 +00:00
|
|
|
break;
|
2003-02-16 00:54:43 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// if needed
|
|
|
|
if (sides != tclass.sides()) {
|
|
|
|
switch (sides) {
|
2007-11-07 23:25:08 +00:00
|
|
|
case OneSide:
|
2003-02-16 00:54:43 +00:00
|
|
|
clsoptions << "oneside,";
|
|
|
|
break;
|
2007-11-07 23:25:08 +00:00
|
|
|
case TwoSides:
|
2003-02-16 00:54:43 +00:00
|
|
|
clsoptions << "twoside,";
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// if needed
|
|
|
|
if (columns != tclass.columns()) {
|
|
|
|
if (columns == 2)
|
|
|
|
clsoptions << "twocolumn,";
|
|
|
|
else
|
|
|
|
clsoptions << "onecolumn,";
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!use_geometry
|
|
|
|
&& orientation == ORIENTATION_LANDSCAPE)
|
|
|
|
clsoptions << "landscape,";
|
|
|
|
|
|
|
|
// language should be a parameter to \documentclass
|
|
|
|
if (language->babel() == "hebrew"
|
|
|
|
&& default_language->babel() != "hebrew")
|
|
|
|
// This seems necessary
|
|
|
|
features.useLanguage(default_language);
|
|
|
|
|
2003-05-23 11:18:43 +00:00
|
|
|
ostringstream language_options;
|
|
|
|
bool const use_babel = features.useBabel();
|
|
|
|
if (use_babel) {
|
2003-02-16 00:54:43 +00:00
|
|
|
language_options << features.getLanguages();
|
2007-05-05 19:18:34 +00:00
|
|
|
if (!language->babel().empty()) {
|
|
|
|
if (!language_options.str().empty())
|
|
|
|
language_options << ',';
|
|
|
|
language_options << language->babel();
|
|
|
|
}
|
2008-10-12 17:21:18 +00:00
|
|
|
// if Vietnamese is used, babel must directly be loaded
|
|
|
|
// with language options, not in the class options, see
|
|
|
|
// http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg129417.html
|
|
|
|
size_t viet = language_options.str().find("vietnam");
|
|
|
|
// viet = string::npos when not found
|
|
|
|
// the same is for all other languages that are not directly supported by
|
|
|
|
// babel, but where LaTeX-packages add babel support.
|
2010-04-01 00:40:19 +00:00
|
|
|
// this is currently the case for Latvian, Lithuanian, Mongolian
|
|
|
|
// and Turkmen
|
2008-10-12 17:21:18 +00:00
|
|
|
size_t latvian = language_options.str().find("latvian");
|
|
|
|
size_t lithu = language_options.str().find("lithuanian");
|
|
|
|
size_t mongo = language_options.str().find("mongolian");
|
2010-04-01 00:40:19 +00:00
|
|
|
size_t turkmen = language_options.str().find("turkmen");
|
2008-10-12 17:21:18 +00:00
|
|
|
// if Japanese is used, babel must directly be loaded
|
|
|
|
// with language options, not in the class options, see
|
2009-12-11 00:59:10 +00:00
|
|
|
// http://www.lyx.org/trac/ticket/4597#c4
|
2008-10-12 17:21:18 +00:00
|
|
|
size_t japan = language_options.str().find("japanese");
|
|
|
|
if (lyxrc.language_global_options && !language_options.str().empty()
|
|
|
|
&& viet == string::npos && japan == string::npos
|
|
|
|
&& latvian == string::npos && lithu == string::npos
|
2010-04-01 00:40:19 +00:00
|
|
|
&& mongo == string::npos && turkmen == string::npos)
|
2003-02-16 00:54:43 +00:00
|
|
|
clsoptions << language_options.str() << ',';
|
|
|
|
}
|
|
|
|
|
2008-10-12 09:36:00 +00:00
|
|
|
// the predefined options from the layout
|
|
|
|
if (use_default_options && !tclass.options().empty())
|
|
|
|
clsoptions << tclass.options() << ',';
|
|
|
|
|
2003-02-16 00:54:43 +00:00
|
|
|
// the user-defined options
|
|
|
|
if (!options.empty()) {
|
|
|
|
clsoptions << options << ',';
|
|
|
|
}
|
|
|
|
|
2003-09-15 11:00:00 +00:00
|
|
|
string strOptions(clsoptions.str());
|
2003-02-16 00:54:43 +00:00
|
|
|
if (!strOptions.empty()) {
|
|
|
|
strOptions = rtrim(strOptions, ",");
|
2006-10-19 16:51:30 +00:00
|
|
|
// FIXME UNICODE
|
2006-10-21 00:16:43 +00:00
|
|
|
os << '[' << from_utf8(strOptions) << ']';
|
2003-02-16 00:54:43 +00:00
|
|
|
}
|
|
|
|
|
2006-10-21 00:16:43 +00:00
|
|
|
os << '{' << from_ascii(tclass.latexname()) << "}\n";
|
2003-02-16 00:54:43 +00:00
|
|
|
texrow.newline();
|
|
|
|
// end of \documentclass defs
|
|
|
|
|
2009-04-06 06:58:30 +00:00
|
|
|
if (useXetex) {
|
|
|
|
os << "\\usepackage{fontspec}\n";
|
|
|
|
texrow.newline();
|
|
|
|
}
|
|
|
|
|
2003-02-16 00:54:43 +00:00
|
|
|
// font selection must be done before loading fontenc.sty
|
2006-09-09 15:27:44 +00:00
|
|
|
string const fonts =
|
2007-02-08 15:18:36 +00:00
|
|
|
loadFonts(fontsRoman, fontsSans,
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
fontsTypewriter, fontsSC, fontsOSF,
|
2009-04-06 06:58:30 +00:00
|
|
|
fontsSansScale, fontsTypewriterScale, useXetex);
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
if (!fonts.empty()) {
|
2006-10-21 00:16:43 +00:00
|
|
|
os << from_ascii(fonts);
|
2003-02-16 00:54:43 +00:00
|
|
|
texrow.newline();
|
|
|
|
}
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
if (fontsDefaultFamily != "default")
|
2006-09-09 15:27:44 +00:00
|
|
|
os << "\\renewcommand{\\familydefault}{\\"
|
2006-10-21 00:16:43 +00:00
|
|
|
<< from_ascii(fontsDefaultFamily) << "}\n";
|
2007-06-22 22:23:37 +00:00
|
|
|
|
|
|
|
// set font encoding
|
2008-08-19 07:30:09 +00:00
|
|
|
// for arabic_arabi and farsi we also need to load the LAE and
|
|
|
|
// LFE encoding
|
2009-05-21 21:01:31 +00:00
|
|
|
// XeTeX works without fontenc
|
2009-11-29 14:43:00 +00:00
|
|
|
if (font_encoding() != "default" && language->lang() != "japanese"
|
2010-05-23 09:37:51 +00:00
|
|
|
&& !useXetex) {
|
2010-05-22 13:05:07 +00:00
|
|
|
size_t fars = language_options.str().find("farsi");
|
|
|
|
size_t arab = language_options.str().find("arabic");
|
2008-08-19 07:30:09 +00:00
|
|
|
if (language->lang() == "arabic_arabi"
|
2010-05-22 13:05:07 +00:00
|
|
|
|| language->lang() == "farsi" || fars != string::npos
|
|
|
|
|| arab != string::npos) {
|
2009-11-29 14:43:00 +00:00
|
|
|
os << "\\usepackage[" << from_ascii(font_encoding())
|
2007-06-22 22:31:49 +00:00
|
|
|
<< ",LFE,LAE]{fontenc}\n";
|
|
|
|
texrow.newline();
|
|
|
|
} else {
|
2009-11-29 14:43:00 +00:00
|
|
|
os << "\\usepackage[" << from_ascii(font_encoding())
|
2007-06-22 22:31:49 +00:00
|
|
|
<< "]{fontenc}\n";
|
|
|
|
texrow.newline();
|
|
|
|
}
|
2003-02-16 00:54:43 +00:00
|
|
|
}
|
|
|
|
|
2007-05-28 07:43:15 +00:00
|
|
|
// handle inputenc etc.
|
2007-05-28 12:25:53 +00:00
|
|
|
writeEncodingPreamble(os, features, texrow);
|
2007-05-01 17:48:04 +00:00
|
|
|
|
2010-01-07 10:01:26 +00:00
|
|
|
// includeonly
|
2010-01-10 13:25:41 +00:00
|
|
|
if (!features.runparams().includeall && !includedChildren_.empty()) {
|
2010-01-07 10:01:26 +00:00
|
|
|
os << "\\includeonly{";
|
|
|
|
list<string>::const_iterator it = includedChildren_.begin();
|
|
|
|
bool first = true;
|
|
|
|
for (; it != includedChildren_.end() ; ++it) {
|
|
|
|
string incfile = *it;
|
2010-04-21 01:19:09 +00:00
|
|
|
FileName inc = makeAbsPath(incfile, filepath.absFileName());
|
|
|
|
string mangled = DocFileName(changeExtension(inc.absFileName(), ".tex")).
|
2010-04-21 01:19:23 +00:00
|
|
|
mangledFileName();
|
2010-01-07 10:01:26 +00:00
|
|
|
if (!features.runparams().nice)
|
|
|
|
incfile = mangled;
|
|
|
|
// \includeonly doesn't want an extension
|
|
|
|
incfile = changeExtension(incfile, string());
|
2010-03-06 16:18:16 +00:00
|
|
|
incfile = support::latex_path(incfile);
|
2010-01-07 10:01:26 +00:00
|
|
|
if (!incfile.empty()) {
|
|
|
|
if (!first)
|
|
|
|
os << ",";
|
|
|
|
os << from_utf8(incfile);
|
|
|
|
}
|
|
|
|
first = false;
|
|
|
|
}
|
|
|
|
os << "}\n";
|
|
|
|
}
|
|
|
|
|
2008-09-08 21:51:38 +00:00
|
|
|
if (!listings_params.empty() || features.isRequired("listings")) {
|
Add support for listings package. Two listings command \lstinline, \lstinputlisting and an environment \lstlisting are supported, along with preamble \lstset. \lstinputlisting is implemented through Include dialog, and the other two are implemented with a new inset listings, along with its dialog.
* src/LyXAction.cpp: listing-insert action
* src/insets/Inset.h,cpp: LISTINGS_CODE
* src/insets/InsetInclude.cpp: handle \lstinputlisting
* src/insets/InsetListings.h,cpp: new listings inset
* src/insets/InsetListingsParams.h,cpp: parameters from listings package
* src/insets/InsetCommandParams.h,cpp: handle lstinputlisting option
* src/Bidi.cpp: handle LISTINGS_CODE
* src/frontends/qt4/ui/TextLayoutUi.ui: update UI
* src/frontends/qt4/ui/ListingsUi.ui: new dialog
* src/frontends/qt4/ui/IncludeUi.ui: update UI
* src/frontends/qt4/QInclude.h,cpp: add lstinputlisting
* src/frontends/qt4/QDocument.h,cpp: add textedit for preamble listings_params
* src/frontends/qt4/QListings.h,cpp: new listings inset
* src/frontends/qt4/Dialogs.cpp: new listings dialog
* src/frontends/controllers/ControlInclude.h,cpp: add lstinputlisting
* src/frontends/controllers/ControlListings.h,cpp: new listings inset
* src/LyXFunc.cpp: handle LISTING_CODE
* src/Paragraph.cpp: handle LISTING_CODE
* src/factory.cpp: new listings inset
* src/CutAndPaste.cpp: handle LISTINGS_CODE
* src/LaTeXFeatures.cpp: require listings
* src/Text3.cpp: Handle LISTINGS_CODE
* src/lfuns.h: add LFUN_LISTING_INSERT
* src/Buffer.cpp: change lyx file format to 269
* src/BufferParams.h,cpp: add listings_params to preamble
* lib/lyx2lyx/LyX.py: lyx2lyx
* lib/lyx2lyx/lyx_1_5.py: lyx2lyx
* lib/ui/stdmenus.inc: new menu item (no shortcut!)
* src/insets/Makefile.am: update autotools
* src/frontends/controllers/Makefile.am
* src/frontends/qt4/Makefile.dialogs
* src/frontends/qt4/Makefile.am
* po/POTFILES.in: a few more translatable files.
* development/scons/scons_manifest.py: scons build system
* development/FORMAT: document format changes
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18243 a592a061-630c-0410-9148-cb99ea01b6c8
2007-05-09 19:11:42 +00:00
|
|
|
os << "\\usepackage{listings}\n";
|
|
|
|
texrow.newline();
|
2008-09-08 21:51:38 +00:00
|
|
|
}
|
|
|
|
if (!listings_params.empty()) {
|
Add support for listings package. Two listings command \lstinline, \lstinputlisting and an environment \lstlisting are supported, along with preamble \lstset. \lstinputlisting is implemented through Include dialog, and the other two are implemented with a new inset listings, along with its dialog.
* src/LyXAction.cpp: listing-insert action
* src/insets/Inset.h,cpp: LISTINGS_CODE
* src/insets/InsetInclude.cpp: handle \lstinputlisting
* src/insets/InsetListings.h,cpp: new listings inset
* src/insets/InsetListingsParams.h,cpp: parameters from listings package
* src/insets/InsetCommandParams.h,cpp: handle lstinputlisting option
* src/Bidi.cpp: handle LISTINGS_CODE
* src/frontends/qt4/ui/TextLayoutUi.ui: update UI
* src/frontends/qt4/ui/ListingsUi.ui: new dialog
* src/frontends/qt4/ui/IncludeUi.ui: update UI
* src/frontends/qt4/QInclude.h,cpp: add lstinputlisting
* src/frontends/qt4/QDocument.h,cpp: add textedit for preamble listings_params
* src/frontends/qt4/QListings.h,cpp: new listings inset
* src/frontends/qt4/Dialogs.cpp: new listings dialog
* src/frontends/controllers/ControlInclude.h,cpp: add lstinputlisting
* src/frontends/controllers/ControlListings.h,cpp: new listings inset
* src/LyXFunc.cpp: handle LISTING_CODE
* src/Paragraph.cpp: handle LISTING_CODE
* src/factory.cpp: new listings inset
* src/CutAndPaste.cpp: handle LISTINGS_CODE
* src/LaTeXFeatures.cpp: require listings
* src/Text3.cpp: Handle LISTINGS_CODE
* src/lfuns.h: add LFUN_LISTING_INSERT
* src/Buffer.cpp: change lyx file format to 269
* src/BufferParams.h,cpp: add listings_params to preamble
* lib/lyx2lyx/LyX.py: lyx2lyx
* lib/lyx2lyx/lyx_1_5.py: lyx2lyx
* lib/ui/stdmenus.inc: new menu item (no shortcut!)
* src/insets/Makefile.am: update autotools
* src/frontends/controllers/Makefile.am
* src/frontends/qt4/Makefile.dialogs
* src/frontends/qt4/Makefile.am
* po/POTFILES.in: a few more translatable files.
* development/scons/scons_manifest.py: scons build system
* development/FORMAT: document format changes
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18243 a592a061-630c-0410-9148-cb99ea01b6c8
2007-05-09 19:11:42 +00:00
|
|
|
os << "\\lstset{";
|
2008-08-19 07:30:09 +00:00
|
|
|
// do not test validity because listings_params is
|
|
|
|
// supposed to be valid
|
|
|
|
string par =
|
|
|
|
InsetListingsParams(listings_params).separatedParams(true);
|
2008-09-08 21:51:38 +00:00
|
|
|
// we can't support all packages, but we should load the color package
|
|
|
|
if (par.find("\\color", 0) != string::npos)
|
|
|
|
features.require("color");
|
|
|
|
os << from_utf8(par);
|
Add support for listings package. Two listings command \lstinline, \lstinputlisting and an environment \lstlisting are supported, along with preamble \lstset. \lstinputlisting is implemented through Include dialog, and the other two are implemented with a new inset listings, along with its dialog.
* src/LyXAction.cpp: listing-insert action
* src/insets/Inset.h,cpp: LISTINGS_CODE
* src/insets/InsetInclude.cpp: handle \lstinputlisting
* src/insets/InsetListings.h,cpp: new listings inset
* src/insets/InsetListingsParams.h,cpp: parameters from listings package
* src/insets/InsetCommandParams.h,cpp: handle lstinputlisting option
* src/Bidi.cpp: handle LISTINGS_CODE
* src/frontends/qt4/ui/TextLayoutUi.ui: update UI
* src/frontends/qt4/ui/ListingsUi.ui: new dialog
* src/frontends/qt4/ui/IncludeUi.ui: update UI
* src/frontends/qt4/QInclude.h,cpp: add lstinputlisting
* src/frontends/qt4/QDocument.h,cpp: add textedit for preamble listings_params
* src/frontends/qt4/QListings.h,cpp: new listings inset
* src/frontends/qt4/Dialogs.cpp: new listings dialog
* src/frontends/controllers/ControlInclude.h,cpp: add lstinputlisting
* src/frontends/controllers/ControlListings.h,cpp: new listings inset
* src/LyXFunc.cpp: handle LISTING_CODE
* src/Paragraph.cpp: handle LISTING_CODE
* src/factory.cpp: new listings inset
* src/CutAndPaste.cpp: handle LISTINGS_CODE
* src/LaTeXFeatures.cpp: require listings
* src/Text3.cpp: Handle LISTINGS_CODE
* src/lfuns.h: add LFUN_LISTING_INSERT
* src/Buffer.cpp: change lyx file format to 269
* src/BufferParams.h,cpp: add listings_params to preamble
* lib/lyx2lyx/LyX.py: lyx2lyx
* lib/lyx2lyx/lyx_1_5.py: lyx2lyx
* lib/ui/stdmenus.inc: new menu item (no shortcut!)
* src/insets/Makefile.am: update autotools
* src/frontends/controllers/Makefile.am
* src/frontends/qt4/Makefile.dialogs
* src/frontends/qt4/Makefile.am
* po/POTFILES.in: a few more translatable files.
* development/scons/scons_manifest.py: scons build system
* development/FORMAT: document format changes
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18243 a592a061-630c-0410-9148-cb99ea01b6c8
2007-05-09 19:11:42 +00:00
|
|
|
// count the number of newlines
|
|
|
|
for (size_t i = 0; i < par.size(); ++i)
|
|
|
|
if (par[i] == '\n')
|
|
|
|
texrow.newline();
|
|
|
|
os << "}\n";
|
|
|
|
texrow.newline();
|
|
|
|
}
|
2009-03-28 10:48:16 +00:00
|
|
|
if (!tclass.provides("geometry")
|
2010-05-18 18:10:54 +00:00
|
|
|
&& (use_geometry || nonstandard_papersize)) {
|
2008-12-19 09:32:04 +00:00
|
|
|
odocstringstream ods;
|
|
|
|
if (!getGraphicsDriver("geometry").empty())
|
|
|
|
ods << getGraphicsDriver("geometry");
|
2003-02-16 00:54:43 +00:00
|
|
|
if (orientation == ORIENTATION_LANDSCAPE)
|
2008-12-19 09:32:04 +00:00
|
|
|
ods << ",landscape";
|
2005-07-16 16:57:55 +00:00
|
|
|
switch (papersize) {
|
|
|
|
case PAPER_CUSTOM:
|
2003-02-16 00:54:43 +00:00
|
|
|
if (!paperwidth.empty())
|
2008-12-19 09:32:04 +00:00
|
|
|
ods << ",paperwidth="
|
2006-10-21 00:16:43 +00:00
|
|
|
<< from_ascii(paperwidth);
|
2003-02-16 00:54:43 +00:00
|
|
|
if (!paperheight.empty())
|
2008-12-19 09:32:04 +00:00
|
|
|
ods << ",paperheight="
|
2006-10-21 00:16:43 +00:00
|
|
|
<< from_ascii(paperheight);
|
2003-02-16 00:54:43 +00:00
|
|
|
break;
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_USLETTER:
|
2008-12-19 09:32:04 +00:00
|
|
|
ods << ",letterpaper";
|
2003-02-16 00:54:43 +00:00
|
|
|
break;
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_USLEGAL:
|
2008-12-19 09:32:04 +00:00
|
|
|
ods << ",legalpaper";
|
2003-02-16 00:54:43 +00:00
|
|
|
break;
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_USEXECUTIVE:
|
2008-12-19 09:32:04 +00:00
|
|
|
ods << ",executivepaper";
|
2003-02-16 00:54:43 +00:00
|
|
|
break;
|
2010-05-18 01:22:08 +00:00
|
|
|
case PAPER_A0:
|
|
|
|
ods << ",a0paper";
|
|
|
|
break;
|
|
|
|
case PAPER_A1:
|
|
|
|
ods << ",a1paper";
|
|
|
|
break;
|
|
|
|
case PAPER_A2:
|
|
|
|
ods << ",a2paper";
|
|
|
|
break;
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_A3:
|
2008-12-19 09:32:04 +00:00
|
|
|
ods << ",a3paper";
|
2003-02-16 00:54:43 +00:00
|
|
|
break;
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_A4:
|
2008-12-19 09:32:04 +00:00
|
|
|
ods << ",a4paper";
|
2003-02-16 00:54:43 +00:00
|
|
|
break;
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_A5:
|
2008-12-19 09:32:04 +00:00
|
|
|
ods << ",a5paper";
|
2003-02-16 00:54:43 +00:00
|
|
|
break;
|
2010-05-18 01:22:08 +00:00
|
|
|
case PAPER_A6:
|
|
|
|
ods << ",a6paper";
|
|
|
|
break;
|
|
|
|
case PAPER_B0:
|
|
|
|
ods << ",b0paper";
|
|
|
|
break;
|
|
|
|
case PAPER_B1:
|
|
|
|
ods << ",b1paper";
|
|
|
|
break;
|
|
|
|
case PAPER_B2:
|
|
|
|
ods << ",b2paper";
|
|
|
|
break;
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_B3:
|
2008-12-19 09:32:04 +00:00
|
|
|
ods << ",b3paper";
|
2003-02-16 00:54:43 +00:00
|
|
|
break;
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_B4:
|
2008-12-19 09:32:04 +00:00
|
|
|
ods << ",b4paper";
|
2003-02-16 00:54:43 +00:00
|
|
|
break;
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_B5:
|
2008-12-19 09:32:04 +00:00
|
|
|
ods << ",b5paper";
|
2003-02-16 00:54:43 +00:00
|
|
|
break;
|
2010-05-18 01:22:08 +00:00
|
|
|
case PAPER_B6:
|
|
|
|
ods << ",b6paper";
|
|
|
|
break;
|
|
|
|
case PAPER_JISB0:
|
|
|
|
ods << ",b0j";
|
|
|
|
break;
|
|
|
|
case PAPER_JISB1:
|
|
|
|
ods << ",b1j";
|
|
|
|
break;
|
|
|
|
case PAPER_JISB2:
|
|
|
|
ods << ",b2j";
|
|
|
|
break;
|
|
|
|
case PAPER_JISB3:
|
|
|
|
ods << ",b3j";
|
|
|
|
break;
|
|
|
|
case PAPER_JISB4:
|
|
|
|
ods << ",b4j";
|
|
|
|
break;
|
|
|
|
case PAPER_JISB5:
|
|
|
|
ods << ",b5j";
|
|
|
|
break;
|
|
|
|
case PAPER_JISB6:
|
|
|
|
ods << ",b6j";
|
|
|
|
break;
|
2003-02-16 00:54:43 +00:00
|
|
|
default:
|
2005-07-16 16:57:55 +00:00
|
|
|
// default papersize ie PAPER_DEFAULT
|
2003-02-16 00:54:43 +00:00
|
|
|
switch (lyxrc.default_papersize) {
|
|
|
|
case PAPER_DEFAULT: // keep compiler happy
|
|
|
|
case PAPER_USLETTER:
|
2008-12-19 09:32:04 +00:00
|
|
|
ods << ",letterpaper";
|
2003-02-16 00:54:43 +00:00
|
|
|
break;
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_USLEGAL:
|
2008-12-19 09:32:04 +00:00
|
|
|
ods << ",legalpaper";
|
2003-02-16 00:54:43 +00:00
|
|
|
break;
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_USEXECUTIVE:
|
2008-12-19 09:32:04 +00:00
|
|
|
ods << ",executivepaper";
|
2003-02-16 00:54:43 +00:00
|
|
|
break;
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_A3:
|
2008-12-19 09:32:04 +00:00
|
|
|
ods << ",a3paper";
|
2003-02-16 00:54:43 +00:00
|
|
|
break;
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_A4:
|
2008-12-19 09:32:04 +00:00
|
|
|
ods << ",a4paper";
|
2003-02-16 00:54:43 +00:00
|
|
|
break;
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_A5:
|
2008-12-19 09:32:04 +00:00
|
|
|
ods << ",a5paper";
|
2003-02-16 00:54:43 +00:00
|
|
|
break;
|
2010-05-18 01:34:07 +00:00
|
|
|
case PAPER_B5:
|
|
|
|
ods << ",b5paper";
|
2010-05-18 01:22:08 +00:00
|
|
|
break;
|
2010-05-18 01:34:07 +00:00
|
|
|
case PAPER_A0:
|
|
|
|
case PAPER_A1:
|
|
|
|
case PAPER_A2:
|
|
|
|
case PAPER_A6:
|
2010-05-18 01:22:08 +00:00
|
|
|
case PAPER_B0:
|
|
|
|
case PAPER_B1:
|
|
|
|
case PAPER_B2:
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_B3:
|
|
|
|
case PAPER_B4:
|
2010-05-18 01:22:08 +00:00
|
|
|
case PAPER_B6:
|
|
|
|
case PAPER_JISB0:
|
|
|
|
case PAPER_JISB1:
|
|
|
|
case PAPER_JISB2:
|
|
|
|
case PAPER_JISB3:
|
|
|
|
case PAPER_JISB4:
|
|
|
|
case PAPER_JISB5:
|
|
|
|
case PAPER_JISB6:
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_CUSTOM:
|
|
|
|
break;
|
2003-02-16 00:54:43 +00:00
|
|
|
}
|
|
|
|
}
|
2008-12-19 09:32:04 +00:00
|
|
|
docstring const g_options = trim(ods.str(), ",");
|
|
|
|
os << "\\usepackage";
|
|
|
|
if (!g_options.empty())
|
|
|
|
os << '[' << g_options << ']';
|
|
|
|
os << "{geometry}\n";
|
|
|
|
texrow.newline();
|
2010-05-18 02:56:36 +00:00
|
|
|
// output this if only use_geometry is true
|
|
|
|
if (use_geometry) {
|
|
|
|
os << "\\geometry{verbose";
|
|
|
|
if (!topmargin.empty())
|
|
|
|
os << ",tmargin=" << from_ascii(Length(topmargin).asLatexString());
|
|
|
|
if (!bottommargin.empty())
|
|
|
|
os << ",bmargin=" << from_ascii(Length(bottommargin).asLatexString());
|
|
|
|
if (!leftmargin.empty())
|
|
|
|
os << ",lmargin=" << from_ascii(Length(leftmargin).asLatexString());
|
|
|
|
if (!rightmargin.empty())
|
|
|
|
os << ",rmargin=" << from_ascii(Length(rightmargin).asLatexString());
|
|
|
|
if (!headheight.empty())
|
|
|
|
os << ",headheight=" << from_ascii(Length(headheight).asLatexString());
|
|
|
|
if (!headsep.empty())
|
|
|
|
os << ",headsep=" << from_ascii(Length(headsep).asLatexString());
|
|
|
|
if (!footskip.empty())
|
|
|
|
os << ",footskip=" << from_ascii(Length(footskip).asLatexString());
|
|
|
|
if (!columnsep.empty())
|
|
|
|
os << ",columnsep=" << from_ascii(Length(columnsep).asLatexString());
|
|
|
|
os << "}\n";
|
|
|
|
texrow.newline();
|
|
|
|
}
|
2010-05-18 18:10:54 +00:00
|
|
|
} else if (orientation == ORIENTATION_LANDSCAPE
|
|
|
|
|| papersize != PAPER_DEFAULT) {
|
2008-07-01 12:46:46 +00:00
|
|
|
features.require("papersize");
|
2003-02-16 00:54:43 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if (tokenPos(tclass.opt_pagestyle(),
|
|
|
|
'|', pagestyle) >= 0) {
|
|
|
|
if (pagestyle == "fancy") {
|
|
|
|
os << "\\usepackage{fancyhdr}\n";
|
|
|
|
texrow.newline();
|
|
|
|
}
|
2006-10-21 00:16:43 +00:00
|
|
|
os << "\\pagestyle{" << from_ascii(pagestyle) << "}\n";
|
2003-02-16 00:54:43 +00:00
|
|
|
texrow.newline();
|
|
|
|
}
|
|
|
|
|
2010-04-05 20:31:10 +00:00
|
|
|
// only output when the background color is not default
|
|
|
|
if (isbackgroundcolor == true) {
|
2009-04-11 21:40:11 +00:00
|
|
|
// only require color here, the background color will be defined
|
|
|
|
// in LaTeXFeatures.cpp to avoid interferences with the LaTeX
|
|
|
|
// package pdfpages
|
|
|
|
features.require("color");
|
|
|
|
features.require("pagecolor");
|
|
|
|
}
|
|
|
|
|
2010-04-02 23:59:42 +00:00
|
|
|
// only output when the font color is not default
|
2010-04-02 23:39:36 +00:00
|
|
|
if (isfontcolor == true) {
|
|
|
|
// only require color here, the font color will be defined
|
|
|
|
// in LaTeXFeatures.cpp to avoid interferences with the LaTeX
|
|
|
|
// package pdfpages
|
|
|
|
features.require("color");
|
|
|
|
features.require("fontcolor");
|
|
|
|
}
|
|
|
|
|
2006-03-24 11:57:19 +00:00
|
|
|
// Only if class has a ToC hierarchy
|
|
|
|
if (tclass.hasTocLevels()) {
|
|
|
|
if (secnumdepth != tclass.secnumdepth()) {
|
|
|
|
os << "\\setcounter{secnumdepth}{"
|
|
|
|
<< secnumdepth
|
|
|
|
<< "}\n";
|
|
|
|
texrow.newline();
|
|
|
|
}
|
|
|
|
if (tocdepth != tclass.tocdepth()) {
|
|
|
|
os << "\\setcounter{tocdepth}{"
|
|
|
|
<< tocdepth
|
|
|
|
<< "}\n";
|
|
|
|
texrow.newline();
|
|
|
|
}
|
2003-02-16 00:54:43 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if (paragraph_separation) {
|
2009-07-19 21:13:27 +00:00
|
|
|
// when skip separation
|
2003-09-09 17:00:19 +00:00
|
|
|
switch (getDefSkip().kind()) {
|
2003-02-16 00:54:43 +00:00
|
|
|
case VSpace::SMALLSKIP:
|
2007-01-03 10:40:12 +00:00
|
|
|
os << "\\setlength{\\parskip}{\\smallskipamount}\n";
|
2003-02-16 00:54:43 +00:00
|
|
|
break;
|
|
|
|
case VSpace::MEDSKIP:
|
2007-01-03 10:40:12 +00:00
|
|
|
os << "\\setlength{\\parskip}{\\medskipamount}\n";
|
2003-02-16 00:54:43 +00:00
|
|
|
break;
|
|
|
|
case VSpace::BIGSKIP:
|
2007-01-03 10:40:12 +00:00
|
|
|
os << "\\setlength{\\parskip}{\\bigskipamount}\n";
|
2003-02-16 00:54:43 +00:00
|
|
|
break;
|
|
|
|
case VSpace::LENGTH:
|
2007-01-03 10:40:12 +00:00
|
|
|
os << "\\setlength{\\parskip}{"
|
2006-10-22 10:15:23 +00:00
|
|
|
<< from_utf8(getDefSkip().length().asLatexString())
|
2003-02-16 00:54:43 +00:00
|
|
|
<< "}\n";
|
|
|
|
break;
|
|
|
|
default: // should never happen // Then delete it.
|
2007-01-03 10:40:12 +00:00
|
|
|
os << "\\setlength{\\parskip}{\\medskipamount}\n";
|
2003-02-16 00:54:43 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
texrow.newline();
|
2007-01-03 10:40:12 +00:00
|
|
|
os << "\\setlength{\\parindent}{0pt}\n";
|
2003-02-16 00:54:43 +00:00
|
|
|
texrow.newline();
|
2009-07-19 21:13:27 +00:00
|
|
|
} else {
|
|
|
|
// when separation by indentation
|
|
|
|
// only output something when a width is given
|
|
|
|
if (getIndentation().asLyXCommand() != "default") {
|
|
|
|
os << "\\setlength{\\parindent}{"
|
|
|
|
<< from_utf8(getIndentation().asLatexCommand())
|
|
|
|
<< "}\n";
|
|
|
|
texrow.newline();
|
|
|
|
}
|
2003-02-16 00:54:43 +00:00
|
|
|
}
|
|
|
|
|
2008-09-29 19:18:00 +00:00
|
|
|
// Now insert the LyX specific LaTeX commands...
|
|
|
|
docstring lyxpreamble;
|
|
|
|
|
2010-05-25 11:36:00 +00:00
|
|
|
if (output_sync) {
|
|
|
|
if (!output_sync_macro.empty())
|
|
|
|
lyxpreamble += from_utf8(output_sync_macro) +"\n";
|
|
|
|
else if (features.runparams().flavor == OutputParams::LATEX)
|
|
|
|
lyxpreamble += "\\usepackage[active]{srcltx}\n";
|
|
|
|
else if (features.runparams().flavor == OutputParams::PDFLATEX)
|
|
|
|
lyxpreamble += "\\synctex=-1\n";
|
|
|
|
}
|
|
|
|
|
2008-09-29 19:18:00 +00:00
|
|
|
// due to interferences with babel and hyperref, the color package has to
|
|
|
|
// be loaded (when it is not already loaded) before babel when hyperref
|
|
|
|
// is used with the colorlinks option, see
|
2009-12-11 00:59:10 +00:00
|
|
|
// http://www.lyx.org/trac/ticket/5291
|
2008-09-29 19:18:00 +00:00
|
|
|
// we decided therefore to load color always before babel, see
|
|
|
|
// http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg144349.html
|
|
|
|
lyxpreamble += from_ascii(features.getColorOptions());
|
|
|
|
|
|
|
|
// If we use hyperref, jurabib, japanese, or vietnamese, we have to call babel before them.
|
2008-07-18 22:22:17 +00:00
|
|
|
if (use_babel
|
|
|
|
&& (features.isRequired("jurabib")
|
|
|
|
|| features.isRequired("hyperref")
|
|
|
|
|| features.isRequired("vietnamese")
|
|
|
|
|| features.isRequired("japanese") ) ) {
|
2008-09-29 19:18:00 +00:00
|
|
|
// FIXME UNICODE
|
2008-10-12 17:21:18 +00:00
|
|
|
lyxpreamble += from_utf8(babelCall(language_options.str())) + '\n';
|
2008-09-29 19:18:00 +00:00
|
|
|
lyxpreamble += from_utf8(features.getBabelOptions()) + '\n';
|
2004-03-07 14:33:17 +00:00
|
|
|
}
|
2004-04-03 08:37:12 +00:00
|
|
|
|
2003-02-16 00:54:43 +00:00
|
|
|
// The optional packages;
|
2008-09-29 19:18:00 +00:00
|
|
|
lyxpreamble += from_ascii(features.getPackages());
|
2003-02-16 00:54:43 +00:00
|
|
|
|
2009-04-16 07:29:01 +00:00
|
|
|
// Additional Indices
|
|
|
|
if (features.isRequired("splitidx")) {
|
|
|
|
IndicesList::const_iterator iit = indiceslist().begin();
|
|
|
|
IndicesList::const_iterator iend = indiceslist().end();
|
|
|
|
for (; iit != iend; ++iit) {
|
|
|
|
lyxpreamble += "\\newindex[";
|
|
|
|
lyxpreamble += iit->index();
|
|
|
|
lyxpreamble += "]{";
|
|
|
|
lyxpreamble += iit->shortcut();
|
|
|
|
lyxpreamble += "}\n";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2008-01-22 08:41:45 +00:00
|
|
|
// Line spacing
|
|
|
|
lyxpreamble += from_utf8(spacing().writePreamble(tclass.provides("SetSpace")));
|
|
|
|
|
2007-09-25 21:20:57 +00:00
|
|
|
// PDF support.
|
|
|
|
// * Hyperref manual: "Make sure it comes last of your loaded
|
|
|
|
// packages, to give it a fighting chance of not being over-written,
|
2008-10-11 12:47:51 +00:00
|
|
|
// since its job is to redefine many LaTeX commands."
|
2007-09-25 21:20:57 +00:00
|
|
|
// * Email from Heiko Oberdiek: "It is usually better to load babel
|
|
|
|
// before hyperref. Then hyperref has a chance to detect babel.
|
|
|
|
// * Has to be loaded before the "LyX specific LaTeX commands" to
|
|
|
|
// avoid errors with algorithm floats.
|
2010-03-01 17:39:41 +00:00
|
|
|
// use hyperref explicitly if it is required
|
2008-01-24 01:20:51 +00:00
|
|
|
if (features.isRequired("hyperref")) {
|
2010-03-01 17:39:41 +00:00
|
|
|
// pass what we have to stream here, since we need
|
|
|
|
// to access the stream itself in PDFOptions.
|
|
|
|
os << lyxpreamble;
|
|
|
|
|
|
|
|
int lines =
|
|
|
|
int(count(lyxpreamble.begin(), lyxpreamble.end(), '\n'));
|
|
|
|
|
|
|
|
OutputParams tmp_params = features.runparams();
|
|
|
|
lines += pdfoptions().writeLaTeX(tmp_params, os,
|
|
|
|
documentClass().provides("hyperref"));
|
|
|
|
texrow.newlines(lines);
|
|
|
|
// set back for the rest
|
|
|
|
lyxpreamble.clear();
|
2008-01-19 11:17:12 +00:00
|
|
|
}
|
2010-03-01 17:39:41 +00:00
|
|
|
|
2009-05-26 17:38:27 +00:00
|
|
|
// Will be surrounded by \makeatletter and \makeatother when not empty
|
2008-05-10 22:35:17 +00:00
|
|
|
docstring atlyxpreamble;
|
2003-02-16 00:54:43 +00:00
|
|
|
|
|
|
|
// Some macros LyX will need
|
2009-06-09 18:16:43 +00:00
|
|
|
docstring tmppreamble(features.getMacros());
|
2003-02-16 00:54:43 +00:00
|
|
|
|
2008-05-10 22:35:17 +00:00
|
|
|
if (!tmppreamble.empty())
|
|
|
|
atlyxpreamble += "\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% "
|
2003-02-16 00:54:43 +00:00
|
|
|
"LyX specific LaTeX commands.\n"
|
|
|
|
+ tmppreamble + '\n';
|
|
|
|
|
|
|
|
// the text class specific preamble
|
|
|
|
tmppreamble = features.getTClassPreamble();
|
2008-05-10 22:35:17 +00:00
|
|
|
if (!tmppreamble.empty())
|
|
|
|
atlyxpreamble += "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% "
|
2003-02-16 00:54:43 +00:00
|
|
|
"Textclass specific LaTeX commands.\n"
|
|
|
|
+ tmppreamble + '\n';
|
|
|
|
|
2009-08-15 23:43:59 +00:00
|
|
|
// suppress date if selected
|
|
|
|
// use \@ifundefined because we cannot be sure that every document class
|
|
|
|
// has a \date command
|
|
|
|
if (suppress_date)
|
|
|
|
atlyxpreamble += "\\@ifundefined{date}{}{\\date{}}\n";
|
|
|
|
|
2003-02-16 00:54:43 +00:00
|
|
|
/* the user-defined preamble */
|
2009-05-27 10:26:17 +00:00
|
|
|
if (!containsOnly(preamble, " \n\t"))
|
2006-11-08 17:22:44 +00:00
|
|
|
// FIXME UNICODE
|
2009-05-26 17:38:27 +00:00
|
|
|
atlyxpreamble += "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% "
|
|
|
|
"User specified LaTeX commands.\n"
|
|
|
|
+ from_utf8(preamble) + '\n';
|
2003-02-16 00:54:43 +00:00
|
|
|
|
2008-06-30 11:02:21 +00:00
|
|
|
// subfig loads internally the LaTeX package "caption". As
|
|
|
|
// caption is a very popular package, users will load it in
|
|
|
|
// the preamble. Therefore we must load subfig behind the
|
|
|
|
// user-defined preamble and check if the caption package was
|
|
|
|
// loaded or not. For the case that caption is loaded before
|
|
|
|
// subfig, there is the subfig option "caption=false". This
|
|
|
|
// option also works when a koma-script class is used and
|
|
|
|
// koma's own caption commands are used instead of caption. We
|
|
|
|
// use \PassOptionsToPackage here because the user could have
|
|
|
|
// already loaded subfig in the preamble.
|
2008-05-13 01:23:50 +00:00
|
|
|
if (features.isRequired("subfig")) {
|
|
|
|
atlyxpreamble += "\\@ifundefined{showcaptionsetup}{}{%\n"
|
2008-05-13 20:46:49 +00:00
|
|
|
" \\PassOptionsToPackage{caption=false}{subfig}}\n"
|
|
|
|
"\\usepackage{subfig}\n";
|
2008-05-13 01:23:50 +00:00
|
|
|
}
|
|
|
|
|
2003-02-16 00:54:43 +00:00
|
|
|
// Itemize bullet settings need to be last in case the user
|
|
|
|
// defines their own bullets that use a package included
|
|
|
|
// in the user-defined preamble -- ARRae
|
|
|
|
// Actually it has to be done much later than that
|
|
|
|
// since some packages like frenchb make modifications
|
|
|
|
// at \begin{document} time -- JMarc
|
2006-11-08 17:22:44 +00:00
|
|
|
docstring bullets_def;
|
2003-02-16 00:54:43 +00:00
|
|
|
for (int i = 0; i < 4; ++i) {
|
2003-09-09 17:00:19 +00:00
|
|
|
if (user_defined_bullet(i) != ITEMIZE_DEFAULTS[i]) {
|
2003-02-16 00:54:43 +00:00
|
|
|
if (bullets_def.empty())
|
2006-11-08 17:22:44 +00:00
|
|
|
bullets_def += "\\AtBeginDocument{\n";
|
2006-03-10 16:25:20 +00:00
|
|
|
bullets_def += " \\def\\labelitemi";
|
2003-02-16 00:54:43 +00:00
|
|
|
switch (i) {
|
|
|
|
// `i' is one less than the item to modify
|
|
|
|
case 0:
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
bullets_def += 'i';
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
bullets_def += "ii";
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
bullets_def += 'v';
|
|
|
|
break;
|
|
|
|
}
|
2006-03-10 16:25:20 +00:00
|
|
|
bullets_def += '{' +
|
2006-11-08 17:22:44 +00:00
|
|
|
user_defined_bullet(i).getText()
|
2003-02-16 00:54:43 +00:00
|
|
|
+ "}\n";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2008-05-10 22:35:17 +00:00
|
|
|
if (!bullets_def.empty())
|
|
|
|
atlyxpreamble += bullets_def + "}\n\n";
|
2003-02-16 00:54:43 +00:00
|
|
|
|
2009-05-26 17:38:27 +00:00
|
|
|
if (!atlyxpreamble.empty())
|
|
|
|
lyxpreamble += "\n\\makeatletter\n"
|
2008-05-10 22:35:17 +00:00
|
|
|
+ atlyxpreamble + "\\makeatother\n\n";
|
2003-02-16 00:54:43 +00:00
|
|
|
|
2008-09-29 19:18:00 +00:00
|
|
|
// We try to load babel late, in case it interferes with other packages.
|
2008-07-15 13:08:27 +00:00
|
|
|
// Jurabib and Hyperref have to be called after babel, though.
|
|
|
|
if (use_babel && !features.isRequired("jurabib")
|
|
|
|
&& !features.isRequired("hyperref")
|
|
|
|
&& !features.isRequired("vietnamese")
|
|
|
|
&& !features.isRequired("japanese")) {
|
|
|
|
// FIXME UNICODE
|
2008-10-12 17:21:18 +00:00
|
|
|
lyxpreamble += from_utf8(babelCall(language_options.str())) + '\n';
|
2008-07-15 13:08:27 +00:00
|
|
|
lyxpreamble += from_utf8(features.getBabelOptions()) + '\n';
|
|
|
|
}
|
|
|
|
|
2009-02-17 20:25:56 +00:00
|
|
|
docstring const i18npreamble = features.getTClassI18nPreamble(use_babel);
|
|
|
|
if (!i18npreamble.empty())
|
|
|
|
lyxpreamble += i18npreamble + '\n';
|
|
|
|
|
2003-02-16 00:54:43 +00:00
|
|
|
int const nlines =
|
2007-08-12 08:57:17 +00:00
|
|
|
int(count(lyxpreamble.begin(), lyxpreamble.end(), '\n'));
|
2010-03-01 17:39:41 +00:00
|
|
|
texrow.newlines(nlines);
|
2003-02-16 00:54:43 +00:00
|
|
|
|
2006-11-08 17:22:44 +00:00
|
|
|
os << lyxpreamble;
|
2009-04-06 08:10:50 +00:00
|
|
|
|
|
|
|
// these packages (xunicode, for that matter) need to be loaded at least
|
|
|
|
// after amsmath, amssymb, esint and the other packages that provide
|
|
|
|
// special glyphs
|
|
|
|
if (useXetex) {
|
|
|
|
os << "\\usepackage{xunicode}\n";
|
|
|
|
texrow.newline();
|
|
|
|
os << "\\usepackage{xltxtra}\n";
|
|
|
|
texrow.newline();
|
|
|
|
}
|
2003-05-22 22:44:30 +00:00
|
|
|
return use_babel;
|
2003-02-16 00:54:43 +00:00
|
|
|
}
|
|
|
|
|
2005-01-05 20:21:27 +00:00
|
|
|
|
2001-09-17 15:39:58 +00:00
|
|
|
void BufferParams::useClassDefaults()
|
|
|
|
{
|
2008-02-28 21:04:55 +00:00
|
|
|
DocumentClass const & tclass = documentClass();
|
1999-11-04 01:40:20 +00:00
|
|
|
|
|
|
|
sides = tclass.sides();
|
|
|
|
columns = tclass.columns();
|
|
|
|
pagestyle = tclass.pagestyle();
|
2008-10-12 09:36:00 +00:00
|
|
|
use_default_options = true;
|
2006-03-24 11:57:19 +00:00
|
|
|
// Only if class has a ToC hierarchy
|
|
|
|
if (tclass.hasTocLevels()) {
|
|
|
|
secnumdepth = tclass.secnumdepth();
|
|
|
|
tocdepth = tclass.tocdepth();
|
|
|
|
}
|
1999-09-27 18:44:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2001-09-17 15:39:58 +00:00
|
|
|
bool BufferParams::hasClassDefaults() const
|
|
|
|
{
|
2008-02-28 21:04:55 +00:00
|
|
|
DocumentClass const & tclass = documentClass();
|
2002-03-21 17:27:08 +00:00
|
|
|
|
2008-02-24 15:44:11 +00:00
|
|
|
return sides == tclass.sides()
|
2001-09-17 15:39:58 +00:00
|
|
|
&& columns == tclass.columns()
|
|
|
|
&& pagestyle == tclass.pagestyle()
|
2008-10-12 09:36:00 +00:00
|
|
|
&& use_default_options
|
2001-09-17 15:39:58 +00:00
|
|
|
&& secnumdepth == tclass.secnumdepth()
|
2008-02-24 15:44:11 +00:00
|
|
|
&& tocdepth == tclass.tocdepth();
|
2001-09-17 15:39:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2008-02-28 01:42:02 +00:00
|
|
|
DocumentClass const & BufferParams::documentClass() const
|
2002-07-21 21:21:06 +00:00
|
|
|
{
|
2008-02-28 01:42:02 +00:00
|
|
|
return *doc_class_;
|
This is one of a series of patches that will merge the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This first patch does some reworking of the infrastructrue. We need to distinguish between the TextClass that a particular document is using and the layout of that document, since modules, in particular, can modify the layout. The solution adopted here is to add a TextClass pointer to BufferParams, which will hold the layout. The layout itself is then constructed from the TextClass the document is using. At present, this is completely trivial, but that will change when modules are added.
The pointer in question is a boost::shared_ptr. This is needed because CutAndPaste saves a copy of the layout with each cut or copied selection. We cannot assume the selection vanishes when the document is closed, so there are two options: (i) keep a list of all the layouts that have ever been used by any document; (ii) used some kind of smart pointer. The latter seems preferable, as the former would waste memory. More importantly, the use of a smart pointer allows modules to be modified on disk and then reloaded while LyX is running, and it will eventually allow the same for layout files.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19756 a592a061-630c-0410-9148-cb99ea01b6c8
2007-08-23 16:41:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2008-05-22 14:02:35 +00:00
|
|
|
DocumentClass const * BufferParams::documentClassPtr() const {
|
2008-02-28 01:42:02 +00:00
|
|
|
return doc_class_;
|
This is one of a series of patches that will merge the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This first patch does some reworking of the infrastructrue. We need to distinguish between the TextClass that a particular document is using and the layout of that document, since modules, in particular, can modify the layout. The solution adopted here is to add a TextClass pointer to BufferParams, which will hold the layout. The layout itself is then constructed from the TextClass the document is using. At present, this is completely trivial, but that will change when modules are added.
The pointer in question is a boost::shared_ptr. This is needed because CutAndPaste saves a copy of the layout with each cut or copied selection. We cannot assume the selection vanishes when the document is closed, so there are two options: (i) keep a list of all the layouts that have ever been used by any document; (ii) used some kind of smart pointer. The latter seems preferable, as the former would waste memory. More importantly, the use of a smart pointer allows modules to be modified on disk and then reloaded while LyX is running, and it will eventually allow the same for layout files.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19756 a592a061-630c-0410-9148-cb99ea01b6c8
2007-08-23 16:41:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2008-02-28 01:42:02 +00:00
|
|
|
void BufferParams::setDocumentClass(DocumentClass const * const tc) {
|
|
|
|
// evil, but this function is evil
|
|
|
|
doc_class_ = const_cast<DocumentClass *>(tc);
|
This is one of a series of patches that will merge the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This first patch does some reworking of the infrastructrue. We need to distinguish between the TextClass that a particular document is using and the layout of that document, since modules, in particular, can modify the layout. The solution adopted here is to add a TextClass pointer to BufferParams, which will hold the layout. The layout itself is then constructed from the TextClass the document is using. At present, this is completely trivial, but that will change when modules are added.
The pointer in question is a boost::shared_ptr. This is needed because CutAndPaste saves a copy of the layout with each cut or copied selection. We cannot assume the selection vanishes when the document is closed, so there are two options: (i) keep a list of all the layouts that have ever been used by any document; (ii) used some kind of smart pointer. The latter seems preferable, as the former would waste memory. More importantly, the use of a smart pointer allows modules to be modified on disk and then reloaded while LyX is running, and it will eventually allow the same for layout files.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19756 a592a061-630c-0410-9148-cb99ea01b6c8
2007-08-23 16:41:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2008-10-16 17:14:46 +00:00
|
|
|
bool BufferParams::setBaseClass(string const & classname)
|
|
|
|
{
|
|
|
|
LYXERR(Debug::TCLASS, "setBaseClass: " << classname);
|
|
|
|
LayoutFileList & bcl = LayoutFileList::get();
|
|
|
|
if (!bcl.haveClass(classname)) {
|
|
|
|
docstring s =
|
2010-04-07 16:15:26 +00:00
|
|
|
bformat(_("The layout file:\n"
|
|
|
|
"%1$s\n"
|
|
|
|
"could not be found. A default textclass with default\n"
|
|
|
|
"layouts will be used. LyX will not be able to produce\n"
|
|
|
|
"correct output."),
|
2008-10-16 17:14:46 +00:00
|
|
|
from_utf8(classname));
|
|
|
|
frontend::Alert::error(_("Document class not found"), s);
|
|
|
|
bcl.addEmptyClass(classname);
|
|
|
|
}
|
|
|
|
|
|
|
|
bool const success = bcl[classname].load();
|
|
|
|
if (!success) {
|
|
|
|
docstring s =
|
2010-04-07 16:15:26 +00:00
|
|
|
bformat(_("Due to some error in it, the layout file:\n"
|
|
|
|
"%1$s\n"
|
|
|
|
"could not be loaded. A default textclass with default\n"
|
|
|
|
"layouts will be used. LyX will not be able to produce\n"
|
|
|
|
"correct output."),
|
2008-10-16 17:14:46 +00:00
|
|
|
from_utf8(classname));
|
|
|
|
frontend::Alert::error(_("Could not load class"), s);
|
2010-04-07 16:15:26 +00:00
|
|
|
bcl.addEmptyClass(classname);
|
2008-10-16 17:14:46 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pimpl_->baseClass_ = classname;
|
2009-02-21 16:45:37 +00:00
|
|
|
layoutModules_.adaptToBaseClass(baseClass(), removedModules_);
|
2008-07-25 16:48:48 +00:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
LayoutFile const * BufferParams::baseClass() const
|
|
|
|
{
|
|
|
|
if (LayoutFileList::get().haveClass(pimpl_->baseClass_))
|
|
|
|
return &(LayoutFileList::get()[pimpl_->baseClass_]);
|
|
|
|
else
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
LayoutFileIndex const & BufferParams::baseClassID() const
|
|
|
|
{
|
|
|
|
return pimpl_->baseClass_;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void BufferParams::makeDocumentClass()
|
|
|
|
{
|
|
|
|
if (!baseClass())
|
|
|
|
return;
|
|
|
|
|
2009-02-11 23:22:10 +00:00
|
|
|
doc_class_ = &(DocumentClassBundle::get().makeDocumentClass(*baseClass(), layoutModules_));
|
2008-07-25 16:48:48 +00:00
|
|
|
|
2008-03-24 12:31:07 +00:00
|
|
|
if (!local_layout.empty()) {
|
|
|
|
if (!doc_class_->read(local_layout, TextClass::MODULE)) {
|
|
|
|
docstring const msg = _("Error reading internal layout information");
|
|
|
|
frontend::Alert::warning(_("Read Error"), msg);
|
|
|
|
}
|
|
|
|
}
|
This is one of a series of patches that will merge the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the backend. The ModuleList class holds a list of the available modules, which are retrieved from lyxmodules.lst, itself generated by configure.py. There are two LFUNs available: modules-clear and module-add, which do the obvious thing; you can test by typing these into the minibuffer, along with the name of one of the available modules: URL (a CharStyle), Endnote (a Custom Inset), and---with the spaces---End To Foot (View>LaTeX and look at the user preamble), which are themselves in lib/layouts. There are some others, too, that allow theorems to be added to classes like article and book.
The GUI will come next.
Issues: (i) The configure.py script could be improved. It'd be nice, for example, if it tested for the presence of the LaTeX packages a particular module needs. But this would mean re-working the LaTeX script, and I don't know how to do that. Note that at present, the packages are ignored. This will change shortly. (ii) I've used std::string in LyXModule, following what seemed to be a precedent in TextClass. If some of these should be docstrings, please let me know, and I'll change them. (iii) There is at present no distinction between LaTeX and DocBook modules. Should there be? That is: Should there be modules that are available when the document class is a LaTeX class and others that are available only when it is DocBook? Or should there just be one set of modules? Each module can of course indicate for what it is suitable in its description.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19893 a592a061-630c-0410-9148-cb99ea01b6c8
2007-08-29 17:59:49 +00:00
|
|
|
}
|
|
|
|
|
2010-04-07 13:21:10 +00:00
|
|
|
|
2008-10-20 19:48:32 +00:00
|
|
|
bool BufferParams::moduleCanBeAdded(string const & modName) const
|
|
|
|
{
|
2009-02-21 16:45:37 +00:00
|
|
|
return layoutModules_.moduleCanBeAdded(modName, baseClass());
|
2008-10-20 19:48:32 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool BufferParams::addLayoutModule(string const & modName)
|
2008-02-24 15:44:11 +00:00
|
|
|
{
|
This is one of a series of patches that will merge the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the backend. The ModuleList class holds a list of the available modules, which are retrieved from lyxmodules.lst, itself generated by configure.py. There are two LFUNs available: modules-clear and module-add, which do the obvious thing; you can test by typing these into the minibuffer, along with the name of one of the available modules: URL (a CharStyle), Endnote (a Custom Inset), and---with the spaces---End To Foot (View>LaTeX and look at the user preamble), which are themselves in lib/layouts. There are some others, too, that allow theorems to be added to classes like article and book.
The GUI will come next.
Issues: (i) The configure.py script could be improved. It'd be nice, for example, if it tested for the presence of the LaTeX packages a particular module needs. But this would mean re-working the LaTeX script, and I don't know how to do that. Note that at present, the packages are ignored. This will change shortly. (ii) I've used std::string in LyXModule, following what seemed to be a precedent in TextClass. If some of these should be docstrings, please let me know, and I'll change them. (iii) There is at present no distinction between LaTeX and DocBook modules. Should there be? That is: Should there be modules that are available when the document class is a LaTeX class and others that are available only when it is DocBook? Or should there just be one set of modules? Each module can of course indicate for what it is suitable in its description.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19893 a592a061-630c-0410-9148-cb99ea01b6c8
2007-08-29 17:59:49 +00:00
|
|
|
LayoutModuleList::const_iterator it = layoutModules_.begin();
|
|
|
|
LayoutModuleList::const_iterator end = layoutModules_.end();
|
2008-04-20 15:00:11 +00:00
|
|
|
for (; it != end; it++)
|
This is one of a series of patches that will merge the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the backend. The ModuleList class holds a list of the available modules, which are retrieved from lyxmodules.lst, itself generated by configure.py. There are two LFUNs available: modules-clear and module-add, which do the obvious thing; you can test by typing these into the minibuffer, along with the name of one of the available modules: URL (a CharStyle), Endnote (a Custom Inset), and---with the spaces---End To Foot (View>LaTeX and look at the user preamble), which are themselves in lib/layouts. There are some others, too, that allow theorems to be added to classes like article and book.
The GUI will come next.
Issues: (i) The configure.py script could be improved. It'd be nice, for example, if it tested for the presence of the LaTeX packages a particular module needs. But this would mean re-working the LaTeX script, and I don't know how to do that. Note that at present, the packages are ignored. This will change shortly. (ii) I've used std::string in LyXModule, following what seemed to be a precedent in TextClass. If some of these should be docstrings, please let me know, and I'll change them. (iii) There is at present no distinction between LaTeX and DocBook modules. Should there be? That is: Should there be modules that are available when the document class is a LaTeX class and others that are available only when it is DocBook? Or should there just be one set of modules? Each module can of course indicate for what it is suitable in its description.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19893 a592a061-630c-0410-9148-cb99ea01b6c8
2007-08-29 17:59:49 +00:00
|
|
|
if (*it == modName)
|
2008-04-20 15:00:11 +00:00
|
|
|
return false;
|
This is one of a series of patches that will merge the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the backend. The ModuleList class holds a list of the available modules, which are retrieved from lyxmodules.lst, itself generated by configure.py. There are two LFUNs available: modules-clear and module-add, which do the obvious thing; you can test by typing these into the minibuffer, along with the name of one of the available modules: URL (a CharStyle), Endnote (a Custom Inset), and---with the spaces---End To Foot (View>LaTeX and look at the user preamble), which are themselves in lib/layouts. There are some others, too, that allow theorems to be added to classes like article and book.
The GUI will come next.
Issues: (i) The configure.py script could be improved. It'd be nice, for example, if it tested for the presence of the LaTeX packages a particular module needs. But this would mean re-working the LaTeX script, and I don't know how to do that. Note that at present, the packages are ignored. This will change shortly. (ii) I've used std::string in LyXModule, following what seemed to be a precedent in TextClass. If some of these should be docstrings, please let me know, and I'll change them. (iii) There is at present no distinction between LaTeX and DocBook modules. Should there be? That is: Should there be modules that are available when the document class is a LaTeX class and others that are available only when it is DocBook? Or should there just be one set of modules? Each module can of course indicate for what it is suitable in its description.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19893 a592a061-630c-0410-9148-cb99ea01b6c8
2007-08-29 17:59:49 +00:00
|
|
|
layoutModules_.push_back(modName);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-04-29 18:17:15 +00:00
|
|
|
Font const BufferParams::getFont() const
|
2006-02-05 13:20:16 +00:00
|
|
|
{
|
2008-02-28 01:42:02 +00:00
|
|
|
FontInfo f = documentClass().defaultfont();
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
if (fontsDefaultFamily == "rmdefault")
|
2007-10-28 18:51:54 +00:00
|
|
|
f.setFamily(ROMAN_FAMILY);
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
else if (fontsDefaultFamily == "sfdefault")
|
2007-10-28 18:51:54 +00:00
|
|
|
f.setFamily(SANS_FAMILY);
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
else if (fontsDefaultFamily == "ttdefault")
|
2007-10-28 18:51:54 +00:00
|
|
|
f.setFamily(TYPEWRITER_FAMILY);
|
|
|
|
return Font(f, language);
|
2006-02-05 13:20:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-04-26 11:30:54 +00:00
|
|
|
void BufferParams::readPreamble(Lexer & lex)
|
1999-09-27 18:44:28 +00:00
|
|
|
{
|
2001-08-06 19:12:46 +00:00
|
|
|
if (lex.getString() != "\\begin_preamble")
|
1999-10-07 18:44:17 +00:00
|
|
|
lyxerr << "Error (BufferParams::readPreamble):"
|
|
|
|
"consistency check failed." << endl;
|
1999-09-27 18:44:28 +00:00
|
|
|
|
|
|
|
preamble = lex.getLongString("\\end_preamble");
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2008-03-24 12:31:07 +00:00
|
|
|
void BufferParams::readLocalLayout(Lexer & lex)
|
|
|
|
{
|
|
|
|
if (lex.getString() != "\\begin_local_layout")
|
|
|
|
lyxerr << "Error (BufferParams::readLocalLayout):"
|
|
|
|
"consistency check failed." << endl;
|
|
|
|
|
|
|
|
local_layout = lex.getLongString("\\end_local_layout");
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-04-26 11:30:54 +00:00
|
|
|
void BufferParams::readLanguage(Lexer & lex)
|
1999-09-27 18:44:28 +00:00
|
|
|
{
|
|
|
|
if (!lex.next()) return;
|
2002-03-21 17:27:08 +00:00
|
|
|
|
2001-08-06 19:12:46 +00:00
|
|
|
string const tmptok = lex.getString();
|
2000-03-12 10:35:05 +00:00
|
|
|
|
1999-09-27 18:44:28 +00:00
|
|
|
// check if tmptok is part of tex_babel in tex-defs.h
|
2000-10-10 12:36:36 +00:00
|
|
|
language = languages.getLanguage(tmptok);
|
|
|
|
if (!language) {
|
|
|
|
// Language tmptok was not found
|
|
|
|
language = default_language;
|
2000-11-28 06:46:06 +00:00
|
|
|
lyxerr << "Warning: Setting language `"
|
|
|
|
<< tmptok << "' to `" << language->lang()
|
2000-10-10 12:36:36 +00:00
|
|
|
<< "'." << endl;
|
1999-09-27 18:44:28 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-04-26 11:30:54 +00:00
|
|
|
void BufferParams::readGraphicsDriver(Lexer & lex)
|
1999-09-27 18:44:28 +00:00
|
|
|
{
|
2008-02-24 15:44:11 +00:00
|
|
|
if (!lex.next())
|
|
|
|
return;
|
2002-03-21 17:27:08 +00:00
|
|
|
|
2001-08-06 19:12:46 +00:00
|
|
|
string const tmptok = lex.getString();
|
1999-09-27 18:44:28 +00:00
|
|
|
// check if tmptok is part of tex_graphics in tex_defs.h
|
2000-11-21 15:46:13 +00:00
|
|
|
int n = 0;
|
1999-09-27 18:44:28 +00:00
|
|
|
while (true) {
|
2000-11-21 15:46:13 +00:00
|
|
|
string const test = tex_graphics[n++];
|
2002-03-21 17:27:08 +00:00
|
|
|
|
|
|
|
if (test == tmptok) {
|
1999-09-27 18:44:28 +00:00
|
|
|
graphicsDriver = tmptok;
|
|
|
|
break;
|
2008-04-05 21:24:57 +00:00
|
|
|
}
|
|
|
|
if (test.empty()) {
|
1999-09-27 18:44:28 +00:00
|
|
|
lex.printError(
|
|
|
|
"Warning: graphics driver `$$Token' not recognized!\n"
|
|
|
|
" Setting graphics driver to `default'.\n");
|
|
|
|
graphicsDriver = "default";
|
|
|
|
break;
|
2002-03-21 17:27:08 +00:00
|
|
|
}
|
1999-09-27 18:44:28 +00:00
|
|
|
}
|
|
|
|
}
|
2003-07-17 08:23:33 +00:00
|
|
|
|
|
|
|
|
2007-04-26 11:30:54 +00:00
|
|
|
void BufferParams::readBullets(Lexer & lex)
|
2004-10-05 13:18:28 +00:00
|
|
|
{
|
2008-02-24 15:44:11 +00:00
|
|
|
if (!lex.next())
|
|
|
|
return;
|
2004-10-05 13:18:28 +00:00
|
|
|
|
|
|
|
int const index = lex.getInteger();
|
|
|
|
lex.next();
|
|
|
|
int temp_int = lex.getInteger();
|
|
|
|
user_defined_bullet(index).setFont(temp_int);
|
|
|
|
temp_bullet(index).setFont(temp_int);
|
|
|
|
lex >> temp_int;
|
|
|
|
user_defined_bullet(index).setCharacter(temp_int);
|
|
|
|
temp_bullet(index).setCharacter(temp_int);
|
|
|
|
lex >> temp_int;
|
|
|
|
user_defined_bullet(index).setSize(temp_int);
|
2004-10-26 21:16:44 +00:00
|
|
|
temp_bullet(index).setSize(temp_int);
|
2004-10-05 13:18:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-04-26 11:30:54 +00:00
|
|
|
void BufferParams::readBulletsLaTeX(Lexer & lex)
|
2004-10-05 13:18:28 +00:00
|
|
|
{
|
|
|
|
// The bullet class should be able to read this.
|
2008-02-24 15:44:11 +00:00
|
|
|
if (!lex.next())
|
|
|
|
return;
|
2004-10-05 13:18:28 +00:00
|
|
|
int const index = lex.getInteger();
|
|
|
|
lex.next(true);
|
2006-10-20 19:26:23 +00:00
|
|
|
docstring const temp_str = lex.getDocString();
|
2004-10-05 13:18:28 +00:00
|
|
|
|
|
|
|
user_defined_bullet(index).setText(temp_str);
|
|
|
|
temp_bullet(index).setText(temp_str);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
This is one of a series of patches that will merge the layout modules development in personal/branches/rgheck back into the tree.
Design goal: Allow the use of layout "modules", which are to LaTeX packages as layout files are to LaTeX document classes. Thus, one could have a module that defined certain character styles, environments, commands, or what have you, and include it in various documents, each of which uses a different document class, without having to modify the layout files themselves. For example, a theorems.module could be used with article.layout to provide support for theorem-type environments, without having to modify article.layout itself, and the same module could be used with book.layout, etc.
This patch adds the backend. The ModuleList class holds a list of the available modules, which are retrieved from lyxmodules.lst, itself generated by configure.py. There are two LFUNs available: modules-clear and module-add, which do the obvious thing; you can test by typing these into the minibuffer, along with the name of one of the available modules: URL (a CharStyle), Endnote (a Custom Inset), and---with the spaces---End To Foot (View>LaTeX and look at the user preamble), which are themselves in lib/layouts. There are some others, too, that allow theorems to be added to classes like article and book.
The GUI will come next.
Issues: (i) The configure.py script could be improved. It'd be nice, for example, if it tested for the presence of the LaTeX packages a particular module needs. But this would mean re-working the LaTeX script, and I don't know how to do that. Note that at present, the packages are ignored. This will change shortly. (ii) I've used std::string in LyXModule, following what seemed to be a precedent in TextClass. If some of these should be docstrings, please let me know, and I'll change them. (iii) There is at present no distinction between LaTeX and DocBook modules. Should there be? That is: Should there be modules that are available when the document class is a LaTeX class and others that are available only when it is DocBook? Or should there just be one set of modules? Each module can of course indicate for what it is suitable in its description.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19893 a592a061-630c-0410-9148-cb99ea01b6c8
2007-08-29 17:59:49 +00:00
|
|
|
void BufferParams::readModules(Lexer & lex)
|
|
|
|
{
|
|
|
|
if (!lex.eatLine()) {
|
|
|
|
lyxerr << "Error (BufferParams::readModules):"
|
|
|
|
"Unexpected end of input." << endl;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
while (true) {
|
|
|
|
string mod = lex.getString();
|
|
|
|
if (mod == "\\end_modules")
|
|
|
|
break;
|
|
|
|
addLayoutModule(mod);
|
|
|
|
lex.eatLine();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2008-07-27 17:46:27 +00:00
|
|
|
void BufferParams::readRemovedModules(Lexer & lex)
|
|
|
|
{
|
|
|
|
if (!lex.eatLine()) {
|
|
|
|
lyxerr << "Error (BufferParams::readRemovedModules):"
|
|
|
|
"Unexpected end of input." << endl;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
while (true) {
|
|
|
|
string mod = lex.getString();
|
|
|
|
if (mod == "\\end_removed_modules")
|
|
|
|
break;
|
2009-02-19 19:10:59 +00:00
|
|
|
removedModules_.push_back(mod);
|
2008-07-27 17:46:27 +00:00
|
|
|
lex.eatLine();
|
|
|
|
}
|
|
|
|
// now we want to remove any removed modules that were previously
|
|
|
|
// added. normally, that will be because default modules were added in
|
|
|
|
// setBaseClass(), which gets called when \textclass is read at the
|
|
|
|
// start of the read.
|
2009-02-19 19:10:59 +00:00
|
|
|
list<string>::const_iterator rit = removedModules_.begin();
|
|
|
|
list<string>::const_iterator const ren = removedModules_.end();
|
2008-07-27 17:46:27 +00:00
|
|
|
for (; rit != ren; rit++) {
|
|
|
|
LayoutModuleList::iterator const mit = layoutModules_.begin();
|
|
|
|
LayoutModuleList::iterator const men = layoutModules_.end();
|
|
|
|
LayoutModuleList::iterator found = find(mit, men, *rit);
|
|
|
|
if (found == men)
|
|
|
|
continue;
|
|
|
|
layoutModules_.erase(found);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2010-01-07 10:01:26 +00:00
|
|
|
void BufferParams::readIncludeonly(Lexer & lex)
|
|
|
|
{
|
|
|
|
if (!lex.eatLine()) {
|
|
|
|
lyxerr << "Error (BufferParams::readIncludeonly):"
|
|
|
|
"Unexpected end of input." << endl;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
while (true) {
|
|
|
|
string child = lex.getString();
|
|
|
|
if (child == "\\end_includeonly")
|
|
|
|
break;
|
|
|
|
includedChildren_.push_back(child);
|
|
|
|
lex.eatLine();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2008-03-15 00:22:54 +00:00
|
|
|
string BufferParams::paperSizeName(PapersizePurpose purpose) const
|
2003-07-17 08:23:33 +00:00
|
|
|
{
|
|
|
|
char real_papersize = papersize;
|
|
|
|
if (real_papersize == PAPER_DEFAULT)
|
|
|
|
real_papersize = lyxrc.default_papersize;
|
|
|
|
|
|
|
|
switch (real_papersize) {
|
2008-01-25 12:54:25 +00:00
|
|
|
case PAPER_DEFAULT:
|
|
|
|
// could be anything, so don't guess
|
|
|
|
return string();
|
|
|
|
case PAPER_CUSTOM: {
|
|
|
|
if (purpose == XDVI && !paperwidth.empty() &&
|
|
|
|
!paperheight.empty()) {
|
|
|
|
// heightxwidth<unit>
|
|
|
|
string first = paperwidth;
|
|
|
|
string second = paperheight;
|
|
|
|
if (orientation == ORIENTATION_LANDSCAPE)
|
|
|
|
first.swap(second);
|
|
|
|
// cut off unit.
|
|
|
|
return first.erase(first.length() - 2)
|
|
|
|
+ "x" + second;
|
|
|
|
}
|
|
|
|
return string();
|
|
|
|
}
|
2010-05-18 01:22:08 +00:00
|
|
|
case PAPER_A0:
|
|
|
|
// dvips and dvipdfm do not know this
|
|
|
|
if (purpose == DVIPS || purpose == DVIPDFM)
|
|
|
|
return string();
|
|
|
|
return "a0";
|
|
|
|
case PAPER_A1:
|
|
|
|
if (purpose == DVIPS || purpose == DVIPDFM)
|
|
|
|
return string();
|
|
|
|
return "a1";
|
|
|
|
case PAPER_A2:
|
|
|
|
if (purpose == DVIPS || purpose == DVIPDFM)
|
|
|
|
return string();
|
|
|
|
return "a2";
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_A3:
|
2003-07-17 08:23:33 +00:00
|
|
|
return "a3";
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_A4:
|
2003-07-17 08:23:33 +00:00
|
|
|
return "a4";
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_A5:
|
2003-07-17 08:23:33 +00:00
|
|
|
return "a5";
|
2010-05-18 01:22:08 +00:00
|
|
|
case PAPER_A6:
|
|
|
|
if (purpose == DVIPS || purpose == DVIPDFM)
|
|
|
|
return string();
|
|
|
|
return "a6";
|
|
|
|
case PAPER_B0:
|
|
|
|
if (purpose == DVIPS || purpose == DVIPDFM)
|
|
|
|
return string();
|
|
|
|
return "b0";
|
|
|
|
case PAPER_B1:
|
|
|
|
if (purpose == DVIPS || purpose == DVIPDFM)
|
|
|
|
return string();
|
|
|
|
return "b1";
|
|
|
|
case PAPER_B2:
|
|
|
|
if (purpose == DVIPS || purpose == DVIPDFM)
|
|
|
|
return string();
|
|
|
|
return "b2";
|
2008-01-25 12:54:25 +00:00
|
|
|
case PAPER_B3:
|
|
|
|
if (purpose == DVIPS || purpose == DVIPDFM)
|
|
|
|
return string();
|
|
|
|
return "b3";
|
|
|
|
case PAPER_B4:
|
|
|
|
// dvipdfm does not know this
|
|
|
|
if (purpose == DVIPDFM)
|
|
|
|
return string();
|
|
|
|
return "b4";
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_B5:
|
2008-01-25 12:54:25 +00:00
|
|
|
if (purpose == DVIPDFM)
|
|
|
|
return string();
|
2003-07-17 08:23:33 +00:00
|
|
|
return "b5";
|
2010-05-18 01:22:08 +00:00
|
|
|
case PAPER_B6:
|
|
|
|
if (purpose == DVIPS || purpose == DVIPDFM)
|
|
|
|
return string();
|
|
|
|
return "b6";
|
|
|
|
case PAPER_JISB0:
|
|
|
|
if (purpose == DVIPS || purpose == DVIPDFM)
|
|
|
|
return string();
|
|
|
|
return "jisb0";
|
|
|
|
case PAPER_JISB1:
|
|
|
|
if (purpose == DVIPS || purpose == DVIPDFM)
|
|
|
|
return string();
|
|
|
|
return "jisb1";
|
|
|
|
case PAPER_JISB2:
|
|
|
|
if (purpose == DVIPS || purpose == DVIPDFM)
|
|
|
|
return string();
|
|
|
|
return "jisb2";
|
|
|
|
case PAPER_JISB3:
|
|
|
|
if (purpose == DVIPS || purpose == DVIPDFM)
|
|
|
|
return string();
|
|
|
|
return "jisb3";
|
|
|
|
case PAPER_JISB4:
|
|
|
|
if (purpose == DVIPS || purpose == DVIPDFM)
|
|
|
|
return string();
|
|
|
|
return "jisb4";
|
|
|
|
case PAPER_JISB5:
|
|
|
|
if (purpose == DVIPS || purpose == DVIPDFM)
|
|
|
|
return string();
|
|
|
|
return "jisb5";
|
|
|
|
case PAPER_JISB6:
|
|
|
|
if (purpose == DVIPS || purpose == DVIPDFM)
|
|
|
|
return string();
|
|
|
|
return "jisb6";
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_USEXECUTIVE:
|
2008-01-25 12:54:25 +00:00
|
|
|
// dvipdfm does not know this
|
|
|
|
if (purpose == DVIPDFM)
|
|
|
|
return string();
|
2003-07-17 08:23:33 +00:00
|
|
|
return "foolscap";
|
2005-07-16 16:57:55 +00:00
|
|
|
case PAPER_USLEGAL:
|
2003-07-17 08:23:33 +00:00
|
|
|
return "legal";
|
|
|
|
case PAPER_USLETTER:
|
|
|
|
default:
|
2008-01-25 12:54:25 +00:00
|
|
|
if (purpose == XDVI)
|
|
|
|
return "us";
|
2003-07-17 08:23:33 +00:00
|
|
|
return "letter";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
string const BufferParams::dvips_options() const
|
|
|
|
{
|
|
|
|
string result;
|
|
|
|
|
|
|
|
if (use_geometry
|
2005-07-16 16:57:55 +00:00
|
|
|
&& papersize == PAPER_CUSTOM
|
2003-07-17 08:23:33 +00:00
|
|
|
&& !lyxrc.print_paper_dimension_flag.empty()
|
|
|
|
&& !paperwidth.empty()
|
|
|
|
&& !paperheight.empty()) {
|
|
|
|
// using a custom papersize
|
|
|
|
result = lyxrc.print_paper_dimension_flag;
|
|
|
|
result += ' ' + paperwidth;
|
|
|
|
result += ',' + paperheight;
|
|
|
|
} else {
|
2008-01-25 12:54:25 +00:00
|
|
|
string const paper_option = paperSizeName(DVIPS);
|
|
|
|
if (!paper_option.empty() && (paper_option != "letter" ||
|
|
|
|
orientation != ORIENTATION_LANDSCAPE)) {
|
2003-07-28 14:40:29 +00:00
|
|
|
// dvips won't accept -t letter -t landscape.
|
2003-07-17 08:23:33 +00:00
|
|
|
// In all other cases, include the paper size
|
|
|
|
// explicitly.
|
|
|
|
result = lyxrc.print_paper_flag;
|
|
|
|
result += ' ' + paper_option;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (orientation == ORIENTATION_LANDSCAPE &&
|
2005-07-16 16:57:55 +00:00
|
|
|
papersize != PAPER_CUSTOM)
|
2003-07-17 08:23:33 +00:00
|
|
|
result += ' ' + lyxrc.print_landscape_flag;
|
|
|
|
return result;
|
|
|
|
}
|
2004-03-07 14:33:17 +00:00
|
|
|
|
|
|
|
|
2009-11-29 14:43:00 +00:00
|
|
|
string const BufferParams::font_encoding() const
|
|
|
|
{
|
|
|
|
return (fontenc == "global") ? lyxrc.fontenc : fontenc;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2008-10-12 17:21:18 +00:00
|
|
|
string BufferParams::babelCall(string const & lang_opts) const
|
|
|
|
{
|
|
|
|
string lang_pack = lyxrc.language_package;
|
|
|
|
if (lang_pack != "\\usepackage{babel}")
|
|
|
|
return lang_pack;
|
|
|
|
// suppress the babel call when there is no babel language defined
|
|
|
|
// for the document language in the lib/languages file and if no
|
|
|
|
// other languages are used (lang_opts is then empty)
|
|
|
|
if (lang_opts.empty())
|
|
|
|
return string();
|
|
|
|
// If Vietnamese is used, babel must directly be loaded with the
|
|
|
|
// language options, see
|
|
|
|
// http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg129417.html
|
|
|
|
size_t viet = lang_opts.find("vietnam");
|
|
|
|
// viet = string::npos when not found
|
|
|
|
// the same is for all other languages that are not directly supported by
|
|
|
|
// babel, but where LaTeX-packages add babel support.
|
2010-04-01 00:40:19 +00:00
|
|
|
// this is currently the case for Latvian, Lithuanian, Mongolian
|
|
|
|
// and Turkmen
|
2008-10-12 17:21:18 +00:00
|
|
|
size_t latvian = lang_opts.find("latvian");
|
|
|
|
size_t lithu = lang_opts.find("lithuanian");
|
|
|
|
size_t mongo = lang_opts.find("mongolian");
|
2010-04-01 00:40:19 +00:00
|
|
|
size_t turkmen = lang_opts.find("turkmen");
|
2008-10-12 17:21:18 +00:00
|
|
|
// If Japanese is used, babel must directly be loaded with the
|
|
|
|
// language options, see
|
2009-12-11 00:59:10 +00:00
|
|
|
// http://www.lyx.org/trac/ticket/4597#c4
|
2008-10-12 17:21:18 +00:00
|
|
|
size_t japan = lang_opts.find("japanese");
|
|
|
|
if (!lyxrc.language_global_options || viet != string::npos
|
|
|
|
|| japan != string::npos || latvian != string::npos
|
2010-04-01 00:40:19 +00:00
|
|
|
|| lithu != string::npos || mongo != string::npos
|
|
|
|
|| turkmen != string::npos)
|
2008-10-12 17:21:18 +00:00
|
|
|
return "\\usepackage[" + lang_opts + "]{babel}";
|
|
|
|
return lang_pack;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2008-12-19 09:32:04 +00:00
|
|
|
docstring BufferParams::getGraphicsDriver(string const & package) const
|
|
|
|
{
|
|
|
|
docstring result;
|
|
|
|
|
|
|
|
if (package == "geometry") {
|
|
|
|
if (graphicsDriver == "dvips"
|
|
|
|
|| graphicsDriver == "dvipdfm"
|
|
|
|
|| graphicsDriver == "pdftex"
|
|
|
|
|| graphicsDriver == "vtex")
|
|
|
|
result = from_ascii(graphicsDriver);
|
|
|
|
else if (graphicsDriver == "dvipdfmx")
|
|
|
|
result = from_ascii("dvipdfm");
|
|
|
|
}
|
|
|
|
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-05-28 12:25:53 +00:00
|
|
|
void BufferParams::writeEncodingPreamble(odocstream & os,
|
|
|
|
LaTeXFeatures & features, TexRow & texrow) const
|
2007-05-28 07:43:15 +00:00
|
|
|
{
|
2009-04-06 06:58:30 +00:00
|
|
|
if (useXetex)
|
|
|
|
return;
|
2007-05-28 07:43:15 +00:00
|
|
|
if (inputenc == "auto") {
|
|
|
|
string const doc_encoding =
|
|
|
|
language->encoding()->latexName();
|
|
|
|
Encoding::Package const package =
|
|
|
|
language->encoding()->package();
|
|
|
|
|
|
|
|
// Create a list with all the input encodings used
|
|
|
|
// in the document
|
2007-12-12 19:28:07 +00:00
|
|
|
set<string> encodings =
|
2007-05-28 07:43:15 +00:00
|
|
|
features.getEncodingSet(doc_encoding);
|
|
|
|
|
2008-08-19 07:48:24 +00:00
|
|
|
// If the "japanese" package (i.e. pLaTeX) is used,
|
|
|
|
// inputenc must be omitted.
|
2007-10-09 00:59:16 +00:00
|
|
|
// see http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg129680.html
|
2008-08-18 17:26:09 +00:00
|
|
|
if (package == Encoding::japanese)
|
|
|
|
features.require("japanese");
|
2007-10-09 22:26:17 +00:00
|
|
|
|
2008-08-18 17:26:09 +00:00
|
|
|
if ((!encodings.empty() || package == Encoding::inputenc)
|
|
|
|
&& !features.isRequired("japanese")) {
|
2007-05-28 07:43:15 +00:00
|
|
|
os << "\\usepackage[";
|
2007-12-12 19:28:07 +00:00
|
|
|
set<string>::const_iterator it = encodings.begin();
|
|
|
|
set<string>::const_iterator const end = encodings.end();
|
2007-05-28 07:43:15 +00:00
|
|
|
if (it != end) {
|
|
|
|
os << from_ascii(*it);
|
|
|
|
++it;
|
|
|
|
}
|
|
|
|
for (; it != end; ++it)
|
|
|
|
os << ',' << from_ascii(*it);
|
|
|
|
if (package == Encoding::inputenc) {
|
|
|
|
if (!encodings.empty())
|
|
|
|
os << ',';
|
|
|
|
os << from_ascii(doc_encoding);
|
|
|
|
}
|
|
|
|
os << "]{inputenc}\n";
|
|
|
|
texrow.newline();
|
|
|
|
}
|
2007-11-17 12:37:18 +00:00
|
|
|
if (package == Encoding::CJK || features.mustProvide("CJK")) {
|
2009-01-14 09:26:13 +00:00
|
|
|
if (language->encoding()->name() == "utf8-cjk"
|
2009-03-04 17:02:22 +00:00
|
|
|
&& LaTeXFeatures::isAvailable("CJKutf8"))
|
2009-01-14 09:26:13 +00:00
|
|
|
os << "\\usepackage{CJKutf8}\n";
|
|
|
|
else
|
|
|
|
os << "\\usepackage{CJK}\n";
|
2007-05-28 07:43:15 +00:00
|
|
|
texrow.newline();
|
|
|
|
}
|
|
|
|
} else if (inputenc != "default") {
|
2007-07-23 16:46:26 +00:00
|
|
|
switch (encoding().package()) {
|
2007-05-28 07:43:15 +00:00
|
|
|
case Encoding::none:
|
2008-08-18 17:26:09 +00:00
|
|
|
case Encoding::japanese:
|
2007-05-28 07:43:15 +00:00
|
|
|
break;
|
|
|
|
case Encoding::inputenc:
|
2008-08-18 17:26:09 +00:00
|
|
|
// do not load inputenc if japanese is used
|
|
|
|
if (features.isRequired("japanese"))
|
|
|
|
break;
|
2007-05-28 07:43:15 +00:00
|
|
|
os << "\\usepackage[" << from_ascii(inputenc)
|
|
|
|
<< "]{inputenc}\n";
|
|
|
|
texrow.newline();
|
|
|
|
break;
|
|
|
|
case Encoding::CJK:
|
2009-01-14 09:26:13 +00:00
|
|
|
if (encoding().name() == "utf8-cjk"
|
2009-03-04 17:02:22 +00:00
|
|
|
&& LaTeXFeatures::isAvailable("CJKutf8"))
|
2009-01-14 09:26:13 +00:00
|
|
|
os << "\\usepackage{CJKutf8}\n";
|
|
|
|
else
|
|
|
|
os << "\\usepackage{CJK}\n";
|
2007-05-28 07:43:15 +00:00
|
|
|
texrow.newline();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2008-08-19 07:30:09 +00:00
|
|
|
// The encoding "armscii8" (for Armenian) is only available when
|
|
|
|
// the package "armtex" is loaded.
|
|
|
|
if (language->encoding()->latexName() == "armscii8"
|
|
|
|
|| inputenc == "armscii8") {
|
2007-05-28 07:43:15 +00:00
|
|
|
os << "\\usepackage{armtex}\n";
|
|
|
|
texrow.newline();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2009-04-06 06:58:30 +00:00
|
|
|
string const BufferParams::parseFontName(string const & name) const
|
|
|
|
{
|
|
|
|
string mangled = name;
|
|
|
|
size_t const idx = mangled.find('[');
|
|
|
|
if (idx == string::npos || idx == 0)
|
|
|
|
return mangled;
|
|
|
|
else
|
|
|
|
return mangled.substr(0, idx - 1);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-02-08 15:18:36 +00:00
|
|
|
string const BufferParams::loadFonts(string const & rm,
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
string const & sf, string const & tt,
|
|
|
|
bool const & sc, bool const & osf,
|
2009-04-06 06:58:30 +00:00
|
|
|
int const & sfscale, int const & ttscale,
|
|
|
|
bool const & xetex) const
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
{
|
|
|
|
/* The LaTeX font world is in a flux. In the PSNFSS font interface,
|
|
|
|
several packages have been replaced by others, that might not
|
|
|
|
be installed on every system. We have to take care for that
|
|
|
|
(see psnfss.pdf). We try to support all psnfss fonts as well
|
|
|
|
as the fonts that have become de facto standard in the LaTeX
|
|
|
|
world (e.g. Latin Modern). We do not support obsolete fonts
|
|
|
|
(like PSLatex). In general, it should be possible to mix any
|
|
|
|
rm font with any sf or tt font, respectively. (JSpitzm)
|
|
|
|
TODO:
|
|
|
|
-- separate math fonts.
|
|
|
|
*/
|
|
|
|
|
|
|
|
if (rm == "default" && sf == "default" && tt == "default")
|
|
|
|
//nothing to do
|
|
|
|
return string();
|
|
|
|
|
|
|
|
ostringstream os;
|
|
|
|
|
2009-04-06 06:58:30 +00:00
|
|
|
if (xetex) {
|
|
|
|
if (rm != "default")
|
|
|
|
os << "\\setmainfont[Mapping=tex-text]{"
|
|
|
|
<< parseFontName(rm) << "}\n";
|
|
|
|
if (sf != "default") {
|
|
|
|
string const sans = parseFontName(sf);
|
|
|
|
if (sfscale != 100)
|
|
|
|
os << "\\setsansfont[Scale="
|
|
|
|
<< float(sfscale) / 100
|
|
|
|
<< ",Mapping=tex-text]{"
|
|
|
|
<< sans << "}\n";
|
|
|
|
else
|
|
|
|
os << "\\setsansfont[Mapping=tex-text]{"
|
|
|
|
<< sans << "}\n";
|
|
|
|
}
|
|
|
|
if (tt != "default") {
|
|
|
|
string const mono = parseFontName(tt);
|
|
|
|
if (ttscale != 100)
|
|
|
|
os << "\\setmonofont[Scale="
|
|
|
|
<< float(sfscale) / 100
|
|
|
|
<< "]{"
|
|
|
|
<< mono << "}\n";
|
|
|
|
else
|
|
|
|
os << "\\setmonofont[Mapping=tex-text]{"
|
|
|
|
<< mono << "}\n";
|
|
|
|
}
|
|
|
|
if (osf)
|
|
|
|
os << "\\defaultfontfeatures{Numbers=OldStyle}\n";
|
|
|
|
return os.str();
|
|
|
|
}
|
|
|
|
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
// ROMAN FONTS
|
2010-01-29 14:44:21 +00:00
|
|
|
// Computer Modern (must be explicitly selectable -- there might be classes
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
// that define a different default font!
|
|
|
|
if (rm == "cmr") {
|
|
|
|
os << "\\renewcommand{\\rmdefault}{cmr}\n";
|
|
|
|
// osf for Computer Modern needs eco.sty
|
|
|
|
if (osf)
|
|
|
|
os << "\\usepackage{eco}\n";
|
|
|
|
}
|
|
|
|
// Latin Modern Roman
|
|
|
|
else if (rm == "lmodern")
|
|
|
|
os << "\\usepackage{lmodern}\n";
|
|
|
|
// AE
|
|
|
|
else if (rm == "ae") {
|
|
|
|
// not needed when using OT1 font encoding.
|
2009-11-29 14:43:00 +00:00
|
|
|
if (font_encoding() != "default")
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
os << "\\usepackage{ae,aecompl}\n";
|
|
|
|
}
|
|
|
|
// Times
|
|
|
|
else if (rm == "times") {
|
|
|
|
// try to load the best available package
|
2007-02-08 15:18:36 +00:00
|
|
|
if (LaTeXFeatures::isAvailable("mathptmx"))
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
os << "\\usepackage{mathptmx}\n";
|
2007-02-08 15:18:36 +00:00
|
|
|
else if (LaTeXFeatures::isAvailable("mathptm"))
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
os << "\\usepackage{mathptm}\n";
|
|
|
|
else
|
|
|
|
os << "\\usepackage{times}\n";
|
|
|
|
}
|
|
|
|
// Palatino
|
|
|
|
else if (rm == "palatino") {
|
|
|
|
// try to load the best available package
|
2007-02-08 15:18:36 +00:00
|
|
|
if (LaTeXFeatures::isAvailable("mathpazo")) {
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
os << "\\usepackage";
|
|
|
|
if (osf || sc) {
|
|
|
|
os << '[';
|
|
|
|
if (!osf)
|
|
|
|
os << "sc";
|
|
|
|
else
|
|
|
|
// "osf" includes "sc"!
|
|
|
|
os << "osf";
|
|
|
|
os << ']';
|
|
|
|
}
|
|
|
|
os << "{mathpazo}\n";
|
|
|
|
}
|
2007-02-08 15:18:36 +00:00
|
|
|
else if (LaTeXFeatures::isAvailable("mathpple"))
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
os << "\\usepackage{mathpple}\n";
|
|
|
|
else
|
|
|
|
os << "\\usepackage{palatino}\n";
|
|
|
|
}
|
|
|
|
// Utopia
|
|
|
|
else if (rm == "utopia") {
|
|
|
|
// fourier supersedes utopia.sty, but does
|
|
|
|
// not work with OT1 encoding.
|
2007-02-08 15:18:36 +00:00
|
|
|
if (LaTeXFeatures::isAvailable("fourier")
|
2009-11-29 14:43:00 +00:00
|
|
|
&& font_encoding() != "default") {
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
os << "\\usepackage";
|
|
|
|
if (osf || sc) {
|
|
|
|
os << '[';
|
|
|
|
if (sc)
|
|
|
|
os << "expert";
|
|
|
|
if (osf && sc)
|
|
|
|
os << ',';
|
|
|
|
if (osf)
|
|
|
|
os << "oldstyle";
|
|
|
|
os << ']';
|
|
|
|
}
|
|
|
|
os << "{fourier}\n";
|
|
|
|
}
|
|
|
|
else
|
|
|
|
os << "\\usepackage{utopia}\n";
|
|
|
|
}
|
|
|
|
// Bera (complete fontset)
|
|
|
|
else if (rm == "bera" && sf == "default" && tt == "default")
|
|
|
|
os << "\\usepackage{bera}\n";
|
|
|
|
// everything else
|
|
|
|
else if (rm != "default")
|
|
|
|
os << "\\usepackage" << "{" << rm << "}\n";
|
|
|
|
|
|
|
|
// SANS SERIF
|
|
|
|
// Helvetica, Bera Sans
|
|
|
|
if (sf == "helvet" || sf == "berasans") {
|
|
|
|
if (sfscale != 100)
|
|
|
|
os << "\\usepackage[scaled=" << float(sfscale) / 100
|
|
|
|
<< "]{" << sf << "}\n";
|
|
|
|
else
|
|
|
|
os << "\\usepackage{" << sf << "}\n";
|
|
|
|
}
|
|
|
|
// Avant Garde
|
|
|
|
else if (sf == "avant")
|
|
|
|
os << "\\usepackage{" << sf << "}\n";
|
|
|
|
// Computer Modern, Latin Modern, CM Bright
|
|
|
|
else if (sf != "default")
|
|
|
|
os << "\\renewcommand{\\sfdefault}{" << sf << "}\n";
|
|
|
|
|
|
|
|
// monospaced/typewriter
|
|
|
|
// Courier, LuxiMono
|
|
|
|
if (tt == "luximono" || tt == "beramono") {
|
|
|
|
if (ttscale != 100)
|
|
|
|
os << "\\usepackage[scaled=" << float(ttscale) / 100
|
|
|
|
<< "]{" << tt << "}\n";
|
|
|
|
else
|
|
|
|
os << "\\usepackage{" << tt << "}\n";
|
|
|
|
}
|
|
|
|
// Courier
|
|
|
|
else if (tt == "courier" )
|
|
|
|
os << "\\usepackage{" << tt << "}\n";
|
|
|
|
// Computer Modern, Latin Modern, CM Bright
|
2008-03-21 21:47:37 +00:00
|
|
|
else if (tt != "default")
|
The Grand Font Selection Redesign:
* lib/lyx2lyx/LyX.py (format_relation): add file format 247 (from Georg BAUM).
* lib/lyx2lyx/lyx_1_5.py: add convert_font_settings, revert_font_settings (from Georg BAUM).
* lib/chkconfig.ltx: Test for newly supported font packages
* lib/doc/LaTeXConfig.lyx.in: document newly supported font packages
* lib/doc/UserGuide.lyx: document new UI.
* lib/doc/Extended.lyx: update PostScript font documentation
* development/FORMAT: document file format change 246->247.
* src/tex-strings.[Ch]: new strings tex_fonts_roman, tex_fonts_sans,
tex_fonts_monospaced (with GUI equivalents).
* src/buffer.C: Format up to 247.
* src/bufferparams.C:
new params fontsRoman, fontsSans, fontsTypewriter, fontsDefaultFamily,
fontsSC, fontsOSF, fontsSansScale and fontsTypewriterScale
(LyXFont const BufferParams::getFont): consider switch of default family.
(string const BufferParams::loadFonts): new method to get all the LaTeX
font stuff done.
* src/paragraph.C
(LyXFont const Paragraph::getFont):
(LyXFont const Paragraph::getLabelFont):
(LyXFont const Paragraph::getLayoutFont): user buffer's not textclass's
default font
* src/text.C
(int LyXText::leftMargin):
(int LyXText::rightMargin): user buffer's not textclass's default font
* src/text2.C
(LyXFont LyXText::getFont):
(LyXFont LyXText::getLayoutFont):
(LyXFont LyXText::getLabelFont): check if the family of the default document
font has been customized.
* src/frontends/gtk/GDocument.[Ch]: implement new font ui (from Georg BAUM).
* src/frontends/gtk/glade/document.glade: implement new font ui (from Georg BAUM).
* src/frontends/qt3/Makefile.dialogs: add new FontModuleBase
* src/frontends/qt3/ui/FontModuleBase.ui: new File
* src/frontends/qt3/ui/TextLayoutModuleBase.ui: remove font widgets
* src/frontends/qt3/QDocument.C
* src/frontends/qt3/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/Makefile.dialogs: add new FontUi
* src/frontends/qt4/QDocumentDialog.[Ch]: implement new font ui
* src/frontends/qt4/ui/FontUi.ui: new File
* src/frontends/qt4/ui/TextLayoutUi.ui: remove font widgets
* src/frontends/qt4/ui/compile_uic.sh: add new FontUi
* src/frontends/xforms/FormDocument.[Ch]: implement new font ui
* src/frontends/xforms/forms/form_document.fd: add new font tab.
* src/frontends/controllers/ControlDocument.[Ch]
(char ControlDocument::fontfamilies):
(char ControlDocument::fontfamilies_gui):
(bool ControlDocument::isFontAvailable):
(bool ControlDocument::providesSC):
(bool ControlDocument::providesOSF):
(bool ControlDocument::providesScale): new methods, providing font info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14143 a592a061-630c-0410-9148-cb99ea01b6c8
2006-06-19 08:10:17 +00:00
|
|
|
os << "\\renewcommand{\\ttdefault}{" << tt << "}\n";
|
|
|
|
|
|
|
|
return os.str();
|
|
|
|
}
|
2006-10-21 00:16:43 +00:00
|
|
|
|
|
|
|
|
2006-12-10 16:08:52 +00:00
|
|
|
Encoding const & BufferParams::encoding() const
|
|
|
|
{
|
2009-04-06 06:58:30 +00:00
|
|
|
if (useXetex)
|
|
|
|
return *(encodings.fromLaTeXName("utf8-plain"));
|
2007-01-13 14:36:54 +00:00
|
|
|
if (inputenc == "auto" || inputenc == "default")
|
2008-03-21 21:47:37 +00:00
|
|
|
return *language->encoding();
|
|
|
|
Encoding const * const enc = encodings.fromLaTeXName(inputenc);
|
2006-12-10 16:08:52 +00:00
|
|
|
if (enc)
|
|
|
|
return *enc;
|
2008-03-21 21:47:37 +00:00
|
|
|
LYXERR0("Unknown inputenc value `" << inputenc
|
|
|
|
<< "'. Using `auto' instead.");
|
|
|
|
return *language->encoding();
|
2006-12-10 16:08:52 +00:00
|
|
|
}
|
|
|
|
|
2007-03-22 07:22:16 +00:00
|
|
|
|
2008-04-20 15:00:11 +00:00
|
|
|
CiteEngine BufferParams::citeEngine() const
|
2007-03-22 07:22:16 +00:00
|
|
|
{
|
|
|
|
// FIXME the class should provide the numerical/
|
|
|
|
// authoryear choice
|
2008-02-28 01:42:02 +00:00
|
|
|
if (documentClass().provides("natbib")
|
2008-04-20 15:00:11 +00:00
|
|
|
&& cite_engine_ != ENGINE_NATBIB_NUMERICAL)
|
|
|
|
return ENGINE_NATBIB_AUTHORYEAR;
|
2007-03-25 01:12:38 +00:00
|
|
|
return cite_engine_;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2008-04-20 15:00:11 +00:00
|
|
|
void BufferParams::setCiteEngine(CiteEngine cite_engine)
|
2007-03-25 01:12:38 +00:00
|
|
|
{
|
|
|
|
cite_engine_ = cite_engine;
|
2007-03-22 07:22:16 +00:00
|
|
|
}
|
|
|
|
|
2006-10-21 00:16:43 +00:00
|
|
|
} // namespace lyx
|