From 019a4fa124c4d42b1ec299374aeb23fa968db5ba Mon Sep 17 00:00:00 2001 From: Juergen Spitzmueller Date: Thu, 4 Apr 2019 16:39:20 +0200 Subject: [PATCH] Prevent multiplication of preamble code Fixes rest of #8229 (cherry picked from commit f51fa38123fb7e3daf37ebfd3e7b0a9feb23b7a1) --- src/tex2lyx/Preamble.cpp | 10 +++++++--- status.23x | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/tex2lyx/Preamble.cpp b/src/tex2lyx/Preamble.cpp index 436c961545..9d2c4c1bde 100644 --- a/src/tex2lyx/Preamble.cpp +++ b/src/tex2lyx/Preamble.cpp @@ -944,11 +944,14 @@ void Preamble::handle_package(Parser &p, string const & name, // perhaps in future others. // Therefore keep the babel call as it is as the user might have // reasons for it. - h_preamble << "\\usepackage[" << opts << "]{babel}\n"; + string const babelcall = "\\usepackage[" + opts + "]{babel}\n"; + if (!contains(h_preamble.str(), babelcall)) + h_preamble << babelcall; } delete_opt(options, known_languages); } else { - h_preamble << "\\usepackage{babel}\n"; + if (!contains(h_preamble.str(), "\\usepackage{babel}\n")) + h_preamble << "\\usepackage{babel}\n"; explicit_babel = true; } } @@ -1781,7 +1784,8 @@ void Preamble::parse(Parser & p, string const & forceclass, ss << '*'; ss << '{' << name << '}' << opt1 << opt2 << '{' << body << "}"; - h_preamble << ss.str(); + if (prefixIs(t.cs(), "renew") || !contains(h_preamble.str(), ss.str())) + h_preamble << ss.str(); /* ostream & out = in_preamble ? h_preamble : os; out << "\\" << t.cs() << "{" << name << "}" diff --git a/status.23x b/status.23x index 9b0ff657f2..2791d670db 100644 --- a/status.23x +++ b/status.23x @@ -73,7 +73,7 @@ What's new * TEX2LYX - +- Prevent multiplication of preamble code on (re-)import (bug 8229). * LYXHTML -- 2.39.5