On Tue, Aug 21, 2007 at 08:53:54PM +0100, José Matos wrote:
> On Monday 20 August 2007 17:09:33 Martin Vermeer wrote:
> > Yes... this requires the patch to layout2layout in order to work.
> > Haven't committed yet, waiting for José's comments.
> >
> > José?
>
> Go on. :-)
This patch. Does it look reasonable?
- Martin
Index: layout2layout.py
===================================================================
--- layout2layout.py (revision 19567)
+++ layout2layout.py (working copy)
@@ -80,6 +80,7 @@
re_NoStyle = re.compile(r'^(\s*)(NoStyle)(\s+)(\S+)', re.IGNORECASE)
re_End = re.compile(r'^(\s*)(End)(\s*)$', re.IGNORECASE)
re_Provides = re.compile(r'^(\s*)Provides(\S+)(\s+)(\S+)', re.IGNORECASE)
+ re_CharStyle = re.compile(r'^(\s*)CharStyle(\s+)(\S+)$', re.IGNORECASE)
# counters for sectioning styles (hardcoded in 1.3)
counters = {"part" : "\\Roman{part}",
@@ -126,7 +127,7 @@
# Skip comments and empty lines
if re_Comment.match(lines[i]) or re_Empty.match(lines[i]):
- i = i + 1
+ i += 1
continue
# insert file format if not already there
@@ -134,10 +135,10 @@
match = re_Format.match(lines[i])
if match:
format = int(match.group(4))
- if format > 1 and format < 4:
+ if format > 1 and format < 5:
lines[i] = "Format %d" % (format + 1)
only_comment = 0
- elif format == 4:
+ elif format == 5:
# nothing to do
return format
else:
@@ -149,11 +150,24 @@
# Don't get confused by LaTeX code
if re_Preamble.match(lines[i]):
- i = i + 1
+ i += 1
while i < len(lines) and not re_EndPreamble.match(lines[i]):
- i = i + 1
+ i += 1
continue
+ if format == 4:
+ # Handle conversion to long CharStyle names
+ match = re_CharStyle.match(lines[i])
+ if match:
+ lines[i] = "InsetLayout CharStyle:%s" % (match.group(3))
+ i += 1
+ lines.insert(i, "\tLyXType charstyle")
+ i += 1
+ lines.insert(i, "")
+ lines[i] = "\tLabelString %s" % (match.group(3))
+ i += 1
+ continue
+
if format == 3:
# convert 'providesamsmath x', 'providesmakeidx x', 'providesnatbib x', 'providesurl x' to
# 'provides amsmath x', 'provides makeidx x', 'provides natbib x', 'provides url x'
@@ -162,7 +176,7 @@
if match:
lines[i] = "%sProvides %s%s%s" % (match.group(1), match.group(2).lower(),
match.group(3), match.group(4))
- i = i + 1
+ i += 1
continue
if format == 2:
@@ -219,7 +233,7 @@
' Series Bold',
' EndFont']
- i = i + 1
+ i += 1
continue
# Delete MaxCounter and remember the value of it
@@ -308,7 +322,7 @@
if string.lower(label) == "bibliography":
if (latextype_line < 0):
lines.insert(i, "%sLatexType Bib_Environment" % space1)
- i = i + 1
+ i += 1
else:
lines[latextype_line] = re_LatexType.sub(r'\1\2\3Bib_Environment', lines[latextype_line])
@@ -337,7 +351,7 @@
if counters.has_key(style):
if labelstring_line < 0:
lines.insert(i, '%sLabelString "%s"' % (space1, counters[style]))
- i = i + 1
+ i += 1
else:
new_labelstring = concatenate_label(labelstring, counters[style])
lines[labelstring_line] = re_LabelString.sub(
@@ -346,7 +360,7 @@
if appendixcounters.has_key(style):
if labelstringappendix_line < 0:
lines.insert(i, '%sLabelStringAppendix "%s"' % (space1, appendixcounters[style]))
- i = i + 1
+ i += 1
else:
new_labelstring = concatenate_label(labelstring, appendixcounters[style])
lines[labelstringappendix_line] = re_LabelStringAppendix.sub(
@@ -355,14 +369,14 @@
# Now we can safely add the LabelCounter line
lines.insert(labeltype_line + 1, "%sLabelCounter %s" % (space1, counter))
- i = i + 1
+ i += 1
# Add the TocLevel setting for sectioning styles
if toclevels.has_key(style) and maxcounter <= toclevels[style]:
lines.insert(i, '%sTocLevel %d' % (space1, toclevels[style]))
- i = i + 1
+ i += 1
- i = i + 1
+ i += 1
return format + 1