These commands should just take some lines.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36131 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Richard Heck 2010-11-05 17:35:53 +00:00
parent 68ec955a6d
commit f3ae1e2641
2 changed files with 55 additions and 54 deletions

View File

@ -283,104 +283,105 @@ def latex_length(slen):
return (percent, slen) return (percent, slen)
def revert_flex_inset(document, name, LaTeXname, position): def revert_flex_inset(lines, name, LaTeXname):
" Convert flex insets to TeX code " " Convert flex insets to TeX code "
i = position i = 0
while True: while True:
i = find_token(document.body, '\\begin_inset Flex ' + name, i) i = find_token(lines, '\\begin_inset Flex ' + name, i)
if i == -1: if i == -1:
return return
z = find_end_of_inset(document.body, i) z = find_end_of_inset(lines, i)
if z == -1: if z == -1:
document.warning("Malformed LyX document: Can't find end of Flex " + name + " inset.") document.warning("Can't find end of Flex " + name + " inset.")
return i += 1
continue
# remove the \end_inset # remove the \end_inset
document.body[z - 2:z + 1] = put_cmd_in_ert("}") lines[z - 2:z + 1] = put_cmd_in_ert("}")
# we need to reset character layouts if necessary # we need to reset character layouts if necessary
j = find_token(document.body, '\\emph on', i, z) j = find_token(lines, '\\emph on', i, z)
k = find_token(document.body, '\\noun on', i, z) k = find_token(lines, '\\noun on', i, z)
l = find_token(document.body, '\\series', i, z) l = find_token(lines, '\\series', i, z)
m = find_token(document.body, '\\family', i, z) m = find_token(lines, '\\family', i, z)
n = find_token(document.body, '\\shape', i, z) n = find_token(lines, '\\shape', i, z)
o = find_token(document.body, '\\color', i, z) o = find_token(lines, '\\color', i, z)
p = find_token(document.body, '\\size', i, z) p = find_token(lines, '\\size', i, z)
q = find_token(document.body, '\\bar under', i, z) q = find_token(lines, '\\bar under', i, z)
r = find_token(document.body, '\\uuline on', i, z) r = find_token(lines, '\\uuline on', i, z)
s = find_token(document.body, '\\uwave on', i, z) s = find_token(lines, '\\uwave on', i, z)
t = find_token(document.body, '\\strikeout on', i, z) t = find_token(lines, '\\strikeout on', i, z)
if j != -1: if j != -1:
document.body.insert(z - 2, "\\emph default") lines.insert(z - 2, "\\emph default")
if k != -1: if k != -1:
document.body.insert(z - 2, "\\noun default") lines.insert(z - 2, "\\noun default")
if l != -1: if l != -1:
document.body.insert(z - 2, "\\series default") lines.insert(z - 2, "\\series default")
if m != -1: if m != -1:
document.body.insert(z - 2, "\\family default") lines.insert(z - 2, "\\family default")
if n != -1: if n != -1:
document.body.insert(z - 2, "\\shape default") lines.insert(z - 2, "\\shape default")
if o != -1: if o != -1:
document.body.insert(z - 2, "\\color inherit") lines.insert(z - 2, "\\color inherit")
if p != -1: if p != -1:
document.body.insert(z - 2, "\\size default") lines.insert(z - 2, "\\size default")
if q != -1: if q != -1:
document.body.insert(z - 2, "\\bar default") lines.insert(z - 2, "\\bar default")
if r != -1: if r != -1:
document.body.insert(z - 2, "\\uuline default") lines.insert(z - 2, "\\uuline default")
if s != -1: if s != -1:
document.body.insert(z - 2, "\\uwave default") lines.insert(z - 2, "\\uwave default")
if t != -1: if t != -1:
document.body.insert(z - 2, "\\strikeout default") lines.insert(z - 2, "\\strikeout default")
document.body[i:i + 4] = put_cmd_in_ert(LaTeXname + "{") lines[i:i + 4] = put_cmd_in_ert(LaTeXname + "{")
i += 1 i += 1
def revert_font_attrs(document, name, LaTeXname): def revert_font_attrs(lines, name, LaTeXname):
" Reverts font changes to TeX code " " Reverts font changes to TeX code "
i = 0 i = 0
changed = False changed = False
while True: while True:
i = find_token(document.body, name + ' on', i) i = find_token(lines, name + ' on', i)
if i == -1: if i == -1:
return changed return changed
j = find_token(document.body, name + ' default', i) j = find_token(lines, name + ' default', i)
k = find_token(document.body, name + ' on', i + 1) k = find_token(lines, name + ' on', i + 1)
# if there is no default set, the style ends with the layout # if there is no default set, the style ends with the layout
# assure hereby that we found the correct layout end # assure hereby that we found the correct layout end
if j != -1 and (j < k or k == -1): if j != -1 and (j < k or k == -1):
document.body[j:j + 1] = put_cmd_in_ert("}") lines[j:j + 1] = put_cmd_in_ert("}")
else: else:
j = find_token(document.body, '\\end_layout', i) j = find_token(lines, '\\end_layout', i)
document.body[j:j] = put_cmd_in_ert("}") lines[j:j] = put_cmd_in_ert("}")
document.body[i:i + 1] = put_cmd_in_ert(LaTeXname + "{") lines[i:i + 1] = put_cmd_in_ert(LaTeXname + "{")
changed = True changed = True
i += 1 i += 1
def revert_layout_command(document, name, LaTeXname, position): def revert_layout_command(lines, name, LaTeXname):
" Reverts a command from a layout to TeX code " " Reverts a command from a layout to TeX code "
i = position i = 0
while True: while True:
i = find_token(document.body, '\\begin_layout ' + name, i) i = find_token(lines, '\\begin_layout ' + name, i)
if i == -1: if i == -1:
return return
k = -1 k = -1
# find the next layout # find the next layout
j = i + 1 j = i + 1
while k == -1: while k == -1:
j = find_token(document.body, '\\begin_layout', j) j = find_token(lines, '\\begin_layout', j)
l = len(document.body) l = len(lines)
# if nothing was found it was the last layout of the document # if nothing was found it was the last layout of the document
if j == -1: if j == -1:
document.body[l - 4:l - 4] = put_cmd_in_ert("}") lines[l - 4:l - 4] = put_cmd_in_ert("}")
k = 0 k = 0
# exclude plain layout because this can be TeX code or another inset # exclude plain layout because this can be TeX code or another inset
elif document.body[j] != '\\begin_layout Plain Layout': elif lines[j] != '\\begin_layout Plain Layout':
document.body[j - 2:j - 2] = put_cmd_in_ert("}") lines[j - 2:j - 2] = put_cmd_in_ert("}")
k = 0 k = 0
else: else:
j += 1 j += 1
document.body[i] = '\\begin_layout Standard' lines[i] = '\\begin_layout Standard'
document.body[i + 1:i + 1] = put_cmd_in_ert(LaTeXname + "{") lines[i + 1:i + 1] = put_cmd_in_ert(LaTeXname + "{")
i += 1 i += 1

View File

@ -29,7 +29,7 @@ from parser_tools import find_token, find_end_of, find_tokens, \
from lyx2lyx_tools import add_to_preamble, insert_to_preamble, \ from lyx2lyx_tools import add_to_preamble, insert_to_preamble, \
put_cmd_in_ert, lyx2latex, latex_length, revert_flex_inset, \ put_cmd_in_ert, lyx2latex, latex_length, revert_flex_inset, \
revert_font_attrs, revert_layout_command, hex2ratio, str2bool revert_font_attrs, hex2ratio, str2bool
#################################################################### ####################################################################
# Private helper functions # Private helper functions
@ -484,9 +484,9 @@ def revert_printindexall(document):
def revert_strikeout(document): def revert_strikeout(document):
" Reverts \\strikeout font attribute " " Reverts \\strikeout font attribute "
changed = revert_font_attrs(document, "\\uuline", "\\uuline") changed = revert_font_attrs(document.body, "\\uuline", "\\uuline")
changed = revert_font_attrs(document, "\\uwave", "\\uwave") or changed changed = revert_font_attrs(document.body, "\\uwave", "\\uwave") or changed
changed = revert_font_attrs(document, "\\strikeout", "\\sout") or changed changed = revert_font_attrs(document.body, "\\strikeout", "\\sout") or changed
if changed == True: if changed == True:
insert_to_preamble(0, document, insert_to_preamble(0, document,
'% Commands inserted by lyx2lyx for proper underlining\n' '% Commands inserted by lyx2lyx for proper underlining\n'
@ -1496,8 +1496,8 @@ def revert_IEEEtran(document):
" Convert IEEEtran layouts and styles to TeX code " " Convert IEEEtran layouts and styles to TeX code "
if document.textclass != "IEEEtran": if document.textclass != "IEEEtran":
return return
revert_flex_inset(document, "IEEE membership", "\\IEEEmembership", 0) revert_flex_inset(document.body, "IEEE membership", "\\IEEEmembership")
revert_flex_inset(document, "Lowercase", "\\MakeLowercase", 0) revert_flex_inset(document.body, "Lowercase", "\\MakeLowercase")
layouts = ("Special Paper Notice", "After Title Text", "Publication ID", layouts = ("Special Paper Notice", "After Title Text", "Publication ID",
"Page headings", "Biography without photo") "Page headings", "Biography without photo")
latexcmd = {"Special Paper Notice": "\\IEEEspecialpapernotice", latexcmd = {"Special Paper Notice": "\\IEEEspecialpapernotice",