commit f51fa38123fb7e3daf37ebfd3e7b0a9feb23b7a1
Author: Juergen Spitzmueller <[email protected]>
Date:   Thu Apr 4 16:39:20 2019 +0200

    Prevent multiplication of preamble code
    
    Fixes rest of #8229
---
 src/tex2lyx/Preamble.cpp |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/tex2lyx/Preamble.cpp b/src/tex2lyx/Preamble.cpp
index 3929885..3114552 100644
--- a/src/tex2lyx/Preamble.cpp
+++ b/src/tex2lyx/Preamble.cpp
@@ -1053,11 +1053,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;
                }
        }
@@ -1909,7 +1912,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 << "}"

Reply via email to