# find_tokens, find_token_exact, check_token, get_option_value
from lyx2lyx_tools import (add_to_preamble, put_cmd_in_ert, revert_font_attrs,
- insert_to_preamble, latex_length)
-# get_ert, lyx2latex, lyx2verbatim, length_in_bp, convert_info_insets
-# revert_flex_inset, hex2ratio, str2bool
+ insert_to_preamble, latex_length, revert_language)
####################################################################
# Private helper functions
Set the document language to English but use correct babel setting.
"""
- # TODO: currently, text parts in these languages are kept as-is
- # and are converted to the document language by LyX 2.2 with warnings like
- # LyX: Unknown language `romansh' [around line 273 of file lyx_2_3_test.22.lyx current token: 'romansh' context: 'InsetSpaceParams::read']
- if document.language not in ["bosnian", "friulan", "macedonian",
- "piedmontese", "romansh"]:
- return
- i = find_token(document.header, "\\language")
- if i != -1:
- document.header[i] = "\\language english"
- # ensure we use Babel:
- # TODO: Polyglossia supports friulan, piedmontese, romansh
- # but requires "\resetdefaultlanguage{...}" at begin of document.
- j = find_token(document.header, "\\language_package default")
- if j != -1:
- document.header[j] = "\\language_package babel"
- k = find_token(document.header, "\\options")
- if k != -1:
- document.header[k] = document.header[k].replace("\\options",
- "\\options %s," % document.language)
- else:
- l = find_token(document.header, "\\use_default_options")
- document.header.insert(l + 1, "\\options " + document.language)
- document.language = "english"
+ nblanguages = ["bosnian", "friulan", "macedonian", "piedmontese", "romansh"]
+
+ for lang in nblanguages:
+ if lang == "bosnian" or lang == "macedonian":
+ # These are only supported by babel
+ revert_language(document, lang, lang, "")
+ else:
+ # These are supported by babel and polyglossia
+ revert_language(document, lang, lang, lang)
+
# TODO:
# def convert_new_babel_languages(document)
def revert_amharic(document):
"Set the document language to English but assure Amharic output"
- if document.language == "amharic":
- document.language = "english"
- i = find_token(document.header, "\\language amharic", 0)
- if i != -1:
- document.header[i] = "\\language english"
- j = find_token(document.header, "\\language_package default", 0)
- if j != -1:
- document.header[j] = "\\language_package default"
- add_to_preamble(document, ["\\AtBeginDocument{\setotherlanguage{amharic}}"])
- document.body[2 : 2] = ["\\begin_layout Standard",
- "\\begin_inset ERT", "status open", "",
- "\\begin_layout Plain Layout", "", "",
- "\\backslash",
- "resetdefaultlanguage{amharic}",
- "\\end_layout", "", "\\end_inset", "", "",
- "\\end_layout", ""]
+ revert_language(document, "amharic", "", "amharic")
def revert_asturian(document):
"Set the document language to English but assure Asturian output"
- if document.language == "asturian":
- document.language = "english"
- i = find_token(document.header, "\\language asturian", 0)
- if i != -1:
- document.header[i] = "\\language english"
- j = find_token(document.header, "\\language_package default", 0)
- if j != -1:
- document.header[j] = "\\language_package default"
- add_to_preamble(document, ["\\AtBeginDocument{\setotherlanguage{asturian}}"])
- document.body[2 : 2] = ["\\begin_layout Standard",
- "\\begin_inset ERT", "status open", "",
- "\\begin_layout Plain Layout", "", "",
- "\\backslash",
- "resetdefaultlanguage{asturian}",
- "\\end_layout", "", "\\end_inset", "", "",
- "\\end_layout", ""]
+ revert_language(document, "asturian", "", "asturian")
def revert_kannada(document):
"Set the document language to English but assure Kannada output"
- if document.language == "kannada":
- document.language = "english"
- i = find_token(document.header, "\\language kannada", 0)
- if i != -1:
- document.header[i] = "\\language english"
- j = find_token(document.header, "\\language_package default", 0)
- if j != -1:
- document.header[j] = "\\language_package default"
- add_to_preamble(document, ["\\AtBeginDocument{\setotherlanguage{kannada}}"])
- document.body[2 : 2] = ["\\begin_layout Standard",
- "\\begin_inset ERT", "status open", "",
- "\\begin_layout Plain Layout", "", "",
- "\\backslash",
- "resetdefaultlanguage{kannada}",
- "\\end_layout", "", "\\end_inset", "", "",
- "\\end_layout", ""]
+ revert_language(document, "kannada", "", "kannada")
def revert_khmer(document):
"Set the document language to English but assure Khmer output"
- if document.language == "khmer":
- document.language = "english"
- i = find_token(document.header, "\\language khmer", 0)
- if i != -1:
- document.header[i] = "\\language english"
- j = find_token(document.header, "\\language_package default", 0)
- if j != -1:
- document.header[j] = "\\language_package default"
- add_to_preamble(document, ["\\AtBeginDocument{\setotherlanguage{khmer}}"])
- document.body[2 : 2] = ["\\begin_layout Standard",
- "\\begin_inset ERT", "status open", "",
- "\\begin_layout Plain Layout", "", "",
- "\\backslash",
- "resetdefaultlanguage{khmer}",
- "\\end_layout", "", "\\end_inset", "", "",
- "\\end_layout", ""]
+ revert_language(document, "khmer", "", "khmer")
def revert_urdu(document):
"Set the document language to English but assure Urdu output"
- if document.language == "urdu":
- document.language = "english"
- i = find_token(document.header, "\\language urdu", 0)
- if i != -1:
- document.header[i] = "\\language english"
- j = find_token(document.header, "\\language_package default", 0)
- if j != -1:
- document.header[j] = "\\language_package default"
- add_to_preamble(document, ["\\AtBeginDocument{\setotherlanguage{urdu}}"])
- document.body[2 : 2] = ["\\begin_layout Standard",
- "\\begin_inset ERT", "status open", "",
- "\\begin_layout Plain Layout", "", "",
- "\\backslash",
- "resetdefaultlanguage{urdu}",
- "\\end_layout", "", "\\end_inset", "", "",
- "\\end_layout", ""]
+ revert_language(document, "urdu", "", "urdu")
def revert_syriac(document):
"Set the document language to English but assure Syriac output"
- if document.language == "syriac":
- document.language = "english"
- i = find_token(document.header, "\\language syriac", 0)
- if i != -1:
- document.header[i] = "\\language english"
- j = find_token(document.header, "\\language_package default", 0)
- if j != -1:
- document.header[j] = "\\language_package default"
- add_to_preamble(document, ["\\AtBeginDocument{\setotherlanguage{syriac}}"])
- document.body[2 : 2] = ["\\begin_layout Standard",
- "\\begin_inset ERT", "status open", "",
- "\\begin_layout Plain Layout", "", "",
- "\\backslash",
- "resetdefaultlanguage{syriac}",
- "\\end_layout", "", "\\end_inset", "", "",
- "\\end_layout", ""]
+ revert_language(document, "syriac", "", "syriac")
def revert_quotes(document):
def convert_literalparam(document):
" Add param literal "
- for inset in command_insets:
- i = 0
- while True:
- i = find_token(document.body, '\\begin_inset CommandInset %s' % inset, i)
- if i == -1:
- break
- j = find_end_of_inset(document.body, i)
- if j == -1:
- document.warning("Malformed LyX document: Can't find end of %s inset at line %d" % (inset, i))
- i += 1
- continue
- while i < j and document.body[i].strip() != '':
- i += 1
- # href is already fully latexified. Here we can switch off literal.
- if inset == "href":
- document.body.insert(i, "literal \"false\"")
- else:
- document.body.insert(i, "literal \"true\"")
+ pos = len("\\begin_inset CommandInset ")
+ i = 0
+ while True:
+ i = find_token(document.body, '\\begin_inset CommandInset', i)
+ if i == -1:
+ break
+ inset = document.body[i][pos:].strip()
+ if not inset in command_insets:
+ i += 1
+ continue
+ j = find_end_of_inset(document.body, i)
+ if j == -1:
+ document.warning("Malformed LyX document: Can't find end of %s inset at line %d" % (inset, i))
+ i += 1
+ continue
+ while i < j and document.body[i].strip() != '':
+ i += 1
+ # href is already fully latexified. Here we can switch off literal.
+ if inset == "href":
+ document.body.insert(i, "literal \"false\"")
+ else:
+ document.body.insert(i, "literal \"true\"")
+ i = j + 1
def revert_literalparam(document):
['% Added by lyx2lyx',
r'\renewcommand{\textendash}{--}',
r'\renewcommand{\textemdash}{---}']) or None
-
+
if use_dash_ligatures is None:
# Look for dashes (Documents by LyX 2.1 or older have "\twohyphens\n"
# or "\threehyphens\n" as interim representation for -- an ---.)
document.warning("Malformed LyX document: "
"Can't find layout at line %d" % i)
continue
+ if not layoutname:
+ document.warning("Malformed LyX document: "
+ "Missing layout name on line %d"%start)
if layoutname == "LyX-Code":
i = end
continue