commit 90f6eb01a4ac09d56591e0ed8a342ad6f6163796
Author: Juergen Spitzmueller <[email protected]>
Date: Thu Aug 4 11:42:06 2016 +0200
Include all [scr]article styles in beamer article layouts.
File format change. On format reversion, we need to put some extra code
in the local layout that emulates the 2.3 behavior.
Simply Input'ing the respective layouts is unfortunately not enough,
due to the insertion order.
See #9977
---
lib/layouts/article-beamer.layout | 1 +
lib/layouts/scrarticle-beamer.layout | 1 +
lib/lyx2lyx/lyx_2_3.py | 91 ++++++++++++++++++++++++++++++++-
src/version.h | 4 +-
4 files changed, 92 insertions(+), 5 deletions(-)
diff --git a/lib/layouts/article-beamer.layout
b/lib/layouts/article-beamer.layout
index 7550b00..4460c14 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 <[email protected]>)
diff --git a/lib/layouts/scrarticle-beamer.layout
b/lib/layouts/scrarticle-beamer.layout
index 47f53ed..d9937c6 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 37386a3..001c1cb 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 0a3b493..561f3ec 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