]> git.lyx.org Git - features.git/commitdiff
tex2lyx/Preamble.cpp: fix bug #9561
authorUwe Stöhr <uwestoehr@lyx.org>
Sun, 24 May 2015 15:03:13 +0000 (17:03 +0200)
committerUwe Stöhr <uwestoehr@lyx.org>
Sun, 24 May 2015 15:03:13 +0000 (17:03 +0200)
there were 2 issues:
- the body was not output to the Preamble
- the theorem module already defines a theorem. It must not be output to the preamble to avoid a redefinition error of LaTeX

update the test files accordingly

src/tex2lyx/Preamble.cpp
src/tex2lyx/test/test-modules.lyx.lyx
src/tex2lyx/test/test-modules.tex

index 613cbbb8c1e89c384462fd012c88f1257e0436f0..f48da7ab90e1df4d2b19bbaf76a384833f5d4a45 100644 (file)
@@ -1684,13 +1684,22 @@ void Preamble::parse(Parser & p, string const & forceclass,
                        string const body = p.verbatim_item();
                        string const opt3 = p.getFullOpt();
 
-                       add_known_theorem(name, opt1, !opt2.empty(),
-                               from_utf8("\\newtheorem{" + name + '}' +
-                                         opt1 + opt2 + '{' + body + '}' + opt3));
+                       string const complete = "\\newtheorem{" + name + '}' +
+                                         opt1 + opt2 + '{' + body + '}' + opt3;
+
+                       add_known_theorem(name, opt1, !opt2.empty(), from_utf8(complete));
+
+                       // we know that our theorem module already add automatically some
+                       // theorem definition. They must not be output in the preamble to
+                       // avoid LaTeX errors about redefinitions
+                       if (complete == "\\newtheorem{thm}{\\protect\\theoremname}")
+                               in_lyx_preamble = true;
+                       else
+                               in_lyx_preamble = false;
 
                        if (!in_lyx_preamble)
                                h_preamble << "\\newtheorem{" << name << '}'
-                                          << opt1 << opt2 << '{' << '}' << opt3;
+                                          << opt1 << opt2 << '{' << body << '}' << opt3;
                }
 
                else if (t.cs() == "def") {
index f661dcffa431afb05df1f258396256a294563f9e..35f583759b10368f049bea733f5f5f54253bf58f 100644 (file)
@@ -5,8 +5,16 @@
 \origin roundtrip
 \textclass amsart
 \begin_preamble
+\numberwithin{equation}{section} %% Comment out for sequentially-numbered
+\numberwithin{figure}{section} %% Comment out for sequentially-numbered
+\providecommand{\theoremname}{Theorem}
+\theoremstyle{plain}
+\newtheorem{lem}[thm]{Lemma}
+
 \usepackage{babel}
 
+
+
 \end_preamble
 \use_default_options false
 \begin_modules
index b27ada9053fe0f880ca9170740e545c6f2d85854..abb9875dead4d26ddbeb658400806237b54c4ded 100644 (file)
@@ -1,19 +1,14 @@
-%% LyX 1.6.1 created this file.  For more info, see http://www.lyx.org/.
-%% Do not edit unless you really know what you are doing.
 \documentclass[oneside,english]{amsart}
 \usepackage[T1]{fontenc}
 \usepackage[latin9]{inputenc}
 \usepackage{amsthm}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Textclass specific LaTeX commands.
 \numberwithin{equation}{section} %% Comment out for sequentially-numbered
 \numberwithin{figure}{section} %% Comment out for sequentially-numbered
 \providecommand{\theoremname}{Theorem}
 \theoremstyle{plain}
-\theoremstyle{plain}
 \newtheorem{thm}{\protect\theoremname}
-  \theoremstyle{plain}
-  \newtheorem{lem}[thm]{Lemma}
+\theoremstyle{plain}
+\newtheorem{lem}[thm]{Lemma}
 
 \usepackage{babel}