-# To convert and revert indices, we need to convert between LaTeX
-# strings and LyXText. Here we do a minimal conversion to prevent
-# crashes and data loss. Manual patch-up may be needed.
-replacements = [
- [r'\\\"a', u'ä'],
- [r'\\\"o', u'ö'],
- [r'\\\"u', u'ü'],
- [r'\\\'a', u'á'],
- [r'\\\'e', u'é'],
- [r'\\\'i', u'í'],
- [r'\\\'o', u'ó'],
- [r'\\\'u', u'ú']
-]
+def read_unicodesymbols():
+ " Read the unicodesymbols list of unicode characters and corresponding commands."
+ pathname = os.path.abspath(os.path.dirname(sys.argv[0]))
+ fp = open(os.path.join(pathname.strip('lyx2lyx'), 'unicodesymbols'))
+ spec_chars = []
+ # Two backslashes, followed by some non-word character, and then a character
+ # in brackets. The idea is to check for constructs like: \"{u}, which is how
+ # they are written in the unicodesymbols file; but they can also be written
+ # as: \"u.
+ r = re.compile(r'\\\\(\W)\{(\w)\}')
+ for line in fp.readlines():
+ if line[0] != '#' and line.strip() != "":
+ 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:
+ [ucs4,command,dead] = line.split(None,2)
+ spec_chars.append([command, unichr(eval(ucs4))])
+ except:
+ continue
+ m = r.match(command)
+ if m != None:
+ command = "\\\\"
+ # If the character is a double-quote, then we need to escape it, too,
+ # since it is done that way in the LyX file.
+ if m.group(1) == "\"":
+ command += "\\"
+ command += m.group(1) + m.group(2)
+ spec_chars.append([command, unichr(eval(ucs4))])
+ fp.close()
+ return spec_chars
+