for phrase in phrases:
i = 0
while i < len(document.body):
- words = document.body[i].split()
- if len(words) > 1 and words[0] == "\\begin_inset" and \
- words[1] in ["CommandInset", "External", "Formula", "Graphics", "listings"]:
- # must not replace anything in insets that store LaTeX contents in .lyx files
- # (math and command insets withut overridden read() and write() methods
- j = find_end_of_inset(document.body, i)
- if j == -1:
- document.warning("Malformed LyX document: Can't find end of Formula inset at line " + str(i))
- i += 1
+ if document.body[i] and document.body[i][0] == "\\":
+ words = document.body[i].split()
+ if len(words) > 1 and words[0] == "\\begin_inset" and \
+ words[1] in ["CommandInset", "External", "Formula", "Graphics", "listings"]:
+ # must not replace anything in insets that store LaTeX contents in .lyx files
+ # (math and command insets without overridden read() and write() methods)
+ j = find_end_of_inset(document.body, i)
+ if j == -1:
+ document.warning("Malformed LyX document: Can't find end of inset at line " + str(i))
+ i += 1
+ else:
+ i = j
else:
- i = j
- continue
- if document.body[i].find("\\") == 0:
- i += 1
+ i += 1
continue
j = document.body[i].find(phrase)
if j == -1:
def revert_phrases(document):
- "convert special phrases to plain text"
+ "revert special phrases to plain text"
i = 0
while i < len(document.body):
i = 0
while i < len(document.body):
- words = document.body[i].split()
- if len(words) > 1 and words[0] == "\\begin_inset" and \
- words[1] in ["CommandInset", "External", "Formula", "Graphics", "listings"]:
- # see convert_phrases
- j = find_end_of_inset(document.body, i)
- if j == -1:
- document.warning("Malformed LyX document: Can't find end of Formula inset at line " + str(i))
- i += 1
- else:
- i = j
+ if document.body[i] and document.body[i][0] == "\\":
+ words = document.body[i].split()
+ if len(words) > 1 and words[0] == "\\begin_inset" and \
+ words[1] in ["CommandInset", "External", "Formula", "Graphics", "listings"]:
+ # see convert_phrases
+ j = find_end_of_inset(document.body, i)
+ if j == -1:
+ document.warning("Malformed LyX document: Can't find end of %s inset at line %d" % (words[1], i))
+ i += 1
+ else:
+ i = j
+ continue
+ # else...
+ if not "\\SpecialChar" in document.body[i]:
+ i += 1
continue
for key, value in specialchars.items():
if forward: