diff --git a/lib/layouts/article-beamer.layout b/lib/layouts/article-beamer.layout index 7550b00021..4460c1435f 100644 --- a/lib/layouts/article-beamer.layout +++ b/lib/layouts/article-beamer.layout @@ -6,6 +6,7 @@ Format 60 # Includes +Input article.layout Input beamer.layout # override settings inherited from beamer.layout (Paul Rubin ) diff --git a/lib/layouts/scrarticle-beamer.layout b/lib/layouts/scrarticle-beamer.layout index 47f53ede23..d9937c639b 100644 --- a/lib/layouts/scrarticle-beamer.layout +++ b/lib/layouts/scrarticle-beamer.layout @@ -6,6 +6,7 @@ Format 60 # Includes +Input scrartcl.layout Input beamer.layout # override settings inherited from beamer.layout diff --git a/lib/lyx2lyx/lyx_2_3.py b/lib/lyx2lyx/lyx_2_3.py index 37386a3865..001c1cb287 100644 --- a/lib/lyx2lyx/lyx_2_3.py +++ b/lib/lyx2lyx/lyx_2_3.py @@ -25,7 +25,7 @@ import sys, os # Uncomment only what you need to import, please. -#from parser_tools import find_token, find_end_of, find_tokens, \ +from parser_tools import find_end_of#, find_token, find_tokens, \ # find_token_exact, find_end_of_inset, find_end_of_layout, \ # find_token_backwards, is_in_inset, get_value, get_quoted_value, \ # del_token, check_token, get_option_value, get_bool_value @@ -176,7 +176,90 @@ def revert_ibranches(document): # these are the old lines telling us color, etc. lines += document.header[i+2 : j+1] document.header[i:i] = lines - + + +def revert_beamer_article_styles(document): + " Include (scr)article styles in beamer article " + + beamer_articles = ["article-beamer", "scrarticle-beamer"] + if document.textclass not in beamer_articles: + return + + inclusion = "article.layout" + if document.textclass == "scrarticle-beamer": + inclusion = "scrartcl.layout" + + while True: + i = find_token(document.header, "\\begin_local_layout", 0) + if i == -1: + k = find_token(document.header, "\\language", 0) + if k == -1: + # this should not happen + document.warning("Malformed LyX document! No \\language header found!") + break + document.header[k-1 : k-1] = ["\\begin_local_layout", "\\end_local_layout"] + i = find_token(document.header, "\\begin_local_layout", 0) + if i != -1: + j = find_end_of(document.header, i, "\\begin_local_layout", "\\end_local_layout") + if j == -1: + # this should not happen + break + + document.header[i+1 : i+1] = ["### Inserted by lyx2lyx (more [scr]article styles) ###", + "Input " + inclusion, + "Input beamer.layout", + "Provides geometry 0", + "Provides hyperref 0", + "DefaultFont", + " Family Roman", + " Series Medium", + " Shape Up", + " Size Normal", + " Color None", + "EndFont", + "Preamble", + " \\usepackage{beamerarticle,pgf}", + " % this default might be overridden by plain title style", + " \\newcommand\makebeamertitle{\\frame{\\maketitle}}%", + " \\AtBeginDocument{", + " \\let\\origtableofcontents=\\tableofcontents", + " \\def\\tableofcontents{\\@ifnextchar[{\\origtableofcontents}{\\gobbletableofcontents}}", + " \\def\\gobbletableofcontents#1{\\origtableofcontents}", + " }", + "EndPreamble", + "### End of insertion by lyx2lyx (more [scr]article styles) ###"] + return + + +def convert_beamer_article_styles(document): + " Remove included (scr)article styles in beamer article " + + beamer_articles = ["article-beamer", "scrarticle-beamer"] + if document.textclass not in beamer_articles: + return + + while True: + i = find_token(document.header, "\\begin_local_layout", 0) + if i == -1: + return + + j = find_end_of(document.header, i, "\\begin_local_layout", "\\end_local_layout") + if j == -1: + # this should not happen + break + + k = find_token(document.header, "### Inserted by lyx2lyx (more [scr]article styles) ###", i, j) + if k != -1: + l = find_token(document.header, "### End of insertion by lyx2lyx (more [scr]article styles) ###", i, j) + if l == -1: + # this should not happen + document.warning("End of lyx2lyx local layout insertion not found!") + break + + document.header[k : l + 1] = [] + + return + ## # Conversion hub @@ -186,10 +269,12 @@ supported_versions = ["2.3.0", "2.3"] convert = [ [509, [convert_microtype]], [510, [convert_dateinset]], - [511, [convert_ibranches]] + [511, [convert_ibranches]], + [512, [convert_beamer_article_styles]] ] revert = [ + [511, [revert_beamer_article_styles]], [510, [revert_ibranches]], [509, []], [508, [revert_microtype]] diff --git a/src/version.h b/src/version.h index 0a3b493008..561f3ec56a 100644 --- a/src/version.h +++ b/src/version.h @@ -32,8 +32,8 @@ extern char const * const lyx_version_info; // Do not remove the comment below, so we get merge conflict in // independent branches. Instead add your own. -#define LYX_FORMAT_LYX 511 // rgh: inverted branches -#define LYX_FORMAT_TEX2LYX 511 +#define LYX_FORMAT_LYX 512 // spitz: beamer article extension +#define LYX_FORMAT_TEX2LYX 512 #if LYX_FORMAT_TEX2LYX != LYX_FORMAT_LYX #ifndef _MSC_VER