X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLaTeXFeatures.cpp;h=562e0e2a00bc2bf6c693d472c9d03596154b40f9;hb=af16acb0b4c5379ac87fe0c9fae384af1babdc3a;hp=a23837b1f6e9e8b59d4b2cf2f41b3643b5d6dd37;hpb=5a47e4bc705ff9543f57ba0390fd7750e3c16740;p=lyx.git diff --git a/src/LaTeXFeatures.cpp b/src/LaTeXFeatures.cpp index a23837b1f6..562e0e2a00 100644 --- a/src/LaTeXFeatures.cpp +++ b/src/LaTeXFeatures.cpp @@ -191,12 +191,14 @@ static docstring const textgreek_def = from_ascii( " \\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" @@ -249,6 +251,42 @@ static docstring const ogonek_def = from_ascii( " \\mathchar\"0\\hexnumber@\\symtipasymb0C}{#2}}\n" "\\newcommand{\\ogonek}[1]{\\mathpalette\\doogonek{#1}}\n"); +static docstring const lyxaccent_def = from_ascii( + "%% custom text accent \\LyxTextAccent[]{}{}\n" + "\\newcommand*{\\LyxTextAccent}[3][0ex]{%\n" + " \\hmode@bgroup\\ooalign{\\null#3\\crcr\\hidewidth\n" + " \\raise#1\\hbox{#2}\\hidewidth}\\egroup}\n" + "%% select a font size smaller than the current font size:\n" + "\\newcommand{\\LyxAccentSize}[1][\\sf@size]{%\n" + " \\check@mathfonts\\fontsize#1\\z@\\math@fontsfalse\\selectfont\n" + "}\n"); + +static docstring const textcommabelow_def = from_ascii( + "\\ProvideTextCommandDefault{\\textcommabelow}[1]{%%\n" + " \\LyxTextAccent[-.31ex]{\\LyxAccentSize,}{#1}}\n"); + +static docstring const textcommaabove_def = from_ascii( + "\\ProvideTextCommandDefault{\\textcommaabove}[1]{%%\n" + " \\LyxTextAccent[.5ex]{\\LyxAccentSize`}{#1}}\n"); + +static docstring const textcommaaboveright_def = from_ascii( + "\\ProvideTextCommandDefault{\\textcommaaboveright}[1]{%%\n" + " \\LyxTextAccent[.5ex]{\\LyxAccentSize\\ `}{#1}}\n"); + +// Baltic languages use a comma-accent instead of a cedilla +static docstring const textbaltic_def = from_ascii( + "%% use comma accent instead of cedilla for these characters:\n" + "\\DeclareTextCompositeCommand{\\c}{T1}{g}{\\textcommaabove{g}}\n" + "\\DeclareTextCompositeCommand{\\c}{T1}{G}{\\textcommabelow{G}}\n" + "\\DeclareTextCompositeCommand{\\c}{T1}{k}{\\textcommabelow{k}}\n" + "\\DeclareTextCompositeCommand{\\c}{T1}{K}{\\textcommabelow{K}}\n" + "\\DeclareTextCompositeCommand{\\c}{T1}{l}{\\textcommabelow{l}}\n" + "\\DeclareTextCompositeCommand{\\c}{T1}{L}{\\textcommabelow{L}}\n" + "\\DeclareTextCompositeCommand{\\c}{T1}{n}{\\textcommabelow{n}}\n" + "\\DeclareTextCompositeCommand{\\c}{T1}{N}{\\textcommabelow{N}}\n" + "\\DeclareTextCompositeCommand{\\c}{T1}{r}{\\textcommabelow{r}}\n" + "\\DeclareTextCompositeCommand{\\c}{T1}{R}{\\textcommabelow{R}}\n"); + static docstring const lyxref_def = from_ascii( "\\RS@ifundefined{subsecref}\n" " {\\newref{subsec}{name = \\RSsectxt}}\n" @@ -498,6 +536,9 @@ bool LaTeXFeatures::isProvided(string const & name) const from_ascii(params_.fonts_math)).provides(name, ot1, complete, nomath); + // TODO: "textbaltic" provided, if the font-encoding is "L7x" + // "textgreek" provided, if a language with font-encoding LGR is used in the document + // "textcyr" provided, if a language with font-encoding T2A is used in the document } @@ -1130,21 +1171,32 @@ docstring const LaTeXFeatures::getMacros() const // 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") || + mustProvide("textcommabelow") || mustProvide("textbaltic")) + macros << lyxaccent_def; + + if (mustProvide("textcommabelow") || mustProvide("textbaltic")) + macros << textcommabelow_def << '\n'; + + if (mustProvide("textcommaabove") || mustProvide("textbaltic")) + macros << textcommaabove_def << '\n'; + + if (mustProvide("textcommaaboveright")) + macros << textcommaaboveright_def << '\n'; + + if (mustProvide("textbaltic")) + macros << textbaltic_def << '\n'; if (mustProvide("lyxmathsym")) macros << lyxmathsym_def << '\n';