[LyX/master] Revert "Output main definitions of theorem names before their use (#133ß7)"
Juergen Spitzmueller <[email protected]> Sat, 02 May 2026 13:49:37 +0000
| Newsgroups | gmane.editors.lyx.cvs |
|---|---|
| Message-ID | <[email protected]> |
commit 4b0af5dd84cffa08445279f2f7874e841a15d227 Author: Juergen Spitzmueller <[email protected]> Date: Sat May 2 13:55:37 2026 +0200 Revert "Output main definitions of theorem names before their use (#133ß7)" This reverts commit c63386e7c24a60129b2ea5b2b79c52717a05f711. A better solution follows! --- src/BufferParams.cpp | 2 +- src/LaTeXFeatures.cpp | 101 ++++++++++++++++++-------------------------------- src/LaTeXFeatures.h | 7 +--- 3 files changed, 38 insertions(+), 72 deletions(-) diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp index fecee6f225..f7a0c50c43 100644 --- a/src/BufferParams.cpp +++ b/src/BufferParams.cpp @@ -2948,7 +2948,7 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features, // theorem definitions: Must be loaded after user preamble // but before babel - os << features.getThmDefinitions(use_polyglossia); + os << features.getThmDefinitions(); // We try to load babel late, in case it interferes with other packages. // Jurabib, hyperref, varioref, bicaption, menukeys and listings (bug 8995) diff --git a/src/LaTeXFeatures.cpp b/src/LaTeXFeatures.cpp index 8914b9fd2b..308951bd7d 100644 --- a/src/LaTeXFeatures.cpp +++ b/src/LaTeXFeatures.cpp @@ -2067,22 +2067,10 @@ bool LaTeXFeatures::haveOtherForceProvide() const } -string const LaTeXFeatures::getThmDefinitions(bool const use_polyglossia) const +string const LaTeXFeatures::getThmDefinitions() const { ostringstream tmp; - // language dependent commands need to be done here - // for theorems (#13307) - for (auto const & lay : usedLayouts_) { - Layout const layout = params_.documentClass()[lay]; - if (layout.thmName().empty()) - continue; - tmp << to_utf8(prepareI18nPreamble(layout.langpreamble(), - buffer().language(), - buffer().params().encoding(), - use_polyglossia, false)); - } - string laststyle; for (auto const & thm : usedTheorems_) { if (isProvided("newtheorem:" + thm.name)) @@ -2326,12 +2314,10 @@ docstring const getFloatI18nPreamble(docstring const & type, return os.str(); } -} // namespace - -docstring const LaTeXFeatures::prepareI18nPreamble(docstring const & templ, Language const * lang, - Encoding const & enc, bool const polyglossia, - bool const need_fixedwidth) const +docstring const i18npreamble(docstring const & templ, Language const * lang, + Encoding const & enc, bool const polyglossia, + bool const need_fixedwidth) { if (templ.empty()) return templ; @@ -2393,6 +2379,8 @@ docstring const LaTeXFeatures::prepareI18nPreamble(docstring const & templ, Lang return from_utf8(preamble); } +} // namespace + docstring const LaTeXFeatures::getThmI18nDefs(Layout const & lay, bool const force) const { @@ -2643,106 +2631,95 @@ docstring const LaTeXFeatures::getTClassI18nPreamble(bool use_babel, list<docstring>::const_iterator end = usedLayouts_.end(); for (; cit != end; ++cit) { // language dependent commands (once per document) - // theorems have been already done in getThmDefinitions() - if (tclass[*cit].thmName().empty()) { - snippets.insert(prepareI18nPreamble(tclass[*cit].langpreamble(), - buffer().language(), - buffer().params().encoding(), - use_polyglossia, false)); - } + snippets.insert(i18npreamble(tclass[*cit].langpreamble(), + buffer().language(), + buffer().params().encoding(), + use_polyglossia, false)); docstring const cnt = (tclass[*cit].latextype == LATEX_ITEM_ENVIRONMENT) ? tclass[*cit].counter + from_ascii("i") : tclass[*cit].counter; + snippets.insert(i18npreamble(getXRefDefs(tclass[*cit].refprefix, cnt, tclass[*cit].needCrossrefDefs(), tclass[*cit].latexname(), tclass[*cit].isEnvironment()), buffer().language(), buffer().params().encoding(), use_polyglossia, false)); - snippets.insert(prepareI18nPreamble(getXRefDefs(tclass[*cit].refprefix, cnt, docstring xxref = getXRefI18nDefs(tclass[*cit].refprefix, cnt, !buffer().language()->supportedBy(xref_package)); if (!xxref.empty()) { if (xref_package == "zref" && !buffer().language()->supportedBy(xref_package)) + snippets.insert(i18npreamble(from_ascii("\\zcDeclareLanguage{$$lang}\n"), buffer().language(), buffer().params().encoding(), use_polyglossia, false)); + snippets.insert(i18npreamble(xxref, buffer().language(), buffer().params().encoding(), use_polyglossia, false)); - snippets.insert(prepareI18nPreamble( - from_ascii("\\zcDeclareLanguage{$$lang}\n"), - snippets.insert(prepareI18nPreamble(xxref, } docstring thmxref = getThmI18nDefs(tclass[*cit], !buffer().language()->supportedBy(xref_package)); if (!thmxref.empty()) { if (xref_package == "zref" && !buffer().language()->supportedBy(xref_package)) + snippets.insert(i18npreamble(from_ascii("\\zcDeclareLanguage{$$lang}\n"), buffer().language(), buffer().params().encoding(), use_polyglossia, false)); + snippets.insert(i18npreamble(thmxref, buffer().language(), buffer().params().encoding(), use_polyglossia, false)); - snippets.insert(prepareI18nPreamble( - from_ascii("\\zcDeclareLanguage{$$lang}\n"), - snippets.insert(prepareI18nPreamble(thmxref, } // commands for language changing (for multilanguage documents) if ((use_babel || use_polyglossia) && !UsedLanguages_.empty()) { - snippets.insert(prepareI18nPreamble( + snippets.insert(i18npreamble( tclass[*cit].babelpreamble(), buffer().language(), buffer().params().encoding(), use_polyglossia, false)); if (!thmxref.empty() && xref_package != "zref") + snippets.insert(i18npreamble("\\addto\\captions$$lang{" + rtrim(thmxref, "\n") + "}\n", buffer().language(), buffer().params().encoding(), use_polyglossia, false)); - snippets.insert(prepareI18nPreamble( - "\\addto\\captions$$lang{" + rtrim(thmxref, "\n") + "}\n", if (!xxref.empty() && xref_package != "zref") + snippets.insert(i18npreamble("\\addto\\captions$$lang{" + rtrim(xxref, "\n") + "}\n", buffer().language(), buffer().params().encoding(), use_polyglossia, false)); - snippets.insert(prepareI18nPreamble( - "\\addto\\captions$$lang{" + rtrim(xxref, "\n") + "}\n", for (lang_it lit = lbeg; lit != lend; ++lit) { thmxref = getThmI18nDefs(tclass[*cit], !(*lit)->supportedBy(xref_package)); if (!thmxref.empty()) { if (xref_package == "zref" && !(*lit)->supportedBy(xref_package)) + snippets.insert(i18npreamble(from_ascii("\\zcDeclareLanguage{$$lang}\n"), *lit, buffer().params().encoding(), use_polyglossia, false)); + snippets.insert(i18npreamble(xref_package == "zref" ? thmxref : "\\addto\\captions$$lang{" + rtrim(thmxref, "\n") + "}\n", *lit, buffer().params().encoding(), use_polyglossia, false)); - snippets.insert(prepareI18nPreamble( - from_ascii("\\zcDeclareLanguage{$$lang}\n"), - snippets.insert(prepareI18nPreamble( - xref_package == "zref" ? } xxref = getXRefI18nDefs(tclass[*cit].refprefix, cnt, !(*lit)->supportedBy(xref_package)); if (!xxref.empty()) { if (xref_package == "zref" && !(*lit)->supportedBy(xref_package)) + snippets.insert(i18npreamble(from_ascii("\\zcDeclareLanguage{$$lang}\n"), *lit, buffer().params().encoding(), use_polyglossia, false)); + snippets.insert(i18npreamble(xref_package == "zref" ? xxref : "\\addto\\captions$$lang{" + rtrim(xxref, "\n") + "}\n", *lit, buffer().params().encoding(), use_polyglossia, false)); - snippets.insert(prepareI18nPreamble( - from_ascii("\\zcDeclareLanguage{$$lang}\n"), - snippets.insert(prepareI18nPreamble( - xref_package == "zref" ? } - snippets.insert(prepareI18nPreamble( + snippets.insert(i18npreamble( tclass[*cit].babelpreamble(), *lit, buffer().params().encoding(), @@ -2763,21 +2740,20 @@ docstring const LaTeXFeatures::getTClassI18nPreamble(bool use_babel, getXRefI18nDefs(from_ascii(fl.refPrefix()), from_ascii(fl.floattype()), !buffer().language()->supportedBy(xref_package)); if (!float_defs.empty()) + snippets.insert(i18npreamble(float_defs, buffer().language(), buffer().params().encoding(), use_polyglossia, false)); - snippets.insert(prepareI18nPreamble(float_defs, if (!floats_l7n_defs.empty() && floats_l7n_defs != float_defs) { if (xref_package == "zref" && !buffer().language()->supportedBy(xref_package)) + snippets.insert(i18npreamble(from_ascii("\\zcDeclareLanguage{$$lang}\n"), buffer().language(), buffer().params().encoding(), use_polyglossia, false)); + snippets.insert(i18npreamble(floats_l7n_defs, buffer().language(), buffer().params().encoding(), use_polyglossia, false)); - snippets.insert(prepareI18nPreamble( - from_ascii("\\zcDeclareLanguage{$$lang}\n"), - snippets.insert(prepareI18nPreamble(floats_l7n_defs, } if (!UsedLanguages_.empty() && (use_babel || use_polyglossia)) { docstring const type = from_ascii(fl.floattype()); @@ -2809,18 +2785,16 @@ docstring const LaTeXFeatures::getTClassI18nPreamble(bool use_babel, !(*lit)->supportedBy(xref_package)); if (!floats_l7n_defs.empty()) { if (xref_package == "zref" && !(*lit)->supportedBy(xref_package)) + snippets.insert(i18npreamble(from_ascii("\\zcDeclareLanguage{$$lang}\n"), *lit, buffer().params().encoding(), use_polyglossia, false)); + snippets.insert(i18npreamble(xref_package == "zref" ? floats_l7n_defs : "\\addto\\captions$$lang{" + rtrim(floats_l7n_defs, "\n") + "}\n", *lit, buffer().params().encoding(), use_polyglossia, false)); - snippets.insert(prepareI18nPreamble( - from_ascii("\\zcDeclareLanguage{$$lang}\n"), - snippets.insert(prepareI18nPreamble( - xref_package == "zref" ? } } } @@ -2844,40 +2818,39 @@ docstring const LaTeXFeatures::getTClassI18nPreamble(bool use_babel, buffer().params().encoding().package() != Encoding::japanese && it->second.fixedwidthpreambleencoding(); // language dependent commands (once per document) + snippets.insert(i18npreamble(it->second.langpreamble(), buffer().language(), buffer().params().encoding(), use_polyglossia, need_fixedwidth)); + snippets.insert(i18npreamble(getXRefDefs(it->second.refprefix(), it->second.counter(), it->second.needCrossrefDefs(), it->second.latexname(), it->second.latextype() == InsetLaTeXType::ENVIRONMENT), buffer().language(), buffer().params().encoding(), use_polyglossia, false)); - snippets.insert(prepareI18nPreamble(it->second.langpreamble(), - snippets.insert(prepareI18nPreamble(getXRefDefs(it->second.refprefix(), it->second.counter(), docstring xxref = getXRefI18nDefs(it->second.refprefix(), it->second.counter(), !buffer().language()->supportedBy(xref_package)); if (!xxref.empty()) { if (xref_package == "zref" && !buffer().language()->supportedBy(xref_package)) + snippets.insert(i18npreamble(from_ascii("\\zcDeclareLanguage{$$lang}\n"), buffer().language(), buffer().params().encoding(), use_polyglossia, false)); + snippets.insert(i18npreamble(xxref, buffer().language(), buffer().params().encoding(), use_polyglossia, false)); - snippets.insert(prepareI18nPreamble( - from_ascii("\\zcDeclareLanguage{$$lang}\n"), - snippets.insert(prepareI18nPreamble(xxref, } // commands for language changing (for multilanguage documents) if ((use_babel || use_polyglossia) && !UsedLanguages_.empty()) { - snippets.insert(prepareI18nPreamble( + snippets.insert(i18npreamble( it->second.babelpreamble(), buffer().language(), buffer().params().encoding(), use_polyglossia, need_fixedwidth)); for (lang_it lit = lbeg; lit != lend; ++lit) { - snippets.insert(prepareI18nPreamble( + snippets.insert(i18npreamble( it->second.babelpreamble(), *lit, buffer().params().encoding(), @@ -2886,18 +2859,16 @@ docstring const LaTeXFeatures::getTClassI18nPreamble(bool use_babel, !(*lit)->supportedBy(xref_package)); if (!xxref.empty()) { if (xref_package == "zref" && !(*lit)->supportedBy(xref_package)) + snippets.insert(i18npreamble(from_ascii("\\zcDeclareLanguage{$$lang}\n"), *lit, buffer().params().encoding(), use_polyglossia, false)); + snippets.insert(i18npreamble(xref_package == "zref" ? xxref : "\\addto\\captions$$lang{" + rtrim(xxref, "\n") + "}\n", *lit, buffer().params().encoding(), use_polyglossia, false)); - snippets.insert(prepareI18nPreamble( - from_ascii("\\zcDeclareLanguage{$$lang}\n"), - snippets.insert(prepareI18nPreamble( - xref_package == "zref" ? } } } diff --git a/src/LaTeXFeatures.h b/src/LaTeXFeatures.h index 91505a5933..ccba1cdfae 100644 --- a/src/LaTeXFeatures.h +++ b/src/LaTeXFeatures.h @@ -25,7 +25,6 @@ namespace lyx { class Buffer; class BufferParams; -class Encoding; class Floating; class InsetLayout; class Language; @@ -84,7 +83,7 @@ public: /// Extra preamble code after babel is called docstring const getBabelPostsettings() const; /// get theorem definitions - std::string const getThmDefinitions(bool const use_polyglossia) const; + std::string const getThmDefinitions() const; /// get theorem extra (package specific) definitions std::string const getThmExtraDefinitions() const; /// Load AMS packages when appropriate @@ -240,10 +239,6 @@ private: /// bool refPrefixUsed(docstring const & pr) const; /// - docstring const prepareI18nPreamble(docstring const & templ, Language const * lang, - Encoding const & enc, bool const polyglossia, - bool const need_fixedwidth) const; - /// std::list<docstring> usedLayouts_; /// std::list<docstring> usedInsetLayouts_; -- lyx-cvs mailing list [email protected] https://lists.lyx.org/mailman/listinfo/lyx-cvs