[LyX/master] Revert "Output main definitions of theorem names before their use (#133ß7)"
Juergen Spitzmueller
spitz at lyx.org
Sat May 2 13:49:37 UTC 2026
commit 4b0af5dd84cffa08445279f2f7874e841a15d227
Author: Juergen Spitzmueller <spitz at lyx.org>
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_;
More information about the lyx-cvs
mailing list