#include "gettext.h"
#include "Language.h"
#include "LaTeXFeatures.h"
-#include "LColor.h"
-#include "LyXFont.h"
-#include "LyXLex.h"
+#include "Messages.h"
+#include "Color.h"
+#include "Font.h"
+#include "Lexer.h"
#include "LyXRC.h"
-#include "LyXTextClassList.h"
+#include "TextClassList.h"
#include "OutputParams.h"
-#include "tex-strings.h"
#include "Spacing.h"
#include "TexRow.h"
#include "VSpace.h"
-#include "frontends/Alert.h"
+#include "frontends/alert.h"
#include "support/lyxalgo.h" // for lyx::count
#include "support/convert.h"
#include <sstream>
-
-namespace lyx {
-
-using support::bformat;
-using support::rtrim;
-using support::tokenPos;
-
using std::endl;
using std::string;
using std::istringstream;
using std::ostringstream;
using std::pair;
-namespace Alert = lyx::frontend::Alert;
+using lyx::support::bformat;
+using lyx::support::rtrim;
+using lyx::support::tokenPos;
+
+
+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[] = {
+ "default", "custom", "letterpaper", "executivepaper", "legalpaper",
+ "a3paper", "a4paper", "a5paper", "b3paper", "b4paper", "b5paper", ""
+};
+
+
+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[] = {
+ "default", "dvips", "dvitops", "emtex",
+ "ln", "oztex", "textures", "none", ""
+};
+
+
+namespace lyx {
+
// Local translators
namespace {
// Page sides
-typedef Translator<int, LyXTextClass::PageSides> SidesTranslator;
+typedef Translator<int, TextClass::PageSides> SidesTranslator;
SidesTranslator const init_sidestranslator()
{
- SidesTranslator translator(1, LyXTextClass::OneSide);
- translator.addPair(2, LyXTextClass::TwoSides);
+ SidesTranslator translator(1, TextClass::OneSide);
+ translator.addPair(2, TextClass::TwoSides);
return translator;
}
fontsTypewriterScale = 100;
inputenc = "auto";
graphicsDriver = "default";
- sides = LyXTextClass::OneSide;
+ sides = TextClass::OneSide;
columns = 1;
pagestyle = "default";
compressed = false;
{}
+docstring const BufferParams::B_(string const & l10n) const
+{
+ BOOST_ASSERT(language);
+ return getMessages(language->code()).get(l10n);
+}
+
+
AuthorList & BufferParams::authors()
{
return pimpl_->authorlist;
}
-string const BufferParams::readToken(LyXLex & lex, string const & token)
+string const BufferParams::readToken(Lexer & lex, string const & token)
{
if (token == "\\textclass") {
lex.next();
// FIXME: isTeXClassAvailable will try to load the layout file, but will
// fail because of the lack of path info. Warnings will be given although
// the layout file will be correctly loaded later.
- if (!getLyXTextClass().isTeXClassAvailable()) {
+ if (!getTextClass().isTeXClassAvailable()) {
docstring const msg =
bformat(_("The layout file requested by this document,\n"
"%1$s.layout,\n"
"class or style file required by it is not\n"
"available. See the Customization documentation\n"
"for more information.\n"), from_utf8(classname));
- Alert::warning(_("Document class not available"),
+ frontend::Alert::warning(_("Document class not available"),
msg + _("LyX will not be able to produce output."));
}
} else if (token == "\\begin_preamble") {
string color = lex.getString();
if (branch_ptr)
branch_ptr->setColor(color);
- // Update also the LColor table:
+ // Update also the Color table:
if (color == "none")
- color = lcolor.getX11Name(LColor::background);
+ color = lcolor.getX11Name(Color::background);
// FIXME UNICODE
lcolor.setColor(to_utf8(branch), color);
{
os << "\\documentclass";
- LyXTextClass const & tclass = getLyXTextClass();
+ TextClass const & tclass = getTextClass();
ostringstream clsoptions; // the document class options.
// if needed
if (sides != tclass.sides()) {
switch (sides) {
- case LyXTextClass::OneSide:
+ case TextClass::OneSide:
clsoptions << "oneside,";
break;
- case LyXTextClass::TwoSides:
+ case TextClass::TwoSides:
clsoptions << "twoside,";
break;
}
// thailatex does not use the inputenc package, but sets up
// babel directly for tis620-0 encoding, therefore we must
// not request inputenc for tis620-0 encoding
- if (!encodings.empty() || doc_encoding != "tis620-0") {
+ if (!encodings.empty() && doc_encoding != "tis620-0") {
os << "\\usepackage[";
std::set<string>::const_iterator it = encodings.begin();
std::set<string>::const_iterator const end = encodings.end();
os << "]{inputenc}\n";
texrow.newline();
}
+ // utf8-plain is for XeTeX users (inputenc not desired)
} else if (inputenc != "default" && inputenc != "tis620-0" &&
- inputenc != "ascii") {
+ inputenc != "ascii" && inputenc != "utf8-plain") {
os << "\\usepackage[" << from_ascii(inputenc)
<< "]{inputenc}\n";
texrow.newline();
}
+ // The encoding "armscii8" is only available when the package "armtex" is loaded.
+ // armscii8 is used for Armenian.
+ if (language->encoding()->latexName() == "armscii8" || inputenc == "armscii8") {
+ os << "\\usepackage{armtex}\n";
+ texrow.newline();
+ }
+
if (use_geometry || nonstandard_papersize) {
os << "\\usepackage{geometry}\n";
texrow.newline();
}
}
if (!topmargin.empty())
- os << ",tmargin=" << from_ascii(LyXLength(topmargin).asLatexString());
+ os << ",tmargin=" << from_ascii(Length(topmargin).asLatexString());
if (!bottommargin.empty())
- os << ",bmargin=" << from_ascii(LyXLength(bottommargin).asLatexString());
+ os << ",bmargin=" << from_ascii(Length(bottommargin).asLatexString());
if (!leftmargin.empty())
- os << ",lmargin=" << from_ascii(LyXLength(leftmargin).asLatexString());
+ os << ",lmargin=" << from_ascii(Length(leftmargin).asLatexString());
if (!rightmargin.empty())
- os << ",rmargin=" << from_ascii(LyXLength(rightmargin).asLatexString());
+ os << ",rmargin=" << from_ascii(Length(rightmargin).asLatexString());
if (!headheight.empty())
- os << ",headheight=" << from_ascii(LyXLength(headheight).asLatexString());
+ os << ",headheight=" << from_ascii(Length(headheight).asLatexString());
if (!headsep.empty())
- os << ",headsep=" << from_ascii(LyXLength(headsep).asLatexString());
+ os << ",headsep=" << from_ascii(Length(headsep).asLatexString());
if (!footskip.empty())
- os << ",footskip=" << from_ascii(LyXLength(footskip).asLatexString());
+ os << ",footskip=" << from_ascii(Length(footskip).asLatexString());
os << "}\n";
texrow.newline();
}
void BufferParams::useClassDefaults()
{
- LyXTextClass const & tclass = textclasslist[textclass];
+ TextClass const & tclass = textclasslist[textclass];
sides = tclass.sides();
columns = tclass.columns();
bool BufferParams::hasClassDefaults() const
{
- LyXTextClass const & tclass = textclasslist[textclass];
+ TextClass const & tclass = textclasslist[textclass];
return (sides == tclass.sides()
&& columns == tclass.columns()
}
-LyXTextClass const & BufferParams::getLyXTextClass() const
+TextClass const & BufferParams::getTextClass() const
{
return textclasslist[textclass];
}
-LyXFont const BufferParams::getFont() const
+Font const BufferParams::getFont() const
{
- LyXFont f = getLyXTextClass().defaultfont();
+ Font f = getTextClass().defaultfont();
f.setLanguage(language);
if (fontsDefaultFamily == "rmdefault")
- f.setFamily(LyXFont::ROMAN_FAMILY);
+ f.setFamily(Font::ROMAN_FAMILY);
else if (fontsDefaultFamily == "sfdefault")
- f.setFamily(LyXFont::SANS_FAMILY);
+ f.setFamily(Font::SANS_FAMILY);
else if (fontsDefaultFamily == "ttdefault")
- f.setFamily(LyXFont::TYPEWRITER_FAMILY);
+ f.setFamily(Font::TYPEWRITER_FAMILY);
return f;
}
-void BufferParams::readPreamble(LyXLex & lex)
+void BufferParams::readPreamble(Lexer & lex)
{
if (lex.getString() != "\\begin_preamble")
lyxerr << "Error (BufferParams::readPreamble):"
}
-void BufferParams::readLanguage(LyXLex & lex)
+void BufferParams::readLanguage(Lexer & lex)
{
if (!lex.next()) return;
}
-void BufferParams::readGraphicsDriver(LyXLex & lex)
+void BufferParams::readGraphicsDriver(Lexer & lex)
{
if (!lex.next()) return;
}
-void BufferParams::readBullets(LyXLex & lex)
+void BufferParams::readBullets(Lexer & lex)
{
if (!lex.next()) return;
}
-void BufferParams::readBulletsLaTeX(LyXLex & lex)
+void BufferParams::readBulletsLaTeX(Lexer & lex)
{
// The bullet class should be able to read this.
if (!lex.next()) return;
{
// FIXME the class should provide the numerical/
// authoryear choice
- if (getLyXTextClass().provides("natbib")
+ if (getTextClass().provides("natbib")
&& cite_engine_ != biblio::ENGINE_NATBIB_NUMERICAL)
return biblio::ENGINE_NATBIB_AUTHORYEAR;
return cite_engine_;