[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