Consider paragraph params when placing arguments at paragraph start (#8449)

This commit is contained in:
Juergen Spitzmueller 2012-12-09 11:40:14 +01:00
parent 30b53ba4a0
commit 280861cd7d
2 changed files with 35 additions and 19 deletions

View File

@ -1269,6 +1269,7 @@ def revert_latexargs(document):
continue continue
parbeg = parent[1] parbeg = parent[1]
parend = parent[2] parend = parent[2]
realparbeg = parent[3]
# Collect all arguments in this paragraph # Collect all arguments in this paragraph
realparend = parend realparend = parend
for p in range(parbeg, parend): for p in range(parbeg, parend):
@ -1295,9 +1296,9 @@ def revert_latexargs(document):
subst += args[f] subst += args[f]
del args[f] del args[f]
# Insert the sorted arg insets at paragraph begin # Insert the sorted arg insets at paragraph begin
document.body[parbeg + 1:parbeg + 1] = subst document.body[realparbeg + 1 : realparbeg + 1] = subst
i = parbeg + 1 + len(subst) i = realparbeg + 1 + len(subst)
def revert_Argument_to_TeX_brace(document, line, n, nmax, environment): def revert_Argument_to_TeX_brace(document, line, n, nmax, environment):
@ -1785,7 +1786,7 @@ def revert_itemargs(document):
document.warning("Malformed lyx document: Can't find parent paragraph layout") document.warning("Malformed lyx document: Can't find parent paragraph layout")
i = i + 1 i = i + 1
continue continue
parbeg = parent[1] parbeg = parent[3]
beginPlain = find_token(document.body, "\\begin_layout Plain Layout", i) beginPlain = find_token(document.body, "\\begin_layout Plain Layout", i)
endPlain = find_end_of_layout(document.body, beginPlain) endPlain = find_end_of_layout(document.body, beginPlain)
content = document.body[beginPlain + 1 : endPlain] content = document.body[beginPlain + 1 : endPlain]
@ -2094,6 +2095,7 @@ def revert_beamerargs(document):
continue continue
parbeg = parent[1] parbeg = parent[1]
parend = parent[2] parend = parent[2]
realparbeg = parent[3]
layoutname = parent[0] layoutname = parent[0]
realparend = parend realparend = parend
for p in range(parbeg, parend): for p in range(parbeg, parend):
@ -2135,7 +2137,7 @@ def revert_beamerargs(document):
pre += put_cmd_in_ert("[") + argcontent + put_cmd_in_ert("]") pre += put_cmd_in_ert("[") + argcontent + put_cmd_in_ert("]")
pre += put_cmd_in_ert("{") pre += put_cmd_in_ert("{")
document.body[parbeg] = "\\begin_layout Standard" document.body[parbeg] = "\\begin_layout Standard"
document.body[parbeg + 1 : parbeg + 1] = pre document.body[realparbeg + 1 : realparbeg + 1] = pre
pe = find_end_of_layout(document.body, parbeg) pe = find_end_of_layout(document.body, parbeg)
post = put_cmd_in_ert("}") post = put_cmd_in_ert("}")
document.body[pe : pe] = post document.body[pe : pe] = post
@ -2154,7 +2156,7 @@ def revert_beamerargs(document):
# Remove arg inset # Remove arg inset
del document.body[p : endInset + 1] del document.body[p : endInset + 1]
subst = put_cmd_in_ert("[") + content + put_cmd_in_ert("]") subst = put_cmd_in_ert("[") + content + put_cmd_in_ert("]")
document.body[parbeg + 1:parbeg + 1] = subst document.body[realparbeg + 1 : realparbeg + 1] = subst
if layoutname == "Overprint": if layoutname == "Overprint":
m = rx.match(document.body[p]) m = rx.match(document.body[p])
if m: if m:
@ -2169,7 +2171,7 @@ def revert_beamerargs(document):
# Remove arg inset # Remove arg inset
del document.body[p : endInset + 1] del document.body[p : endInset + 1]
subst = put_cmd_in_ert("[") + content + put_cmd_in_ert("]") subst = put_cmd_in_ert("[") + content + put_cmd_in_ert("]")
document.body[parbeg + 1:parbeg + 1] = subst document.body[realparbeg + 1 : realparbeg + 1] = subst
if layoutname == "OverlayArea": if layoutname == "OverlayArea":
m = rx.match(document.body[p]) m = rx.match(document.body[p])
if m: if m:
@ -2184,7 +2186,7 @@ def revert_beamerargs(document):
# Remove arg inset # Remove arg inset
del document.body[p : endInset + 1] del document.body[p : endInset + 1]
subst = put_cmd_in_ert("{") + content + put_cmd_in_ert("}") subst = put_cmd_in_ert("{") + content + put_cmd_in_ert("}")
document.body[parbeg + 1:parbeg + 1] = subst document.body[realparbeg + 1 : realparbeg + 1] = subst
if layoutname in list_layouts: if layoutname in list_layouts:
m = rx.match(document.body[p]) m = rx.match(document.body[p])
if m: if m:
@ -2199,7 +2201,7 @@ def revert_beamerargs(document):
# Remove arg inset # Remove arg inset
del document.body[p : endInset + 1] del document.body[p : endInset + 1]
subst = put_cmd_in_ert("<") + content + put_cmd_in_ert(">") subst = put_cmd_in_ert("<") + content + put_cmd_in_ert(">")
document.body[parbeg + 1:parbeg + 1] = subst document.body[realparbeg + 1 : realparbeg + 1] = subst
elif argnr == "item:1": elif argnr == "item:1":
j = find_end_of_inset(document.body, i) j = find_end_of_inset(document.body, i)
# Find containing paragraph layout # Find containing paragraph layout
@ -2208,7 +2210,7 @@ def revert_beamerargs(document):
content = document.body[beginPlain + 1 : endPlain] content = document.body[beginPlain + 1 : endPlain]
del document.body[i:j+1] del document.body[i:j+1]
subst = put_cmd_in_ert("[") + content + put_cmd_in_ert("]") subst = put_cmd_in_ert("[") + content + put_cmd_in_ert("]")
document.body[parbeg + 1 : parbeg + 1] = subst document.body[realparbeg + 1 : realparbeg + 1] = subst
elif argnr == "item:2": elif argnr == "item:2":
j = find_end_of_inset(document.body, i) j = find_end_of_inset(document.body, i)
# Find containing paragraph layout # Find containing paragraph layout
@ -2217,7 +2219,7 @@ def revert_beamerargs(document):
content = document.body[beginPlain + 1 : endPlain] content = document.body[beginPlain + 1 : endPlain]
del document.body[i:j+1] del document.body[i:j+1]
subst = put_cmd_in_ert("<") + content + put_cmd_in_ert(">") subst = put_cmd_in_ert("<") + content + put_cmd_in_ert(">")
document.body[parbeg + 1:parbeg + 1] = subst document.body[realparbeg + 1 : realparbeg + 1] = subst
if layoutname in quote_layouts: if layoutname in quote_layouts:
m = rx.match(document.body[p]) m = rx.match(document.body[p])
if m: if m:
@ -2232,7 +2234,7 @@ def revert_beamerargs(document):
# Remove arg inset # Remove arg inset
del document.body[p : endInset + 1] del document.body[p : endInset + 1]
subst = put_cmd_in_ert("<") + content + put_cmd_in_ert(">") subst = put_cmd_in_ert("<") + content + put_cmd_in_ert(">")
document.body[parbeg + 1:parbeg + 1] = subst document.body[realparbeg + 1 : realparbeg + 1] = subst
if layoutname in corollary_layouts: if layoutname in corollary_layouts:
m = rx.match(document.body[p]) m = rx.match(document.body[p])
if m: if m:
@ -2247,7 +2249,7 @@ def revert_beamerargs(document):
# Remove arg inset # Remove arg inset
del document.body[p : endInset + 1] del document.body[p : endInset + 1]
subst = put_cmd_in_ert("[") + content + put_cmd_in_ert("]") subst = put_cmd_in_ert("[") + content + put_cmd_in_ert("]")
document.body[parbeg + 1:parbeg + 1] = subst document.body[realparbeg + 1 : realparbeg + 1] = subst
i = realparend i = realparend
@ -2276,6 +2278,7 @@ def revert_beamerargs2(document):
continue continue
parbeg = parent[1] parbeg = parent[1]
parend = parent[2] parend = parent[2]
realparbeg = parent[3]
layoutname = parent[0] layoutname = parent[0]
realparend = parend realparend = parend
for p in range(parbeg, parend): for p in range(parbeg, parend):
@ -2302,7 +2305,7 @@ def revert_beamerargs2(document):
# Remove arg inset # Remove arg inset
del document.body[p : endInset + 1] del document.body[p : endInset + 1]
subst = put_cmd_in_ert("<") + content + put_cmd_in_ert(">") subst = put_cmd_in_ert("<") + content + put_cmd_in_ert(">")
document.body[parbeg + 1:parbeg + 1] = subst document.body[realparbeg + 1 : realparbeg + 1] = subst
if layoutname == "OverlayArea": if layoutname == "OverlayArea":
m = rx.match(document.body[p]) m = rx.match(document.body[p])
if m: if m:
@ -2317,7 +2320,7 @@ def revert_beamerargs2(document):
# Remove arg inset # Remove arg inset
del document.body[p : endInset + 1] del document.body[p : endInset + 1]
subst = put_cmd_in_ert("{") + content + put_cmd_in_ert("}") subst = put_cmd_in_ert("{") + content + put_cmd_in_ert("}")
document.body[parbeg + 1:parbeg + 1] = subst document.body[realparbeg + 1 : realparbeg + 1] = subst
if layoutname == "AgainFrame": if layoutname == "AgainFrame":
m = rx.match(document.body[p]) m = rx.match(document.body[p])
if m: if m:
@ -2332,7 +2335,7 @@ def revert_beamerargs2(document):
# Remove arg inset # Remove arg inset
del document.body[p : endInset + 1] del document.body[p : endInset + 1]
subst = put_cmd_in_ert("[<") + content + put_cmd_in_ert(">]") subst = put_cmd_in_ert("[<") + content + put_cmd_in_ert(">]")
document.body[parbeg + 1:parbeg + 1] = subst document.body[realparbeg + 1 : realparbeg + 1] = subst
i = realparend i = realparend
@ -2357,6 +2360,7 @@ def revert_beamerargs3(document):
continue continue
parbeg = parent[1] parbeg = parent[1]
parend = parent[2] parend = parent[2]
realparbeg = parent[3]
layoutname = parent[0] layoutname = parent[0]
realparend = parend realparend = parend
for p in range(parbeg, parend): for p in range(parbeg, parend):
@ -2377,7 +2381,7 @@ def revert_beamerargs3(document):
# Remove arg inset # Remove arg inset
del document.body[p : endInset + 1] del document.body[p : endInset + 1]
subst = put_cmd_in_ert("<") + content + put_cmd_in_ert(">") subst = put_cmd_in_ert("<") + content + put_cmd_in_ert(">")
document.body[parbeg + 1:parbeg + 1] = subst document.body[realparbeg + 1 : realparbeg + 1] = subst
i = realparend i = realparend

View File

@ -128,7 +128,8 @@ get_containing_inset(lines, i):
on line 306. on line 306.
get_containing_layout(lines, i): get_containing_layout(lines, i):
As get_containing_inset, but for layout. As get_containing_inset, but for layout. Additionally returns the
position of real paragraph start (after par params) as 4th value.
find_nonempty_line(lines, start[, end): find_nonempty_line(lines, start[, end):
@ -441,7 +442,8 @@ def get_containing_layout(lines, i):
''' '''
Finds out what kind of layout line i is within. Returns a Finds out what kind of layout line i is within. Returns a
list containing (i) what follows \begin_layout on the the line list containing (i) what follows \begin_layout on the the line
on which the layout begins, plus the starting and ending line. on which the layout begins, plus the starting and ending line
and the start of the apargraph (after all params).
Returns False on any kind of error. Returns False on any kind of error.
''' '''
j = i j = i
@ -458,4 +460,14 @@ def get_containing_layout(lines, i):
if lay == "": if lay == "":
# shouldn't happen # shouldn't happen
return False return False
return (lay, stlay, endlay) par_params = ["\\noindent", "\\indent", "\\indent-toggle", "\\leftindent",
"\\start_of_appendix", "\\paragraph_spacing single",
"\\paragraph_spacing onehalf", "\\paragraph_spacing double",
"\\paragraph_spacing other", "\\align", "\\labelwidthstring"]
stpar = stlay
while True:
if lines[stpar + 1] in par_params:
stpar += 1
else:
break
return (lay, stlay, endlay, stpar)