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