From 041a3add6c044132ef42e2f7be77dc63214159ef Mon Sep 17 00:00:00 2001 From: =?utf8?q?Uwe=20St=C3=B6hr?= Date: Sun, 24 May 2015 17:03:13 +0200 Subject: [PATCH] tex2lyx/Preamble.cpp: fix bug #9561 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 | 17 +++++++++++++---- src/tex2lyx/test/test-modules.lyx.lyx | 8 ++++++++ src/tex2lyx/test/test-modules.tex | 9 ++------- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/tex2lyx/Preamble.cpp b/src/tex2lyx/Preamble.cpp index 613cbbb8c1..f48da7ab90 100644 --- a/src/tex2lyx/Preamble.cpp +++ b/src/tex2lyx/Preamble.cpp @@ -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") { diff --git a/src/tex2lyx/test/test-modules.lyx.lyx b/src/tex2lyx/test/test-modules.lyx.lyx index f661dcffa4..35f583759b 100644 --- a/src/tex2lyx/test/test-modules.lyx.lyx +++ b/src/tex2lyx/test/test-modules.lyx.lyx @@ -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 diff --git a/src/tex2lyx/test/test-modules.tex b/src/tex2lyx/test/test-modules.tex index b27ada9053..abb9875dea 100644 --- a/src/tex2lyx/test/test-modules.tex +++ b/src/tex2lyx/test/test-modules.tex @@ -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} -- 2.39.2