- line = lines[curline]
- if line.startswith("\\begin_inset ERT"):
- # We don't want to replace things inside ERT, so figure out
- # where the end of the inset is.
- ert_end = find_end_of_inset(lines, curline + 1)
- continue
- elif line.startswith("\\begin_inset Formula"):
- line = line[20:]
- elif line.startswith("\\begin_inset Quotes"):
- # For now, we do a very basic reversion. Someone who understands
- # quotes is welcome to fix it up.
- qtype = line[20:].strip()
- # lang = qtype[0]
- side = qtype[1]
- dbls = qtype[2]
- if side == "l":
- if dbls == "d":
- line = "``"
- else:
- line = "`"
- else:
- if dbls == "d":
- line = "''"
- else:
- line = "'"
- elif line.isspace() or \
- line.startswith("\\begin_layout") or \
- line.startswith("\\end_layout") or \
- line.startswith("\\begin_inset") or \
- line.startswith("\\end_inset") or \
- line.startswith("\\lang") or \
- line.strip() == "status collapsed" or \
- line.strip() == "status open":
- #skip all that stuff
- continue
-
- # this needs to be added to the preamble because of cases like
- # \textmu, \textbackslash, etc.
- add_to_preamble(document, ['% added by lyx2lyx for converted index entries',
- '\\@ifundefined{textmu}',
- ' {\\usepackage{textcomp}}{}'])
- # a lossless reversion is not possible
- # try at least to handle some common insets and settings
- if ert_end >= curline:
- line = line.replace(r'\backslash', r'\\')
- else:
- line = line.replace('&', '\\&{}')
- line = line.replace('#', '\\#{}')
- line = line.replace('^', '\\^{}')
- line = line.replace('%', '\\%{}')
- line = line.replace('_', '\\_{}')
- line = line.replace('$', '\\${}')
-
- # Do the LyX text --> LaTeX conversion
- for rep in unicode_reps:
- line = line.replace(rep[1], rep[0] + "{}")
- line = line.replace(r'\backslash', r'\textbackslash{}')
- line = line.replace(r'\series bold', r'\bfseries{}').replace(r'\series default', r'\mdseries{}')
- line = line.replace(r'\shape italic', r'\itshape{}').replace(r'\shape smallcaps', r'\scshape{}')
- line = line.replace(r'\shape slanted', r'\slshape{}').replace(r'\shape default', r'\upshape{}')
- line = line.replace(r'\emph on', r'\em{}').replace(r'\emph default', r'\em{}')
- line = line.replace(r'\noun on', r'\scshape{}').replace(r'\noun default', r'\upshape{}')
- line = line.replace(r'\bar under', r'\underbar{').replace(r'\bar default', r'}')
- line = line.replace(r'\family sans', r'\sffamily{}').replace(r'\family default', r'\normalfont{}')
- line = line.replace(r'\family typewriter', r'\ttfamily{}').replace(r'\family roman', r'\rmfamily{}')
- line = line.replace(r'\InsetSpace ', r'').replace(r'\SpecialChar ', r'')
- content += line