"}\n"
"{\\end{list}}\n");
+static docstring const floatingfootnote_def = from_ascii(
+ "%% Special footnote code from the package 'stblftnt.sty'\n"
+ "%% Author: Robin Fairbairns -- Last revised Dec 13 1996\n"
+ "\\let\\SF@@footnote\\footnote\n"
+ "\\def\\footnote{\\ifx\\protect\\@typeset@protect\n"
+ " \\expandafter\\SF@@footnote\n"
+ " \\else\n"
+ " \\expandafter\\SF@gobble@opt\n"
+ " \\fi\n"
+ "}\n"
+ "\\expandafter\\def\\csname SF@gobble@opt \\endcsname{\\@ifnextchar[%]\n"
+ " \\SF@gobble@twobracket\n"
+ " \\@gobble\n"
+ "}\n"
+ "\\edef\\SF@gobble@opt{\\noexpand\\protect\n"
+ " \\expandafter\\noexpand\\csname SF@gobble@opt \\endcsname}\n"
+ "\\def\\SF@gobble@twobracket[#1]#2{}\n");
+
static docstring const binom_def = from_ascii(
"%% Binom macro for standard LaTeX users\n"
"\\newcommand{\\binom}[2]{{#1 \\choose #2}}\n");
" \\fontencoding{LGR}\\selectfont\\def\\encodingdefault{LGR}}\n"
"\\DeclareRobustCommand{\\textgreek}[1]{\\leavevmode{\\greektext #1}}\n"
"\\ProvideTextCommand{\\~}{LGR}[1]{\\char126#1}\n");
-
+
+static docstring const textcyr_T2A_def = from_ascii(
+ "\\InputIfFileExists{t2aenc.def}{}{%\n"
+ " \\errmessage{File `t2aenc.def' not found: Cyrillic script not supported}}\n");
static docstring const textcyr_def = from_ascii(
"\\DeclareRobustCommand{\\cyrtext}{%\n"
" \\fontencoding{T2A}\\selectfont\\def\\encodingdefault{T2A}}\n"
- "\\DeclareRobustCommand{\\textcyr}[1]{\\leavevmode{\\cyrtext #1}}\n"
- "\\AtBeginDocument{\\DeclareFontEncoding{T2A}{}{}}\n");
+ "\\DeclareRobustCommand{\\textcyr}[1]{\\leavevmode{\\cyrtext #1}}\n");
static docstring const lyxmathsym_def = from_ascii(
"\\newcommand{\\lyxmathsym}[1]{\\ifmmode\\begingroup\\def\\b@ld{bold}\n"
if (local_lp == "none")
return LANG_PACK_NONE;
- /* If "auto" is selected, we load polyglossia if required,
+ /* If "auto" is selected, we load polyglossia with non-TeX fonts,
* else we select babel.
* If babel is selected (either directly or via the "auto"
* mechanism), we really do only require it if we have
* a language that needs it.
*/
bool const polyglossia_required =
- isRequired("polyglossia")
+ params_.useNonTeXFonts
&& isAvailable("polyglossia")
&& !isProvided("babel")
&& this->hasOnlyPolyglossiaLanguages();
bool const ot1 = (params_.font_encoding() == "default"
|| params_.font_encoding() == "OT1");
- bool const complete = (params_.fonts_sans == "default")
- && (params_.fonts_typewriter == "default");
- bool const nomath = (params_.fonts_math == "default");
+ bool const complete = (params_.fontsSans() == "default"
+ && params_.fontsTypewriter() == "default");
+ bool const nomath = (params_.fontsMath() == "default");
return params_.documentClass().provides(name)
|| theLaTeXFonts().getLaTeXFont(
- from_ascii(params_.fonts_roman)).provides(name, ot1,
+ from_ascii(params_.fontsRoman())).provides(name, ot1,
complete,
nomath)
|| theLaTeXFonts().getLaTeXFont(
- from_ascii(params_.fonts_sans)).provides(name, ot1,
+ from_ascii(params_.fontsSans())).provides(name, ot1,
complete,
nomath)
|| theLaTeXFonts().getLaTeXFont(
- from_ascii(params_.fonts_typewriter)).provides(name, ot1,
+ from_ascii(params_.fontsTypewriter())).provides(name, ot1,
complete,
nomath)
|| theLaTeXFonts().getLaTeXFont(
- from_ascii(params_.fonts_math)).provides(name, ot1,
+ from_ascii(params_.fontsMath())).provides(name, ot1,
complete,
nomath);
// TODO: "textbaltic" provided, if the font-encoding is "L7x"
}
-void LaTeXFeatures::addPreambleSnippet(string const & preamble)
+void LaTeXFeatures::addPreambleSnippet(string const & preamble,
+ bool allowdupes)
{
SnippetList::const_iterator begin = preamble_snippets_.begin();
SnippetList::const_iterator end = preamble_snippets_.end();
- if (find(begin, end, preamble) == end)
+ if (allowdupes || find(begin, end, preamble) == end)
preamble_snippets_.push_back(preamble);
}
void LaTeXFeatures::getFontEncodings(vector<string> & encodings) const
{
- // these must be loaded if glyphs of this script
- // are used (notwithstanding the language)
+ // these must be loaded if glyphs of this script are used
+ // unless a language providing them is used in the document
+ // FIXME: currently the option is written twice in this case
if (mustProvide("textgreek"))
encodings.insert(encodings.begin(), "LGR");
if (mustProvide("textcyr"))
"pdfcomment",
"fixme",
"todonotes",
- "forest"
+ "forest",
+ "varwidth"
};
char const * bibliofeatures[] = {
string const amsPackages = loadAMSPackages();
bool const ot1 = (params_.font_encoding() == "default" || params_.font_encoding() == "OT1");
bool const use_newtxmath =
- theLaTeXFonts().getLaTeXFont(from_ascii(params_.fonts_math)).getUsedPackage(
+ theLaTeXFonts().getLaTeXFont(from_ascii(params_.fontsMath())).getUsedPackage(
ot1, false, false) == "newtxmath";
if (!params_.useNonTeXFonts && !use_newtxmath && !amsPackages.empty())
// ensure LGR font encoding is defined also if fontenc is not loaded by LyX
if (params_.font_encoding() == "default")
macros << textgreek_LGR_def;
- // Avoid a LaTeX error if times fonts are used and the grtimes
- // package is installed but actual fonts are not (bug 6469).
- if (params_.fonts_roman == "times")
- macros << subst(textgreek_def,
- from_ascii("\\greektext #1"),
- from_ascii("%\n \\IfFileExists"
- "{grtm10.tfm}{}{\\fontfamily"
- "{cmr}}\\greektext #1"))
- << '\n';
- else
- macros << textgreek_def << '\n';
+ macros << textgreek_def << '\n';
}
- if (!usePolyglossia() && mustProvide("textcyr"))
+ if (!usePolyglossia() && mustProvide("textcyr")) {
+ // ensure T2A font encoding is set up also if fontenc is not loaded by LyX
+ if (params_.font_encoding() == "default")
+ macros << textcyr_T2A_def;
macros << textcyr_def << '\n';
+ }
// non-standard text accents:
if (mustProvide("textcommaabove") || mustProvide("textcommaaboveright") ||
// other
if (mustProvide("ParagraphLeftIndent"))
macros << paragraphleftindent_def;
+ if (mustProvide("NeedLyXFootnoteCode"))
+ macros << floatingfootnote_def;
// some problems with tex->html converters
if (mustProvide("NeedTabularnewline"))