- # at first revert the inset layouts because they can be part of the In_Preamble layouts
- while m != -1 or j != -1 or h != -1 or k != -1 or n != -1:
- # \pkg
- if h != -1:
- h = find_token(document.body, "\\begin_inset Flex Pkg", h)
- if h != -1:
- endh = find_end_of_inset(document.body, h)
- document.body[endh - 2 : endh + 1] = put_cmd_in_ert("}")
- document.body[h : h + 4] = put_cmd_in_ert("\\pkg{")
- h = h + 5
- # \proglang
- if m != -1:
- m = find_token(document.body, "\\begin_inset Flex Proglang", m)
- if m != -1:
- endm = find_end_of_inset(document.body, m)
- document.body[endm - 2 : endm + 1] = put_cmd_in_ert("}")
- document.body[m : m + 4] = put_cmd_in_ert("\\proglang{")
- m = m + 5
- # \code
- if j != -1:
- j = find_token(document.body, "\\begin_inset Flex Code", j)
- if j != -1:
- # assure that we are not in a Code Chunk inset
- if document.body[j][-1] == "e":
- endj = find_end_of_inset(document.body, j)
- document.body[endj - 2 : endj + 1] = put_cmd_in_ert("}")
- document.body[j : j + 4] = put_cmd_in_ert("\\code{")
- j = j + 5
- else:
- j = j + 1
- # \email
- if k != -1:
- k = find_token(document.body, "\\begin_inset Flex E-mail", k)
- if k != -1:
- endk = find_end_of_inset(document.body, k)
- document.body[endk - 2 : endk + 1] = put_cmd_in_ert("}")
- document.body[k : k + 4] = put_cmd_in_ert("\\email{")
- k = k + 5
- # \url
- if n != -1:
- n = find_token(document.body, "\\begin_inset Flex URL", n)
- if n != -1:
- endn = find_end_of_inset(document.body, n)
- document.body[endn - 2 : endn + 1] = put_cmd_in_ert("}")
- document.body[n : n + 4] = put_cmd_in_ert("\\url{")
- n = n + 5
- # now revert the In_Preamble layouts
- # \title
- i = find_token(document.body, "\\begin_layout Title", 0)
- if i == -1:
- return
- j = find_end_of_layout(document.body, i)
- if j == -1:
- document.warning("Malformed LyX document: Can't find end of Title layout")
- i += 1
- continue
- content = lyx2latex(document, document.body[i:j + 1])
- add_to_preamble(document, ["\\title{" + content + "}"])
- del document.body[i:j + 1]
- # \author
- i = find_token(document.body, "\\begin_layout Author", 0)
- if i == -1:
- return
- j = find_end_of_layout(document.body, i)
- if j == -1:
- document.warning("Malformed LyX document: Can't find end of Author layout")
- i += 1
- continue
- content = lyx2latex(document, document.body[i:j + 1])
- add_to_preamble(document, ["\\author{" + content + "}"])
- del document.body[i:j + 1]
- # \Plainauthor
- i = find_token(document.body, "\\begin_layout Plain Author", 0)
- if i == -1:
- return
- j = find_end_of_layout(document.body, i)
- if j == -1:
- document.warning("Malformed LyX document: Can't find end of Plain Author layout")
- i += 1
- continue
- content = lyx2latex(document, document.body[i:j + 1])
- add_to_preamble(document, ["\\Plainauthor{" + content + "}"])
- del document.body[i:j + 1]
- # \Plaintitle
- i = find_token(document.body, "\\begin_layout Plain Title", 0)
- if i == -1:
- return
- j = find_end_of_layout(document.body, i)
- if j == -1:
- document.warning("Malformed LyX document: Can't find end of Plain Title layout")
- i += 1
- continue
- content = lyx2latex(document, document.body[i:j + 1])
- add_to_preamble(document, ["\\Plaintitle{" + content + "}"])
- del document.body[i:j + 1]
- # \Shorttitle
- i = find_token(document.body, "\\begin_layout Short Title", 0)
- if i == -1:
- return
- j = find_end_of_layout(document.body, i)
- if j == -1:
- document.warning("Malformed LyX document: Can't find end of Short Title layout")
- i += 1
- continue
- content = lyx2latex(document, document.body[i:j + 1])
- add_to_preamble(document, ["\\Shorttitle{" + content + "}"])
- del document.body[i:j + 1]
- # \Abstract
- i = find_token(document.body, "\\begin_layout Abstract", 0)
- if i == -1:
- return
- j = find_end_of_layout(document.body, i)
- if j == -1:
- document.warning("Malformed LyX document: Can't find end of Abstract layout")
- i += 1
- continue
- content = lyx2latex(document, document.body[i:j + 1])
- add_to_preamble(document, ["\\Abstract{" + content + "}"])
- del document.body[i:j + 1]
- # \Keywords
- i = find_token(document.body, "\\begin_layout Keywords", 0)
- if i == -1:
- return
- j = find_end_of_layout(document.body, i)
- if j == -1:
- document.warning("Malformed LyX document: Can't find end of Keywords layout")
- i += 1
- continue
- content = lyx2latex(document, document.body[i:j + 1])
- add_to_preamble(document, ["\\Keywords{" + content + "}"])
- del document.body[i:j + 1]
- # \Plainkeywords
- i = find_token(document.body, "\\begin_layout Plain Keywords", 0)
- if i == -1:
- return
- j = find_end_of_layout(document.body, i)
- if j == -1:
- document.warning("Malformed LyX document: Can't find end of Plain Keywords layout")
- i += 1
- continue
- content = lyx2latex(document, document.body[i:j + 1])
- add_to_preamble(document, ["\\Plainkeywords{" + content + "}"])
- del document.body[i:j + 1]
- # \Address
- i = find_token(document.body, "\\begin_layout Address", 0)
- if i == -1:
- return
- j = find_end_of_layout(document.body, i)
- if j == -1:
- document.warning("Malformed LyX document: Can't find end of Address layout")
- i += 1
- continue
- content = lyx2latex(document, document.body[i:j + 1])
- add_to_preamble(document, ["\\Address{" + content + "}"])
- del document.body[i:j + 1]
- # finally handle the code layouts
- h = 0
- m = 0
- j = 0
- k = 0
- while m != -1 or j != -1 or h != -1 or k != -1: