"=" : u'\u0304', # macron
"u" : u'\u0306', # breve
"." : u'\u0307', # dot above
- "\"": u'\u0308', # diaresis
+ "\"": u'\u0308', # diaeresis
"r" : u'\u030a', # ring above
"H" : u'\u030b', # double acute
"v" : u'\u030c', # caron
return ''
a = accent_map.get(type)
if a:
- return unicodedata.normalize("NFKC", "%s%s" % (char, a))
+ return unicodedata.normalize("NFC", "%s%s" % (char, a))
return ''
# because we never use u'xxx' for string literals, but 'xxx'.
# Therefore we may have to try two times to normalize the data.
try:
- document.body[i] = unicodedata.normalize("NFKD", document.body[i])
+ document.body[i] = unicodedata.normalize("NFD", document.body[i])
except TypeError:
- document.body[i] = unicodedata.normalize("NFKD", unicode(document.body[i], 'utf-8'))
+ document.body[i] = unicodedata.normalize("NFD", unicode(document.body[i], 'utf-8'))
# Replace accented characters with InsetLaTeXAccent
# Do not convert characters that can be represented in the chosen
accented_char = inverse_accented_map[accented_char]
accent = document.body[i][j]
try:
- dummy = unicodedata.normalize("NFKC", accented_char + accent).encode(encoding_stack[-1])
+ dummy = unicodedata.normalize("NFC", accented_char + accent).encode(encoding_stack[-1])
except UnicodeEncodeError:
# Insert the rest of the line as new line
if j < len(document.body[i]) - 1:
break
# Normalize to "Normal form C" (NFC, pre-composed characters) again
for i in range(numberoflines):
- document.body[i] = unicodedata.normalize("NFKC", document.body[i])
+ document.body[i] = unicodedata.normalize("NFC", document.body[i])
def normalize_font_whitespace_259(document):
document.warning("Malformed LyX document: Could not find end of graphics inset.")
# Seach for rotateAngle and width or height or scale
# If these params are not there, nothing needs to be done.
- # FIXME: this also inserts scaleBeforeRotation if "rotateAngle" is not there!
- for k in range(i+1, j):
- if (document.body[k].find("rotateAngle") and \
- (document.body[k].find("width") or \
- document.body[k].find("height") or \
- document.body[k].find("scale"))):
- document.body.insert(j, 'scaleBeforeRotation')
+ k = find_token(document.body, "\trotateAngle", i + 1, j)
+ l = find_tokens(document.body, ["\twidth", "\theight", "\tscale"], i + 1, j)
+ if (k != -1 and l != -1):
+ document.body.insert(j, 'scaleBeforeRotation')
i = i + 1
-# FIXME: does not work at all
+#
+# remove scaleBeforeRotation graphics param
def revert_graphics_rotation(document):
" remove scaleBeforeRotation graphics parameter. "
i = 0
if j == -1:
# should not happen
document.warning("Malformed LyX document: Could not find end of graphics inset.")
- for k in range(i+1, j):
- # If there's a scaleBeforeRotation param, just remove that
- if document.body[k].find('scaleBeforeRotation'):
- del document.body[k]
- break
+ # If there's a scaleBeforeRotation param, just remove that
+ k = find_token(document.body, "\tscaleBeforeRotation", i + 1, j)
+ if k != -1:
+ del document.body[k]
+ else:
# if not, and if we have rotateAngle and width or height or scale,
# we have to put the rotateAngle value to special
- rotateAngle = get_value(document.body, 'rotateAngle', i+1, j)
- special = get_value(document.body, 'special', i+1, j)
- if (document.body[k].find("width") or \
- document.body[k].find("height") or \
- document.body[k].find("scale") and \
- document.body[k].find("rotateAngle")):
- if special == "":
- document.body.insert(j-1, '\tspecial angle=%s' % rotateAngle)
- else:
- l = find_token(document.body, "special", i+1, j)
- document.body[l].replace(special, 'angle=%s,%s' % (rotateAngle, special))
+ rotateAngle = get_value(document.body, 'rotateAngle', i + 1, j)
+ special = get_value(document.body, 'special', i + 1, j)
+ if rotateAngle != "":
+ k = find_tokens(document.body, ["\twidth", "\theight", "\tscale"], i + 1, j)
+ if k == -1:
+ break
+ if special == "":
+ document.body.insert(j-1, '\tspecial angle=%s' % rotateAngle)
+ else:
+ l = find_token(document.body, "\tspecial", i + 1, j)
+ document.body[l] = document.body[l].replace(special, 'angle=%s,%s' % (rotateAngle, special))
+ k = find_token(document.body, "\trotateAngle", i + 1, j)
+ if k != -1:
+ del document.body[k]
i = i + 1
spec_chars = {}
for line in fp.readlines():
if line[0] != '#':
- line=line.replace('"','') #remove all qoutation marks
+ line=line.replace(' "',' ') # remove all quotation marks with spaces before
+ line=line.replace('" ',' ') # remove all quotation marks with spaces after
+ line=line.replace(r'\"','"') # replace \" by " (for characters with diaeresis)
try:
# flag1 and flag2 are preamble & flags
- # currently NOT impemented
+ # currently NOT implemented
[ucs4,command,flag1,flag2] =line.split(None,3)
spec_chars[unichr(eval(ucs4))] = [command, flag1, flag2]
except:
pass
fp.close()
- #Define strings to start and end ERT and math insets
+ # Define strings to start and end ERT and math insets
ert_intro='\n\n\\begin_inset ERT\nstatus collapsed\n\\begin_layout Standard\n\\backslash\n'
ert_outro='\n\\end_layout\n\n\\end_inset\n\n'
math_intro='\n\\begin_inset Formula $'
pass
-