X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLaTeXFeatures.cpp;h=24dba48977f2784d2c01e6d314145bbb80c3df80;hb=5aece0832c5a1116b34ee003f7f51d8150f44db5;hp=60769c3a3a18d92bbfdd15291a920fa664558de7;hpb=286e3a0070774ad6aca742710ff8d972a2063e68;p=lyx.git diff --git a/src/LaTeXFeatures.cpp b/src/LaTeXFeatures.cpp index 60769c3a3a..24dba48977 100644 --- a/src/LaTeXFeatures.cpp +++ b/src/LaTeXFeatures.cpp @@ -36,6 +36,7 @@ using namespace std; using namespace lyx::support; + namespace lyx { ///////////////////////////////////////////////////////////////////// @@ -136,10 +137,6 @@ static string const floatingfootnote_def = " \\expandafter\\noexpand\\csname SF@gobble@opt \\endcsname}\n" "\\def\\SF@gobble@twobracket[#1]#2{}\n"; -static string const boldsymbol_def = - "%% Bold symbol macro for standard LaTeX users\n" - "\\providecommand{\\boldsymbol}[1]{\\mbox{\\boldmath $#1$}}\n"; - static string const binom_def = "%% Binom macro for standard LaTeX users\n" "\\newcommand{\\binom}[2]{{#1 \\choose #2}}\n"; @@ -201,7 +198,23 @@ static string const textcyr_def = " \\def\\encodingdefault{T2A}}\n" "\\DeclareRobustCommand{\\textcyr}[1]{\\leavevmode{\\cyrtext #1}}\n" "\\DeclareFontEncoding{T2A}{}{}\n"; - + +static string const lyxmathsym_def = + "\\DeclareRobustCommand{\\lyxmathsym}[1]{%\n" + " \\ifmmode\\begingroup\n" + " \\edef\\b@ld{bold}%\n" + " \\def\\rmorbf##1{\\ifx\\math@version\\b@ld\\textbf{##1}\\else\\textrm{##1}\\fi}%\n" + " \\mathchoice{\\hbox{\\rmorbf{#1}}}{\\hbox{\\rmorbf{#1}}}%\n" + " {\\hbox{\\smaller[2]\\rmorbf{#1}}}{\\hbox{\\smaller[3]\\rmorbf{#1}}}%\n" + " \\endgroup\\else#1\\fi}\n"; + +static string const papersizedvi_def = + "\\special{papersize=\\the\\paperwidth,\\the\\paperheight}\n"; + +static string const papersizepdf_def = + "\\pdfpageheight\\paperheight\n" + "\\pdfpagewidth\\paperwidth\n"; + ///////////////////////////////////////////////////////////////////// // // LaTeXFeatures @@ -240,7 +253,7 @@ void LaTeXFeatures::require(set const & names) void LaTeXFeatures::getAvailable() { - Lexer lex(0, 0); + Lexer lex; support::FileName const real_file = libFileSearch("", "packages.lst"); if (real_file.empty()) @@ -358,6 +371,10 @@ void LaTeXFeatures::useLanguage(Language const * lang) { if (!lang->babel().empty()) UsedLanguages_.insert(lang); + if (lang->lang() == "vietnamese") + require("vietnamese"); + else if (lang->lang() == "japanese") + require("japanese"); // CJK languages do not have a babel name. // They use the CJK package if (lang->encoding()->package() == Encoding::CJK) @@ -418,7 +435,7 @@ char const * simplefeatures[] = { "rotating", "latexsym", "pifont", - "subfig", + // subfig is handled in BufferParams.cpp "varioref", "prettyref", /*For a successful cooperation of the `wrapfig' package with the @@ -453,7 +470,10 @@ char const * simplefeatures[] = { "ifthen", "amsthm", "listings", - "bm" + "bm", + "pdfpages", + "relsize", + "amscd" }; int const nb_simplefeatures = sizeof(simplefeatures) / sizeof(char const *); @@ -493,6 +513,9 @@ string const LaTeXFeatures::getPackages() const (mustProvide("esintoramsmath") && params_.use_esint == BufferParams::package_off)) { packages << "\\usepackage{amsmath}\n"; + } else if (mustProvide("amsbsy")) { + // amsbsy is already provided by amsmath + packages << "\\usepackage{amsbsy}\n"; } // wasysym is a simple feature, but it must be after amsmath if both @@ -520,9 +543,8 @@ string const LaTeXFeatures::getPackages() const } // pdfcolmk must be loaded after color - if (mustProvide("pdfcolmk")) { + if (mustProvide("pdfcolmk")) packages << "\\usepackage{pdfcolmk}\n"; - } // makeidx.sty if (isRequired("makeidx")) { @@ -556,13 +578,12 @@ string const LaTeXFeatures::getPackages() const } // lyxskak.sty --- newer chess support based on skak.sty - if (mustProvide("chess")) { + if (mustProvide("chess")) packages << "\\usepackage[ps,mover]{lyxskak}\n"; - } // setspace.sty if (mustProvide("setspace") && !tclass.provides("SetSpace")) - packages << "\\usepackage{setspace}\n"; + packages << "\\usepackage{setspace}\n"; // amssymb.sty if (mustProvide("amssymb") @@ -578,29 +599,25 @@ string const LaTeXFeatures::getPackages() const // natbib.sty if (mustProvide("natbib")) { packages << "\\usepackage["; - if (params_.getEngine() == biblio::ENGINE_NATBIB_NUMERICAL) { + if (params_.citeEngine() == ENGINE_NATBIB_NUMERICAL) packages << "numbers"; - } else { + else packages << "authoryear"; - } packages << "]{natbib}\n"; } // jurabib -- we need version 0.6 at least. - if (mustProvide("jurabib")) { + if (mustProvide("jurabib")) packages << "\\usepackage{jurabib}[2004/01/25]\n"; - } // xargs -- we need version 1.09 at least - if (mustProvide("xargs")) { + if (mustProvide("xargs")) packages << "\\usepackage{xargs}[2008/03/08]\n"; - } // bibtopic -- the dot provides the aux file naming which // LyX can detect. - if (mustProvide("bibtopic")) { + if (mustProvide("bibtopic")) packages << "\\usepackage[dot]{bibtopic}\n"; - } if (mustProvide("xy")) packages << "\\usepackage[all]{xy}\n"; @@ -631,6 +648,12 @@ string const LaTeXFeatures::getMacros() const for (; pit != pend; ++pit) macros << *pit << '\n'; + if (mustProvide("papersize")) + if (runparams_.flavor == OutputParams::LATEX) + macros << papersizedvi_def << '\n'; + else + macros << papersizepdf_def << '\n'; + if (mustProvide("LyX")) macros << lyx_def << '\n'; @@ -649,6 +672,9 @@ string const LaTeXFeatures::getMacros() const if (mustProvide("textcyr")) macros << textcyr_def << '\n'; + if (mustProvide("lyxmathsym")) + macros << lyxmathsym_def << '\n'; + // quotes. if (mustProvide("quotesinglbase")) macros << quotesinglbase_def << '\n'; @@ -664,8 +690,6 @@ string const LaTeXFeatures::getMacros() const macros << guillemotright_def << '\n'; // Math mode - if (mustProvide("boldsymbol") && !isRequired("amsmath")) - macros << boldsymbol_def << '\n'; if (mustProvide("binom") && !isRequired("amsmath")) macros << binom_def << '\n'; if (mustProvide("mathcircumflex")) @@ -786,7 +810,8 @@ docstring const LaTeXFeatures::getIncludedFiles(string const & fname) const } -void LaTeXFeatures::showStruct() const { +void LaTeXFeatures::showStruct() const +{ lyxerr << "LyX needs the following commands when LaTeXing:" << "\n***** Packages:" << getPackages() << "\n***** Macros:" << getMacros()