From 1a1f6090b1b4eaad2e4a554eaab6bc19450a869c Mon Sep 17 00:00:00 2001 From: Richard Heck Date: Fri, 5 Nov 2010 14:39:58 +0000 Subject: [PATCH] Fix up convert_bibtex_clearpage. The last one! git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36105 a592a061-630c-0410-9148-cb99ea01b6c8 --- lib/lyx2lyx/lyx_2_0.py | 56 ++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/lib/lyx2lyx/lyx_2_0.py b/lib/lyx2lyx/lyx_2_0.py index e181d61ea0..6dbc31ba67 100644 --- a/lib/lyx2lyx/lyx_2_0.py +++ b/lib/lyx2lyx/lyx_2_0.py @@ -1919,10 +1919,21 @@ def convert_bibtex_clearpage(document): " insert a clear(double)page bibliographystyle if bibtotoc option is used " i = find_token(document.header, '\\papersides', 0) + sides = 0 if i == -1: document.warning("Malformed LyX document: Can't find papersides definition.") - return - sides = int(document.header[i][12]) + document.warning("Assuming single sided.") + sides = 1 + else: + val = get_value(document.header, "\\papersides", i) + try: + sides = int(val) + except: + pass + if sides != 1 and sides != 2: + document.warning("Invalid papersides value: " + val) + document.warning("Assuming single sided.") + sides = 1 j = 0 while True: @@ -1937,47 +1948,34 @@ def convert_bibtex_clearpage(document): continue # only act if there is the option "bibtotoc" - m = find_token(document.body, 'options', j, k) - if m == -1: + val = get_value(document.body, 'options', j, k) + if not val: document.warning("Can't find options for bibliography inset at line " + str(j)) j = k continue - optline = document.body[m] - idx = optline.find("bibtotoc") - if idx == -1: + if val.find("bibtotoc") == -1: j = k continue # so we want to insert a new page right before the paragraph that - # this bibliography thing is in. we'll look for it backwards. - lay = j - 1 - while lay >= 0: - if document.body[lay].startswith("\\begin_layout"): - break - lay -= 1 - - if lay < 0: + # this bibliography thing is in. + lay = find_token_backwards(document.body, "\\begin_layout", j) + if lay == -1: document.warning("Can't find layout containing bibliography inset at line " + str(j)) j = k continue - subst1 = '\\begin_layout Standard\n' \ - + '\\begin_inset Newpage clearpage\n' \ - + '\\end_inset\n\n\n' \ - + '\\end_layout\n' - subst2 = '\\begin_layout Standard\n' \ - + '\\begin_inset Newpage cleardoublepage\n' \ - + '\\end_inset\n\n\n' \ - + '\\end_layout\n' if sides == 1: - document.body.insert(lay, subst1) - document.warning(subst1) + cmd = "clearpage" else: - document.body.insert(lay, subst2) - document.warning(subst2) - - j = k + cmd = "cleardoublepage" + subst = ['\\begin_layout Standard', + '\\begin_inset Newpage ' + cmd, + '\\end_inset', '', '', + '\\end_layout', ''] + document.body[lay:lay] = subst + j = k + len(subst) ## -- 2.39.2