commit b625138be66ec5f76c3b9418a6a33c26bb313902
Author: Juergen Spitzmueller <[email protected]>
Date: Sun Aug 25 13:22:07 2024 +0200
Add support for the following languages
Polyglossia:
Chinese (Simplified), Chinese (Traditional), Japanese, Kurdish (Sorani),
Latin (Classic), Latin (Ecclesiastic), Latin (Medieval), N'ko, Odia,
Punjabi, and Uyghur
Babel:
Amharic, Armenian, Asturian, Bengali, Church Slavonic, Coptic, Divehi,
Kannada, Kazakh, Khmer, Kurdish (Sorani), Lao, Latin (Classic),
Latin (Ecclesiastic), Latin (Medieval), Malayalam, Marathi, N'ko,
Occitan, Odia, Punjabi, Russian (Petrine orthography), Sanskrit, Syriac,
Tamil, Telugu, Tibetan, Urdu, and Uyghur
---
development/FORMAT | 11 ++
lib/languages | 272 +++++++++++++++++++++++--------------------
lib/lyx2lyx/lyx2lyx_tools.py | 19 ++-
lib/lyx2lyx/lyx_2_5.py | 148 ++++++++++++++++++++++-
src/tex2lyx/Preamble.cpp | 83 ++++++-------
src/version.h | 4 +-
6 files changed, 363 insertions(+), 174 deletions(-)
diff --git a/development/FORMAT b/development/FORMAT
index 79beb356c7..71caf03107 100644
--- a/development/FORMAT
+++ b/development/FORMAT
@@ -7,6 +7,17 @@ changes happened in particular if possible. A good example
would be
-----------------------
+2024-08-25 Jürgen Spitzmüller <[email protected]>
+ * Format incremented to 630: Add support for a number of languages in
+ babel and polyglossia:
+ Polyglossia: Chinese (Simplified), Chinese (Traditional), Japanese,
Kurdish (Sorani),
+ Latin (Classic), Latin (Ecclesiastic), Latin (Medieval), N'ko, Odia,
Punjabi, and Uyghur
+ Babel: Amharic, Armenian, Asturian, Bengali, Church Slavonic,
Coptic, Divehi,
+ Kannada, Kazakh, Khmer, Kurdish (Sorani), Lao, Latin (Classic),
Latin (Ecclesiastic),
+ Latin (Medieval), Malayalam, Marathi, N'ko, Occitan, Odia, Punjabi,
+ Russian (Petrine orthography), Sanskrit, Syriac, Tamil, Telugu,
Tibetan, Urdu,
+ and Uyghur
+
2024-08-23 Jürgen Spitzmüller <[email protected]>
* Format incremented to 629: Add support for language options
New buffer params \language_options_babel and
diff --git a/lib/languages b/lib/languages
index e4feee3a6b..37bbf58645 100644
--- a/lib/languages
+++ b/lib/languages
@@ -211,12 +211,10 @@ Language american
LangCode en_US
End
-# not supported by babel
Language amharic
GuiName "Amharic"
-# TODO:
-# BabelName amharic
-# BabelProvide 1
+ BabelName amharic
+ BabelProvide 1
PolyglossiaName amharic
Encoding utf8
DateFormats "dd MMMM yyyy|dd MMM yyyy|dd/MM/yyyy"
@@ -289,12 +287,10 @@ Language arabic_arabi
LangCode ar_SA
End
-# not supported by babel
Language armenian
GuiName "Armenian"
-# TODO:
-# BabelName armenian
-# BabelProvide 1
+ BabelName armenian
+ BabelProvide 1
PolyglossiaName armenian
QuoteStyle swiss
Encoding utf8
@@ -302,12 +298,10 @@ Language armenian
LangCode hy_AM
End
-# not supported by babel
Language asturian
GuiName "Asturian"
-# TODO:
-# BabelName asturian
-# BabelProvide 1
+ BabelName asturian
+ BabelProvide 1
PolyglossiaName asturian
QuoteStyle french
Encoding iso8859-15
@@ -434,9 +428,8 @@ End
# supported by polyglossia but not babel:
Language bengali
GuiName "Bengali"
-# TODO:
-# BabelName bengali
-# BabelProvide 1
+ BabelName bengali
+ BabelProvide 1
PolyglossiaName bengali
QuoteStyle english
Encoding utf8
@@ -554,9 +547,8 @@ End
Language chinese-simplified
GuiName "Chinese (simplified)"
HasGuiSupport true
-# TODO
-# PolyglossiaName chinese
-# PolyglossiaOpts "variant=simplified"
+ PolyglossiaName chinese
+ PolyglossiaOpts "variant=simplified"
Encoding euc-cn
QuoteStyle english
WordWrap false
@@ -569,9 +561,8 @@ End
Language chinese-traditional
GuiName "Chinese (traditional)"
HasGuiSupport true
-# TODO
-# PolyglossiaName chinese
-# PolyglossiaOpts "variant=traditional"
+ PolyglossiaName chinese
+ PolyglossiaOpts "variant=traditional"
QuoteStyle cjk
Encoding utf8-cjk
WordWrap false
@@ -580,12 +571,10 @@ Language chinese-traditional
Requires CJK
End
-# not supported by babel
Language churchslavonic
GuiName "Church Slavonic"
-# TODO:
-# BabelName churchslavic
-# BabelProvide 1
+ BabelName churchslavic
+ BabelProvide 1
PolyglossiaName churchslavonic
QuoteStyle swiss
Encoding utf8
@@ -595,13 +584,11 @@ Language churchslavonic
Provides textcyrillic
End
-# not supported by babel
# FIXME DateFormats
Language coptic
GuiName "Coptic"
-# TODO:
-# BabelName coptic
-# BabelProvide 1
+ BabelName coptic
+ BabelProvide 1
PolyglossiaName coptic
Encoding utf8
LangCode cop_EG
@@ -650,9 +637,8 @@ End
# babel only provides a "bare minimum locale"
Language divehi
GuiName "Divehi (Maldivian)"
-# TODO:
-# BabelName divehi
-# BabelProvide 1
+ BabelName divehi
+ BabelProvide 1
PolyglossiaName divehi
Encoding utf8
DateFormats "yyyy MMMM dd|yyyy MMM dd|dd/MM/yyyy"
@@ -917,30 +903,16 @@ Language hebrew
LangCode he_IL
End
-# not supported by babel
Language hindi
GuiName "Hindi"
-# TODO:
-# BabelName hindi
-# BabelProvide 1
+ BabelName hindi
+ BabelProvide 1
PolyglossiaName hindi
Encoding utf8
DateFormats "dd MMMM yyyy|dd MMM yyyy|dd-MM-yyyy"
LangCode hi_IN
End
-# Currently not supported (file format change!)
-# "hungarian" is a synonym for the "magyar" babel language option
-# "hungarian" might be used for special purposes,
-# see http://www.math.bme.hu/latex/magyar_pre_tug2004.pdf
-#Language hungarian
-# GuiName "Hungarian"
-# BabelName hungarian
-# Encoding iso8859-2
-# LangCode hu_HU
-# QuoteStyle polish
-#End
-
# FontEncoding: OT1 misses ð and Þ
Language icelandic
GuiName "Icelandic"
@@ -1001,8 +973,7 @@ Language japanese
HasGuiSupport true
BabelName japanese
BabelOptFormat \languageattribute{$lang$}{$opts$}
-# TODO
-# PolyglossiaName japanese
+ PolyglossiaName japanese
Encoding jis-platex
WordWrap false
LangCode ja_JP
@@ -1023,12 +994,10 @@ Language japanese-cjk
QuoteStyle cjk
End
-# not supported by babel
Language kannada
GuiName "Kannada"
-# TODO:
-# BabelName kannada
-# BabelProvide 1
+ BabelName kannada
+ BabelProvide 1
PolyglossiaName kannada
Encoding utf8
DateFormats "dd MMMM yyyy|dd MMMM yyyy|dd-MM-yyyy"
@@ -1036,21 +1005,20 @@ Language kannada
End
# not yet supported by polyglossia
-# not supported by babel
Language kazakh
GuiName "Kazakh"
+ BabelName kazakh
+ BabelProvide 1
Encoding ascii
# FontEncoding T2A # not set (no Babel support)
DateFormats "dd MMMM yyyy|dd MMMM yyyy|yyyy-dd-MM"
LangCode kk_KZ
End
-# not supported by babel
Language khmer
GuiName "Khmer"
-# TODO:
-# BabelName khmer
-# BabelProvide 1
+ BabelName khmer
+ BabelProvide 1
PolyglossiaName khmer
Encoding utf8
DateFormats "d MMMM yyyy|d MMMM yyyy|dd/MM/yyyy"
@@ -1091,14 +1059,25 @@ Language kurmanji
LangCode kmr
End
-# TODO: kurdish, variant=sorani
-# not supported by babel
+Language sorani
+ GuiName "Kurdish (Sorani)"
+ BabelName sorani
+ BabelProvide 1
+ PolyglossiaName kurdish
+ PolyglossiaOpts "variant=sorani"
+ XindyName kurdish-bedirxan
+ Encoding utf8
+ FontEncoding T1|OT1
+ DateFormats "d. MMMM yyyy|d. M. yyyy|yyyy-MM-dd"
+ LangCode ckb
+End
+
+
Language lao
GuiName "Lao"
-# TODO:
-# BabelName lao
-# BabelProvide 1
+ BabelName lao
+ BabelProvide 1
PolyglossiaName lao
Encoding utf8
DateFormats "dd MMMM yyyy|dd MMMM yyyy|dd/MM/yyyy"
@@ -1109,7 +1088,7 @@ End
# We therefore use the name of its hunspell dictionary.
# FIXME DateFormats
Language latin
- GuiName "Latin"
+ GuiName "Latin (Modern)"
BabelName latin
BabelOptFormat modifier
PolyglossiaName latin
@@ -1118,10 +1097,48 @@ Language latin
ActiveChars ^=
Encoding iso8859-15
FontEncoding T1|OT1
- LangCode la_LA
+ LangCode la
+End
+
+Language latin-classic
+ GuiName "Latin (Classic)"
+ BabelName classiclatin
+ BabelOptFormat modifier
+ PolyglossiaName latin
+ PolyglossiaOpts "variant=classic"
+ XindyName latin
+ ActiveChars ^=
+ Encoding iso8859-15
+ FontEncoding T1|OT1
+ LangCode la-x-classic
+End
+
+Language latin-ecclesiastic
+ GuiName "Latin (Eccesiastic)"
+ BabelName ecclesiasticlatin
+ BabelOptFormat modifier
+ PolyglossiaName latin
+ PolyglossiaOpts "variant=ecclesiastic"
+ XindyName latin
+ ActiveChars ^=
+ Encoding iso8859-15
+ FontEncoding T1|OT1
+ LangCode la-x-ecclesia
+End
+
+Language latin-medieval
+ GuiName "Latin (Medieval)"
+ BabelName medievallatin
+ BabelOptFormat modifier
+ PolyglossiaName latin
+ PolyglossiaOpts "variant=medieval"
+ XindyName latin
+ ActiveChars ^=
+ Encoding iso8859-15
+ FontEncoding T1|OT1
+ LangCode la-x-medieval
End
-# TODO: support Latin varieties (classic, medieval, eccelesiastic)
# latvian must be loaded locally with babel options,
# not globally via class options
@@ -1213,12 +1230,10 @@ Language macedonian
Provides textcyrillic
End
-# not supported by babel
Language malayalam
GuiName "Malayalam"
-# TODO:
-# BabelName malayalam
-# BabelProvide 1
+ BabelName malayalam
+ BabelProvide 1
PolyglossiaName malayalam
Encoding utf8
QuoteStyle english
@@ -1226,12 +1241,10 @@ Language malayalam
LangCode ml_IN
End
-# not supported by babel
Language marathi
GuiName "Marathi"
-# TODO:
-# BabelName marathi
-# BabelProvide 1
+ BabelName marathi
+ BabelProvide 1
PolyglossiaName marathi
Encoding utf8
DateFormats "dd MMMM yyyy|d MMM yyyy|dd-MM-yyyy"
@@ -1265,23 +1278,18 @@ Language newzealand
LangCode en_NZ
End
-# TODO:
-# Language nko
-# GuiName "N’Ko"
-# BabelName nko
-# BabelProvide 1
-# PolyglossiaName nko
-# QuoteStyle swiss
-# Encoding utf8
+Language nko
+ GuiName "N’Ko"
+ BabelName nko
+ BabelProvide 1
+ PolyglossiaName nko
+ QuoteStyle swiss
+ Encoding utf8
# FIXME: DateFormats "d MMMM، yyyy|dd/MM/yyyy|d/M/yyyy"
-# gloss-nko.ldf says:
-# In n'ko, this is an example of date :
-# ߂߀߁߃ ߞߏ߲ߞߏߜߍ ߕߟߋ߬ ߁߈ (RTL)
-# ( 18 February 2013 )
-# The word "ߕߟߋ߬" is mandatory between month name and day number.
-# RTL true
-# LangCode nqo
-# End
+# see gloss-nko.ldf
+ RTL true
+ LangCode nqo
+End
Language norsk
GuiName "Norwegian (Bokmaal)"
@@ -1311,11 +1319,9 @@ Language nynorsk
LangCode nn_NO
End
-# not supported by babel
Language occitan
GuiName "Occitan"
-# TODO
-# BabelName occitan
+ BabelName occitan
PolyglossiaName occitan
QuoteStyle french
Encoding utf8
@@ -1323,20 +1329,29 @@ Language occitan
LangCode oc_FR
End
-# TODO: odia (polyglossia)
+Language odia
+ GuiName "Odia"
+ BabelName odia
+ BabelProvide 1
+ PolyglossiaName odia
+ Encoding utf8
+ DateFormats "dd MMMM yyyy|d MMM yyyy|dd-MM-yyyy"
+ LangCode or
+End
# Russian orthography from the Petrine orthographic reforms of
# 1708 to the 1917 orthographic reform
Language oldrussian
GuiName "Russian (Petrine orthography)"
-# TODO
-# BabelName russian
-# BabelOpts ancient
-# BabelOptFormat modifier
+ BabelName russian
+ BabelOpts ancient
+ BabelOptFormat modifier
PolyglossiaName russian
PolyglossiaOpts "spelling=old"
XindyName russian
QuoteStyle russian
+ Encoding koi8-r
+ FontEncoding T2A
LangCode ru_petr1708
End
@@ -1380,7 +1395,15 @@ Language portuguese
LangCode pt_PT
End
-# TODO: punjabi (polyglossia)
+Language punjabi
+ GuiName "Punjabi"
+ BabelName punjabi
+ BabelProvide 1
+ PolyglossiaName punjabi
+ Encoding utf8
+ DateFormats "dd MMMM yyyy|dd MMMM yyyy|dd-MM-yyyy"
+ LangCode pa
+End
Language romanian
GuiName "Romanian"
@@ -1434,13 +1457,11 @@ Language samin
LangCode se_NO
End
-# not supported by babel
Language sanskrit
GuiName "Sanskrit"
PolyglossiaName sanskrit
-# TODO:
-# BabelName sanskrit
-# BabelProvide 1
+ BabelName sanskrit
+ BabelProvide 1
Encoding utf8
DateFormats "dd MMMM yyyy|d MMM yyyy|dd-MM-yyyy"
LangCode sa_IN
@@ -1568,12 +1589,10 @@ Language swedish
LangCode sv_SE
End
-# not supported by babel
Language syriac
GuiName "Syriac"
-# TODO:
-# BabelName syriac
-# BabelProvide 1
+ BabelName syriac
+ BabelProvide 1
PolyglossiaName syriac
Encoding utf8
RTL true
@@ -1581,24 +1600,20 @@ Language syriac
LangCode syr_SY
End
-# not supported by babel
Language tamil
GuiName "Tamil"
-# TODO:
-# BabelName tamil
-# BabelProvide 1
+ BabelName tamil
+ BabelProvide 1
PolyglossiaName tamil
Encoding utf8
DateFormats "dd MMMM yyyy|d MMM yyyy|dd-MM-yyyy"
LangCode ta_IN
End
-# not supported by babel
Language telugu
GuiName "Telugu"
-# TODO:
-# BabelName telugu
-# BabelProvide 1
+ BabelName telugu
+ BabelProvide 1
PolyglossiaName telugu
Encoding utf8
DateFormats "dd MMMM yyyy|d MMM yyyy|dd-MM-yyyy"
@@ -1649,13 +1664,11 @@ Language thai
EndPostBabelPreamble
End
-# not supported by babel
#FIXME DateFormats
Language tibetan
GuiName "Tibetan"
-# TODO:
-# BabelName tibetan
-# BabelProvide 1
+ BabelName tibetan
+ BabelProvide 1
PolyglossiaName tibetan
Encoding utf8
LangCode bo_CN
@@ -1715,12 +1728,10 @@ Language uppersorbian
LangCode hsb_DE
End
-# not supported by babel
Language urdu
GuiName "Urdu"
-# TODO:
-# BabelName urdu
-# BabelProvide 1
+ BabelName urdu
+ BabelProvide 1
PolyglossiaName urdu
Encoding utf8
DateFormats "d MMMM, yyyy|d MMM yyyy|dd/MM/yyyy"
@@ -1728,7 +1739,18 @@ Language urdu
LangCode ur_PK
End
-# TODO: uyghur (polyglossia)
+Language uyghur
+ GuiName "Uyghur"
+ BabelName uyghur
+ BabelProvide 1
+ PolyglossiaName uyghur
+ Encoding utf8
+ FontEncoding LAE,LFE
+ DateFormats "d MMMM yyyy-يىلى|d MMM yyyy-يىلى|yyyy/M/d"
+ RTL true
+ LangCode ug
+ QuoteStyle english
+End
Language vietnamese
GuiName "Vietnamese"
diff --git a/lib/lyx2lyx/lyx2lyx_tools.py b/lib/lyx2lyx/lyx2lyx_tools.py
index 9b29b76747..2496ea7f99 100644
--- a/lib/lyx2lyx/lyx2lyx_tools.py
+++ b/lib/lyx2lyx/lyx2lyx_tools.py
@@ -666,7 +666,7 @@ singlepar_insets = [
# print(singlepar_insets)
-def revert_language(document, lyxname, babelname="", polyglossianame=""):
+def revert_language(document, lyxname, babelname="", polyglossianame="",
polyglossiaopts="", babelprovide=False):
"Revert native language support"
# Does the document use polyglossia?
@@ -791,15 +791,18 @@ def revert_language(document, lyxname, babelname="",
polyglossianame=""):
i -= 1
continue
+
+ if polyglossiaopts != "":
+ polyglossiaopts = "[" + polyglossiaopts + "]"
if singlepar:
if with_polyglossia:
- begin_cmd = "\\text%s{" % texname
+ begin_cmd = "\\text%s%s{" % (texname, polyglossiaopts)
elif with_babel:
begin_cmd = "\\foreignlanguage{%s}{" % texname
end_cmd = "}"
else:
if with_polyglossia:
- begin_cmd = "\\begin{%s}" % texname
+ begin_cmd = "\\begin%s{%s}" % (polyglossiaopts, texname)
end_cmd = "\\end{%s}" % texname
elif with_babel:
begin_cmd = "\\begin{otherlanguage}{%s}" % texname
@@ -822,6 +825,16 @@ def revert_language(document, lyxname, babelname="",
polyglossianame=""):
if with_babel:
# add as global option
insert_document_option(document, babelname)
+ # babelprovide
+ if babelprovide:
+ babelprovide = "\\babelprovide[import"
+ if primary:
+ babelprovide += ", main"
+ babelprovide += "]{%s}" % babelname
+ add_to_preamble(
+ document,
+ ["\\AddToHook{package/babel/after}{%s}" % babelprovide],
+ )
# Since user options are appended to the document options,
# Babel will treat `babelname` as primary language.
if not primary:
diff --git a/lib/lyx2lyx/lyx_2_5.py b/lib/lyx2lyx/lyx_2_5.py
index 67d6519697..fa9641c5c9 100644
--- a/lib/lyx2lyx/lyx_2_5.py
+++ b/lib/lyx2lyx/lyx_2_5.py
@@ -23,19 +23,20 @@ import re
# convert_info_insets, get_ert, hex2ratio, insert_to_preamble,
# length_in_bp, lyx2verbatim,
# revert_flex_inset, revert_flex_inset, revert_font_attrs,
-# revert_language, str2bool
+# str2bool
from lyx2lyx_tools import (
add_to_preamble,
latex_length,
lyx2latex,
- put_cmd_in_ert
+ put_cmd_in_ert,
+ revert_language
)
# Uncomment only what you need to import, please (parser_tools):
# check_token, count_pars_in_inset, del_complete_lines,
# del_value, find_complete_lines, find_end_of,
# find_re, find_token_backwards, find_token_exact,
-# find_tokens, get_bool_value,
+# find_tokens,
# get_containing_layout, get_option_value,
# is_in_inset, set_bool_value
from parser_tools import (
@@ -46,6 +47,7 @@ from parser_tools import (
find_substring,
find_token,
get_containing_inset,
+ get_bool_value,
get_quoted_value,
get_value
)
@@ -872,6 +874,142 @@ def revert_langopts(document):
# remove header
del document.header[i]
+
+def revert_new_polyglossia_languages(document):
+ """Emulate support for Simplified Chinese, Traditional Chinese, Japanese,
Sorani Kurdish,
+ Classic, Ecclesiastic and Medieval Latin, N'ko, Odia, Punjabi, and
Uyghur with polyglossia."""
+
+ # Does the document use polyglossia?
+ use_polyglossia = False
+ if get_bool_value(document.header, "\\use_non_tex_fonts"):
+ i = find_token(document.header, "\\language_package")
+ if i == -1:
+ document.warning("Malformed document! Missing \\language_package")
+ else:
+ pack = get_value(document.header, "\\language_package", i)
+ if pack in ("default", "auto"):
+ use_polyglossia = True
+
+ if not use_polyglossia:
+ return
+
+ # lyxname: (babelname, polyglossianame, polyglossiaopts)
+ new_languages = {
+ "chinese-simplified": ("", "chinese", "variant=simplified"),
+ "chinese-traditional": ("", "chinese", "variant=traditional"),
+ "japanese": ("", "japanese", ""),
+ "sorani": ("", "kurdish", "variant=sorani"),
+ "latin-classic": ("", "latin", "variant=classic"),
+ "latin-ecclesiastic": ("", "latin", "variant=ecclesiastic"),
+ "latin-medieval": ("", "latin", "variant=medieval"),
+ "nko": ("", "nko", ""),
+ "odia": ("", "odia", ""),
+ "punjabi": ("", "punjabi", ""),
+ "uyghur": ("", "uyghur", ""),
+ }
+ if document.language in new_languages:
+ used_languages = {document.language}
+ else:
+ used_languages = set()
+ i = 0
+ while True:
+ i = find_token(document.body, "\\lang", i + 1)
+ if i == -1:
+ break
+ val = get_value(document.body, "\\lang", i)
+ if val in new_languages:
+ used_languages.add(val)
+
+ for lang in used_languages:
+ revert_language(document, lang, *new_languages[lang])
+
+
+def revert_new_babel_languages(document):
+ """Emulate support for Amharic, Armenian, Asturian, Bengali, Church
Slavonic,
+ Coptic, Divehi, Kannada, Kazakh, Khmer, Kurdish (Sorani), Lao, Latin
(Classic),
+ Latin (Ecclesiastic), Latin (Medieval), Malayalam, Marathi, N'ko, Occitan,
Odia,
+ Punjabi, Russian (Petrine orthography), Sanskrit, Syriac, Tamil, Telugu,
Tibetan,
+ Urdu, and Uyghur with babel."""
+
+ # Does the document use polyglossia?
+ use_polyglossia = False
+ if get_bool_value(document.header, "\\use_non_tex_fonts"):
+ i = find_token(document.header, "\\language_package")
+ if i == -1:
+ document.warning("Malformed document! Missing \\language_package")
+ else:
+ pack = get_value(document.header, "\\language_package", i)
+ if pack in ("default", "auto"):
+ use_polyglossia = True
+
+ if use_polyglossia:
+ return
+
+ # lyxname: (babelname, polyglossianame, polyglossiaopts,
babelprovide)
+ new_languages = {
+ "amharic": ("amharic", "", "", True),
+ "armenian": ("armenian", "", "", True),
+ "asturian": ("asturian", "", "", True),
+ "bengali": ("bengali", "", "", True),
+ "churchslavonic": ("churchslavic", "", "", True),
+ "coptic": ("coptic", "", "", True),
+ "divehi": ("divehi", "", "", True),
+ "hindi": ("hindi", "", "", True),
+ "kannada": ("kannada", "", "", True),
+ "kazakh": ("kazakh", "", "", True),
+ "khmer": ("khmer", "", "", True),
+ "lao": ("lao", "", "", True),
+ "latin-classic": ("classiclatin", "", "", False),
+ "latin-ecclesiastic": ("ecclesiasticlatin", "", "", False),
+ "latin-medieval": ("medievallatin", "", "", False),
+ "malayalam": ("malayalam", "", "", True),
+ "marathi": ("marathi", "", "", True),
+ "nko": ("nko", "", "", True),
+ "occitan": ("occitan", "", "", False),
+ "odia": ("odia", "", "", True),
+ "punjabi": ("punjabi", "", "", True),
+ "sanskrit": ("sanskrit", "", "", True),
+ "sorani": ("sorani", "", "", True),
+ "syriac": ("syriac", "", "", True),
+ "tamil": ("tamil", "", "", True),
+ "telugu": ("telugu", "", "", True),
+ "tibetan": ("tibetan", "", "", True),
+ "urdu": ("urdu", "", "", True),
+ "uyghur": ("uyghur", "", "", True),
+ }
+ if document.language in new_languages:
+ used_languages = {document.language}
+ else:
+ used_languages = set()
+ i = 0
+ while True:
+ i = find_token(document.body, "\\lang", i + 1)
+ if i == -1:
+ break
+ val = get_value(document.body, "\\lang", i)
+ if val in new_languages:
+ used_languages.add(val)
+
+ for lang in used_languages:
+ revert_language(document, lang, *new_languages[lang])
+
+ # revert oldrussian to russian
+ have_oldrussian = False
+ if document.language == "oldrussian":
+ document.language = "russian"
+ have_oldrussian = True
+
+ i = 0
+ while True:
+ i = find_token(document.body, "\\lang oldrussian", i + 1)
+ if i == -1:
+ break
+ have_oldrussian = True
+ document.body[i] = "\\lang russian"
+
+ if have_oldrussian:
+ add_to_preamble(document,
["\\AddToHook{package/babel/after}{\\languageattribute{russian}{ancient}}"])
+
##
# Conversion hub
#
@@ -886,11 +1024,13 @@ convert = [
[626, []],
[627, [convert_nomencl, convert_index_sc]],
[628, []],
- [629, []]
+ [629, []],
+ [630, []]
]
revert = [
+ [629, [revert_new_polyglossia_languages, revert_new_babel_languages]],
[628, [revert_langopts]],
[627, [revert_nomentbl]],
[626, [revert_nomencl, revert_index_sc]],
diff --git a/src/tex2lyx/Preamble.cpp b/src/tex2lyx/Preamble.cpp
index 05a80ef025..5f0043e042 100644
--- a/src/tex2lyx/Preamble.cpp
+++ b/src/tex2lyx/Preamble.cpp
@@ -50,19 +50,21 @@ namespace {
* please keep this in sync with known_coded_languages line by line!
*/
const char * const known_languages[] = {"acadian", "afrikaans", "albanian",
-"american", "ancientgreek", "arabic", "arabtex", "australian", "austrian",
"azerbaijani", "bahasa", "bahasai",
-"bahasam", "basque", "belarusian", "bosnian", "brazil", "brazilian", "breton",
"british",
-"bulgarian", "canadian", "canadien", "catalan", "croatian", "czech", "danish",
-"dutch", "english", "esperanto", "estonian", "farsi", "finnish", "francais",
-"french", "frenchb", "frenchle", "frenchpro", "friulan", "galician", "german",
"germanb",
-"georgian", "greek", "hebrew", "hungarian", "icelandic", "indon", "indonesian",
-"interlingua", "irish", "italian", "japanese", "kazakh", "kurmanji", "latin",
-"latvian", "lithuanian", "lowersorbian", "lsorbian", "macedonian", "magyar",
"malay", "meyalu",
-"mexican", "mongolian", "naustrian", "newzealand", "ngerman", "ngermanb",
"norsk", "nswissgerman",
-"nynorsk", "piedmontese", "polutonikogreek", "polish", "portuges",
"portuguese",
-"romanian", "romansh", "russian", "russianb", "samin", "scottish", "serbian",
"serbian-latin",
-"slovak", "slovene", "spanish", "swedish", "swissgerman", "thai", "turkish",
"turkmen",
-"ukraineb", "ukrainian", "uppersorbian", "UKenglish", "USenglish", "usorbian",
+"american", "amharic", "ancientgreek", "arabic", "arabtex", "armenian",
"asturian",
+"australian", "austrian", "azerbaijani", "bahasa", "bahasai", "bahasam",
"basque",
+"belarusian", "bengali", "bosnian", "brazil", "brazilian", "breton", "british",
+"bulgarian", "canadian", "canadien", "catalan", "churchslavic",
"classiclatin", "coptic",
+"croatian", "czech", "danish", "divehi", "dutch", "ecclesiasticlatin",
"english", "esperanto",
+"estonian", "farsi", "finnish", "francais", "french", "frenchb", "frenchle",
"frenchpro", "friulan",
+"galician", "german", "germanb", "georgian", "greek", "hebrew", "hindi",
"hungarian", "icelandic",
+"indon", "indonesian", "interlingua", "irish", "italian", "japanese",
"kannada", "kazakh", "khmer",
+"kurmanji", "lao", "latin", "latvian", "lithuanian", "lowersorbian",
"lsorbian", "macedonian", "magyar",
+"malay", "malayalam", "marathi", "medievallatin", "meyalu", "mexican",
"mongolian", "naustrian", "newzealand",
+"ngerman", "ngermanb", "nko", "norsk", "nswissgerman", "nynorsk", "occitan",
"odia", "piedmontese",
+"polutonikogreek", "polish", "portuges", "portuguese", "romanian", "romansh",
"russian", "russianb",
+"samin", "scottish", "serbian", "serbian-latin", "punjabi", "sanskrit",
"slovak", "slovene", "sorani",
+"spanish", "swedish", "swissgerman", "syriac", "tamil", "telugu", "thai",
"tibetan", "turkish", "turkmen",
+"ukraineb", "ukrainian", "uppersorbian", "UKenglish", "urdu", "USenglish",
"usorbian", "uyghur",
"vietnam", "welsh",
0};
@@ -71,19 +73,21 @@ const char * const known_languages[] = {"acadian",
"afrikaans", "albanian",
* please keep this in sync with known_languages line by line!
*/
const char * const known_coded_languages[] = {"french", "afrikaans",
"albanian",
-"american", "ancientgreek", "arabic_arabi", "arabic_arabtex", "australian",
"austrian", "azerbaijani", "bahasa", "bahasa",
-"bahasam", "basque", "belarusian", "bosnian", "brazilian", "brazilian",
"breton", "british",
-"bulgarian", "canadian", "canadien", "catalan", "croatian", "czech", "danish",
-"dutch", "english", "esperanto", "estonian", "farsi", "finnish", "french",
-"french", "french", "french", "french", "friulan", "galician", "german",
"german",
-"georgian", "greek", "hebrew", "magyar", "icelandic", "bahasa", "bahasa",
-"interlingua", "irish", "italian", "japanese", "kazakh", "kurmanji", "latin",
-"latvian", "lithuanian", "lowersorbian", "lowersorbian", "macedonian",
"magyar", "bahasam", "bahasam",
-"spanish-mexico", "mongolian", "naustrian", "newzealand", "ngerman",
"ngerman", "norsk", "german-ch",
-"nynorsk", "piedmontese", "polutonikogreek", "polish", "portuguese",
"portuguese",
-"romanian", "romansh", "russian", "russian", "samin", "scottish", "serbian",
"serbian-latin",
-"slovak", "slovene", "spanish", "swedish", "german-ch-old", "thai", "turkish",
"turkmen",
-"ukrainian", "ukrainian", "uppersorbian", "english", "english", "uppersorbian",
+"american", "amharic", "ancientgreek", "arabic_arabi", "arabic_arabtex",
"armenian", "asturian",
+"australian", "austrian", "azerbaijani", "bahasa", "bahasa", "bahasam",
"basque",
+"belarusian", "bengali", "bosnian", "brazilian", "brazilian", "breton",
"british",
+"bulgarian", "canadian", "canadien", "catalan", "churchslavonic",
"latin-classic", "coptic",
+"croatian", "czech", "danish", "divehi", "dutch", "latin-ecclesiastic",
"english", "esperanto",
+"estonian", "farsi", "finnish", "french", "french", "french", "french",
"french", "friulan",
+"galician", "german", "german", "georgian", "greek", "hebrew", "hindi",
"magyar", "icelandic",
+"bahasa", "bahasa", "interlingua", "irish", "italian", "japanese", "kannada",
"kazakh", "khmer",
+"kurmanji", "lao", "latin", "latvian", "lithuanian", "lowersorbian",
"lowersorbian", "macedonian", "magyar",
+"bahasam", "malayalam", "marathi", "latin-medieval", "bahasam",
"spanish-mexico", "mongolian", "naustrian", "newzealand",
+"ngerman", "ngerman", "nko", "norsk", "german-ch", "nynorsk", "occitan",
"odia", "piedmontese",
+"polutonikogreek", "polish", "portuguese", "portuguese", "romanian",
"romansh", "russian", "russian",
+"samin", "scottish", "serbian", "serbian-latin", "punjabi", "sanskrit",
"slovak", "slovene", "sorani",
+"spanish", "swedish", "german-ch-old", "syriac", "tamil", "telugu", "thai",
"tibetan", "turkish", "turkmen",
+"ukrainian", "ukrainian", "uppersorbian", "english", "urdu", "english",
"uppersorbian", "uyghur",
"vietnamese", "welsh",
0};
@@ -326,17 +330,16 @@ string process_keyval_opt(vector<string> & options,
string const & name)
const char * const Preamble::polyglossia_languages[] = {
"albanian", "american", "amharic", "ancient", "arabic", "armenian",
"asturian", "australian",
"bahasai", "bahasam", "basque", "bengali", "brazil", "brazilian", "breton",
"british", "bulgarian",
-"catalan", "churchslavonic", "coptic", "croatian", "czech", "danish",
"divehi", "dutch",
+"catalan", "chinese", "chinese", "churchslavonic", "coptic", "croatian",
"czech", "danish", "divehi", "dutch",
"english", "esperanto", "estonian", "farsi", "finnish", "french", "friulan",
"galician", "greek", "monotonic", "hebrew", "hindi",
-"icelandic", "interlingua", "irish", "italian", "kannada", "khmer", "korean",
-"lao", "latin", "latvian", "lithuanian", "lsorbian", "magyar", "malayalam",
"marathi",
-"austrian", "newzealand", "german", "norsk", "nynorsk", "occitan",
"oldrussian",
-"piedmontese", "polish", "polytonic", "portuges", "romanian", "romansh",
"russian",
+"icelandic", "interlingua", "irish", "italian", "japanese", "kannada",
"khmer", "korean",
+"kurdish", "kurmanji", "lao", "latin", "latvian", "lithuanian", "lsorbian",
"magyar", "malayalam", "marathi",
+"austrian", "newzealand", "german", "nko", "norsk", "nynorsk", "occitan",
"odia", "oldrussian",
+"piedmontese", "polish", "polytonic", "portuguese", "punjabi", "romanian",
"romansh", "russian",
"samin", "sanskrit", "scottish", "serbian", "slovak", "slovenian", "spanish",
"swedish", "syriac",
"tamil", "telugu", "thai", "tibetan", "turkish", "turkmen",
-"ukrainian", "urdu", "usorbian", "vietnamese", "welsh", 0};
-// not yet supported by LyX: "korean", "nko"
+"ukrainian", "urdu", "usorbian", "uyghur", "vietnamese", "welsh", 0};
/**
* the same as polyglossia_languages with .lyx names
@@ -345,17 +348,17 @@ const char * const Preamble::polyglossia_languages[] = {
const char * const Preamble::coded_polyglossia_languages[] = {
"albanian", "american", "amharic", "ancientgreek", "arabic_arabi", "armenian",
"asturian", "australian",
"bahasa", "bahasam", "basque", "bengali", "brazilian", "brazilian", "breton",
"british", "bulgarian",
-"catalan", "churchslavonic", "coptic", "croatian", "czech", "danish",
"divehi", "dutch",
+"catalan", "chinese-simplified", "chinese-traditional", "churchslavonic",
"coptic", "croatian", "czech",
+"danish", "divehi", "dutch",
"english", "esperanto", "estonian", "farsi", "finnish", "french", "friulan",
"galician", "greek", "greek", "hebrew", "hindi",
-"icelandic", "interlingua", "irish", "italian", "kannada", "khmer", "korean",
-"lao", "latin", "latvian", "lithuanian", "lowersorbian", "magyar",
"malayalam", "marathi",
-"naustrian","newzealand", "ngerman", "norsk", "nynorsk", "occitan",
"oldrussian",
-"piedmontese", "polish", "polutonikogreek", "portuges", "romanian", "romansh",
"russian",
+"icelandic", "interlingua", "irish", "italian", "japanese", "kannada",
"khmer", "korean",
+"sorani", "kurmanji", "lao", "latin", "latvian", "lithuanian", "lowersorbian",
"magyar", "malayalam", "marathi",
+"naustrian","newzealand", "ngerman", "nko", "norsk", "nynorsk", "occitan",
"odia", "oldrussian",
+"piedmontese", "polish", "polutonikogreek", "portuges", "punjabi", "romanian",
"romansh", "russian",
"samin", "sanskrit", "scottish", "serbian", "slovak", "slovene", "spanish",
"swedish", "syriac",
"tamil", "telugu", "thai", "tibetan", "turkish", "turkmen",
-"ukrainian", "urdu", "uppersorbian", "vietnamese", "welsh", 0};
-// not yet supported by LyX: "korean-polyglossia", "nko"
+"ukrainian", "urdu", "uppersorbian", "uyghur", "vietnamese", "welsh", 0};
bool Preamble::usePolyglossia() const
diff --git a/src/version.h b/src/version.h
index 67ff1b79c6..1e18ff3816 100644
--- a/src/version.h
+++ b/src/version.h
@@ -32,8 +32,8 @@ extern char const * const lyx_version_info;
// Do not remove the comment below, so we get merge conflict in
// independent branches. Instead add your own.
-#define LYX_FORMAT_LYX 629 // spitz: language options
-#define LYX_FORMAT_TEX2LYX 629
+#define LYX_FORMAT_LYX 630 // spitz: language updates
+#define LYX_FORMAT_TEX2LYX 630
#if LYX_FORMAT_TEX2LYX != LYX_FORMAT_LYX
#ifndef _MSC_VER
--
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs