X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=lib%2Flyx2lyx%2Flyx2lyx_tools.py;h=9c4fe0bb0bb0db2262babef1e187c5c64b205bb0;hb=6ab3be039ee0d74bbb7782bae8e1e0b278d14b3d;hp=97745b1dfde1ef5dca34d32d7cc0b30e3d673d19;hpb=8e06c2ffa9d2c4ab17a793c309b8c93ffadaa9fe;p=lyx.git diff --git a/lib/lyx2lyx/lyx2lyx_tools.py b/lib/lyx2lyx/lyx2lyx_tools.py index 97745b1dfd..9c4fe0bb0b 100644 --- a/lib/lyx2lyx/lyx2lyx_tools.py +++ b/lib/lyx2lyx/lyx2lyx_tools.py @@ -578,63 +578,40 @@ def insert_document_option(document, option): "Insert _option_ as a document option." # Find \options in the header - options_line = find_token(document.header, "\\options", 0) - + i = find_token(document.header, "\\options", 0) # if the options does not exists add it after the textclass - if options_line == -1: - textclass_line = find_token(document.header, "\\textclass", 0) - document.header.insert(textclass_line +1, - r"\options %s" % option) + if i == -1: + i = find_token(document.header, "\\textclass", 0) + 1 + document.header.insert(i, r"\options %s" % option) return - - # add it to the end of the options - document.header[options_line] += ",%s" % option + # otherwise append to options + if not is_document_option(document, option): + document.header[i] += ",%s" % option def remove_document_option(document, option): - """ Remove _option_ as a document option. - - It is assumed that option belongs to the \options. - That can be done running is_document_option(document, option).""" - - options_line = find_token(document.header, "\\options", 0) - option_pos = document.header[options_line].find(option) - - # Remove option from \options - comma_before_pos = document.header[options_line].rfind(',', 0, option_pos) - comma_after_pos = document.header[options_line].find(',', option_pos) + """ Remove _option_ as a document option.""" - # if there are no commas then it is the single option - # and the options line should be removed since it will be empty - if comma_before_pos == comma_after_pos == -1: - del document.header[options_line] - return + i = find_token(document.header, "\\options") + options = get_value(document.header, "\\options", i) + options = [op.strip() for op in options.split(',')] - # last option - options = document.header[options_line] - if comma_after_pos == -1: - document.header[options_line] = options[:comma_before_pos].rsplit() - return + # Remove `option` from \options + options = [op for op in options if op != option] - document.header[options_line] = options[comma_before_pos: comma_after_pos] + if options: + document.header[i] = "\\options " + ','.join(options) + else: + del document.header[i] def is_document_option(document, option): "Find if _option_ is a document option" - # Find \options in the header - options_line = find_token(document.header, "\\options", 0) - - # \options is not present in the header - if options_line == -1: - return False - - option_pos = document.header[options_line].find(option) - # option is not present in the \options - if option_pos == -1: - return False + options = get_value(document.header, "\\options") + options = [op.strip() for op in options.split(',')] + return option in options - return True singlepar_insets = [s.strip() for s in u"Argument, Caption Above, Caption Below, Caption Bicaption,"