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
This commit is contained in:
Uwe Stöhr 2015-05-24 17:03:13 +02:00
parent 259400325e
commit 041a3add6c
3 changed files with 23 additions and 11 deletions

View 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") {

View 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

View 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}