X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLaTeXFeatures.cpp;h=54cf237eb5a822441d2142240b81a8fd514a5964;hb=28be7d552f62cc02fa86d7f79201d089bfb2d7b5;hp=3d70a5aa7be5a0c50536a920c2ad674d533c090c;hpb=ffacdd8b469071e34c27f93e6f5b95f7a960a694;p=lyx.git diff --git a/src/LaTeXFeatures.cpp b/src/LaTeXFeatures.cpp index 3d70a5aa7b..54cf237eb5 100644 --- a/src/LaTeXFeatures.cpp +++ b/src/LaTeXFeatures.cpp @@ -79,6 +79,15 @@ static docstring const lyxarrow_def = from_ascii( "{\\leavevmode\\,$\\triangleleft$\\,\\allowbreak}\n" "{\\leavevmode\\,$\\triangleright$\\,\\allowbreak}}"); +// ZERO WIDTH SPACE (ZWSP) is actually not a space character +// but marks a line break opportunity. Several commands provide a +// line break opportunity. They differ in side-effects: +// \allowbreak prevents hyphenation after hyphen or dash + ZWSP +// \linebreak[] takes an optional argument denoting "urgency". +// The \LyXZeroWidthSpace wrapper allows customization in the preamble. +static docstring const lyxZWSP_def = from_ascii( + "\\newcommand*\\LyXZeroWidthSpace{\\hspace{0pt}}"); + // for quotes without babel. This does not give perfect results, but // anybody serious about non-english quotes should use babel (JMarc). @@ -410,6 +419,19 @@ static docstring const rtloutputdblcol_def = from_ascii( "}\n" "\\@mparswitchtrue\n"); +static docstring const lyxmintcaption_def = from_ascii( + "\\long\\def\\lyxmintcaption[#1]#2{%\n" + " \\ifx#1t\\vskip\\baselineskip\\fi%\n" + " \\refstepcounter{listing}\\noindent%\n" + " \\addcontentsline{lol}{listing}%\n" + " {\\protect\\numberline{\\thelisting}{\\ignorespaces #2}}%\n" + " \\setbox\\@tempboxa\\hbox{\\listingscaption~\\thelisting: #2}%\n" + " \\ifdim \\wd\\@tempboxa >\\linewidth%\n" + " \\parbox[t]{\\linewidth}{\\unhbox\\@tempboxa}\\else%\n" + " \\hbox to\\linewidth{\\hfil\\box\\@tempboxa\\hfil}\\fi%\n" + " \\ifx#1b\\vskip\\baselineskip\\fi\n" + "}\n"); + ///////////////////////////////////////////////////////////////////// // @@ -591,8 +613,8 @@ bool LaTeXFeatures::isProvided(string const & name) const if (params_.useNonTeXFonts) return params_.documentClass().provides(name); - bool const ot1 = (params_.font_encoding() == "default" - || params_.font_encoding() == "OT1"); + bool const ot1 = (params_.main_font_encoding() == "default" + || params_.main_font_encoding() == "OT1"); bool const complete = (params_.fontsSans() == "default" && params_.fontsTypewriter() == "default"); bool const nomath = (params_.fontsMath() == "default"); @@ -1089,7 +1111,8 @@ string const LaTeXFeatures::getPackages() const // if fontspec or newtxmath is used, AMS packages have to be loaded // before fontspec (in BufferParams) string const amsPackages = loadAMSPackages(); - bool const ot1 = (params_.font_encoding() == "default" || params_.font_encoding() == "OT1"); + bool const ot1 = (params_.main_font_encoding() == "default" + || params_.main_font_encoding() == "OT1"); bool const use_newtxmath = theLaTeXFonts().getLaTeXFont(from_ascii(params_.fontsMath())).getUsedPackage( ot1, false, false) == "newtxmath"; @@ -1316,16 +1339,19 @@ TexString LaTeXFeatures::getMacros() const if (mustProvide("lyxarrow")) macros << lyxarrow_def << '\n'; + if (mustProvide("lyxzerowidthspace")) + macros << lyxZWSP_def << '\n'; + if (!usePolyglossia() && mustProvide("textgreek")) { // ensure LGR font encoding is defined also if fontenc is not loaded by LyX - if (params_.font_encoding() == "default") + if (params_.main_font_encoding() == "default") macros << textgreek_LGR_def; macros << textgreek_def << '\n'; } if (!usePolyglossia() && mustProvide("textcyr")) { // ensure T2A font encoding is set up also if fontenc is not loaded by LyX - if (params_.font_encoding() == "default") + if (params_.main_font_encoding() == "default") macros << textcyr_T2A_def; macros << textcyr_def << '\n'; } @@ -1478,6 +1504,9 @@ TexString LaTeXFeatures::getMacros() const if (mustProvide("rtloutputdblcol")) macros << rtloutputdblcol_def; + if (mustProvide("lyxmintcaption")) + macros << lyxmintcaption_def; + return macros.release(); } @@ -1744,7 +1773,8 @@ docstring const i18npreamble(docstring const & templ, Language const * lang, } -docstring const LaTeXFeatures::getTClassI18nPreamble(bool use_babel, bool use_polyglossia) const +docstring const LaTeXFeatures::getTClassI18nPreamble(bool use_babel, + bool use_polyglossia, bool use_minted) const { DocumentClass const & tclass = params_.documentClass(); // collect preamble snippets in a set to prevent multiple identical @@ -1826,8 +1856,9 @@ docstring const LaTeXFeatures::getTClassI18nPreamble(bool use_babel, bool use_po // need to force a fixed width encoding for // \lstlistlistingname and \lstlistingname (bug 9382). // This needs to be consistent with InsetListings::latex(). - bool const need_fixedwidth = !runparams_.isFullUnicode() && - it->second.fixedwidthpreambleencoding(); + bool const need_fixedwidth = !use_minted && + !runparams_.isFullUnicode() && + it->second.fixedwidthpreambleencoding(); // language dependent commands (once per document) snippets.insert(i18npreamble(it->second.langpreamble(), buffer().language(),