mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-30 13:20:58 +00:00
Fix usage of multiple varieties of the same polyglossia language.
1. We must always output all (diverging) options, including default options; if not, default options might get overwritten. 2. Do not output options in \setotherlanguage, since we might have multiple "other languages" varieties from the same language (such as naustrian, nswissgerman). And the options are output for the language switches anyway. Hence, LaTeXFeatures::getPolyglossiaLanguages() does not have to record varieties. This was not done correctly anyway, since the map allowed for one entry per language only.
This commit is contained in:
parent
065cd36922
commit
008c229041
@ -30,6 +30,9 @@
|
|||||||
#
|
#
|
||||||
# NOTES:
|
# NOTES:
|
||||||
#
|
#
|
||||||
|
# * If we provide Polyglossia languages with different options, the default
|
||||||
|
# options (such as "variant=american", "spelling=modern") should be
|
||||||
|
# explicitely spelled out (in order to provide mixing of such variants).
|
||||||
# * Omitted elements will be treated as empty (if string) or "false"
|
# * Omitted elements will be treated as empty (if string) or "false"
|
||||||
# (if boolean).
|
# (if boolean).
|
||||||
# * When HasGuiSupport is true, the language is candidate to appear in
|
# * When HasGuiSupport is true, the language is candidate to appear in
|
||||||
@ -138,7 +141,7 @@ Language ancientgreek
|
|||||||
\languageattribute{greek}{ancient}
|
\languageattribute{greek}{ancient}
|
||||||
EndPostBabelPreamble
|
EndPostBabelPreamble
|
||||||
PolyglossiaName greek
|
PolyglossiaName greek
|
||||||
PolyglossiaOpts variant=ancient
|
PolyglossiaOpts "variant=ancient"
|
||||||
QuoteStyle french
|
QuoteStyle french
|
||||||
Encoding iso8859-7
|
Encoding iso8859-7
|
||||||
InternalEncoding true
|
InternalEncoding true
|
||||||
@ -208,7 +211,7 @@ Language naustrian
|
|||||||
GuiName "German (Austria)"
|
GuiName "German (Austria)"
|
||||||
BabelName naustrian
|
BabelName naustrian
|
||||||
PolyglossiaName german
|
PolyglossiaName german
|
||||||
PolyglossiaOpts "variant=austrian,babelshorthands=true"
|
PolyglossiaOpts "variant=austrian,spelling=new,babelshorthands=true"
|
||||||
QuoteStyle german
|
QuoteStyle german
|
||||||
Encoding iso8859-15
|
Encoding iso8859-15
|
||||||
LangCode de_AT
|
LangCode de_AT
|
||||||
@ -307,6 +310,8 @@ Language canadian
|
|||||||
End
|
End
|
||||||
|
|
||||||
# not yet supported by polyglossia
|
# not yet supported by polyglossia
|
||||||
|
# Note: If polyglossia support gets implemented, french needs
|
||||||
|
# PolyglossiaOpts "variant=french"
|
||||||
Language canadien
|
Language canadien
|
||||||
GuiName "French (Canada)"
|
GuiName "French (Canada)"
|
||||||
BabelName canadien
|
BabelName canadien
|
||||||
@ -409,6 +414,7 @@ Language english
|
|||||||
HasGuiSupport true
|
HasGuiSupport true
|
||||||
BabelName english
|
BabelName english
|
||||||
PolyglossiaName english
|
PolyglossiaName english
|
||||||
|
PolyglossiaOpts "variant=american"
|
||||||
QuoteStyle english
|
QuoteStyle english
|
||||||
Encoding iso8859-15
|
Encoding iso8859-15
|
||||||
LangCode en_US
|
LangCode en_US
|
||||||
@ -507,7 +513,7 @@ Language german
|
|||||||
GuiName "German (old spelling)"
|
GuiName "German (old spelling)"
|
||||||
BabelName german
|
BabelName german
|
||||||
PolyglossiaName german
|
PolyglossiaName german
|
||||||
PolyglossiaOpts "spelling=old,babelshorthands=true"
|
PolyglossiaOpts "variant=german,spelling=old,babelshorthands=true"
|
||||||
QuoteStyle german
|
QuoteStyle german
|
||||||
Encoding iso8859-15
|
Encoding iso8859-15
|
||||||
LangCode de
|
LangCode de
|
||||||
@ -519,7 +525,7 @@ Language ngerman
|
|||||||
HasGuiSupport true
|
HasGuiSupport true
|
||||||
BabelName ngerman
|
BabelName ngerman
|
||||||
PolyglossiaName german
|
PolyglossiaName german
|
||||||
PolyglossiaOpts "babelshorthands=true"
|
PolyglossiaOpts "variant=german,spelling=new,babelshorthands=true"
|
||||||
QuoteStyle german
|
QuoteStyle german
|
||||||
Encoding iso8859-15
|
Encoding iso8859-15
|
||||||
LangCode de_DE
|
LangCode de_DE
|
||||||
@ -534,7 +540,7 @@ Language german-ch
|
|||||||
BabelName nswissgerman
|
BabelName nswissgerman
|
||||||
PolyglossiaName german
|
PolyglossiaName german
|
||||||
PolyglossiaOpts "babelshorthands=true"
|
PolyglossiaOpts "babelshorthands=true"
|
||||||
# PolyglossiaOpts "variant=swiss,babelshorthands=true"
|
# PolyglossiaOpts "variant=swiss,spelling=new,babelshorthands=true"
|
||||||
QuoteStyle danish
|
QuoteStyle danish
|
||||||
Encoding iso8859-15
|
Encoding iso8859-15
|
||||||
LangCode de_CH
|
LangCode de_CH
|
||||||
@ -559,6 +565,7 @@ Language greek
|
|||||||
HasGuiSupport true
|
HasGuiSupport true
|
||||||
BabelName greek
|
BabelName greek
|
||||||
PolyglossiaName greek
|
PolyglossiaName greek
|
||||||
|
PolyglossiaOpts "variant=monotonic"
|
||||||
QuoteStyle french
|
QuoteStyle french
|
||||||
Encoding iso8859-7
|
Encoding iso8859-7
|
||||||
InternalEncoding true
|
InternalEncoding true
|
||||||
@ -830,6 +837,8 @@ End
|
|||||||
# Currently not supported (file format change!)
|
# Currently not supported (file format change!)
|
||||||
# Russian orthography from the Petrine orthographic reforms of
|
# Russian orthography from the Petrine orthographic reforms of
|
||||||
# 1708 to the 1917 orthographic reform
|
# 1708 to the 1917 orthographic reform
|
||||||
|
# Note: If this is enabled, russian needs to get
|
||||||
|
# PolyglossiaOpts "spelling=modern"
|
||||||
# Language oldrussian
|
# Language oldrussian
|
||||||
# GuiName "Russian (Petrine orthography)"
|
# GuiName "Russian (Petrine orthography)"
|
||||||
# PolyglossiaName russian
|
# PolyglossiaName russian
|
||||||
@ -909,6 +918,7 @@ Language serbian
|
|||||||
HasGuiSupport true
|
HasGuiSupport true
|
||||||
BabelName serbianc
|
BabelName serbianc
|
||||||
PolyglossiaName serbian
|
PolyglossiaName serbian
|
||||||
|
PolyglossiaOpts "script=cyrillic"
|
||||||
QuoteStyle german
|
QuoteStyle german
|
||||||
Encoding utf8
|
Encoding utf8
|
||||||
FontEncoding T2A
|
FontEncoding T2A
|
||||||
@ -920,7 +930,7 @@ Language serbian-latin
|
|||||||
GuiName "Serbian (Latin)"
|
GuiName "Serbian (Latin)"
|
||||||
BabelName serbian
|
BabelName serbian
|
||||||
PolyglossiaName serbian
|
PolyglossiaName serbian
|
||||||
PolyglossiaOpts "script=Latin"
|
PolyglossiaOpts "script=latin"
|
||||||
QuoteStyle german
|
QuoteStyle german
|
||||||
Encoding iso8859-2
|
Encoding iso8859-2
|
||||||
LangCode sr_RS-Latin
|
LangCode sr_RS-Latin
|
||||||
|
@ -2173,14 +2173,17 @@ bool BufferParams::writeLaTeX(otexstream & os, LaTeXFeatures & features,
|
|||||||
lyxpreamble += "[" + from_ascii(language->polyglossiaOpts()) + "]";
|
lyxpreamble += "[" + from_ascii(language->polyglossiaOpts()) + "]";
|
||||||
lyxpreamble += "{" + from_ascii(language->polyglossia()) + "}\n";
|
lyxpreamble += "{" + from_ascii(language->polyglossia()) + "}\n";
|
||||||
// now setup the other languages
|
// now setup the other languages
|
||||||
std::map<std::string, std::string> const polylangs =
|
set<string> const polylangs =
|
||||||
features.getPolyglossiaLanguages();
|
features.getPolyglossiaLanguages();
|
||||||
for (std::map<std::string, std::string>::const_iterator mit = polylangs.begin();
|
for (set<string>::const_iterator mit = polylangs.begin();
|
||||||
mit != polylangs.end() ; ++mit) {
|
mit != polylangs.end() ; ++mit) {
|
||||||
|
// We do not output the options here; they are output in
|
||||||
|
// the language switch commands. This is safer if multiple
|
||||||
|
// varieties are used.
|
||||||
|
if (*mit == language->polyglossia())
|
||||||
|
continue;
|
||||||
lyxpreamble += "\\setotherlanguage";
|
lyxpreamble += "\\setotherlanguage";
|
||||||
if (!mit->second.empty())
|
lyxpreamble += "{" + from_ascii(*mit) + "}\n";
|
||||||
lyxpreamble += "[" + from_ascii(mit->second) + "]";
|
|
||||||
lyxpreamble += "{" + from_ascii(mit->first) + "}\n";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -740,15 +740,16 @@ string LaTeXFeatures::getBabelLanguages() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
std::map<std::string, std::string> LaTeXFeatures::getPolyglossiaLanguages() const
|
set<string> LaTeXFeatures::getPolyglossiaLanguages() const
|
||||||
{
|
{
|
||||||
std::map<std::string, std::string> languages;
|
set<string> languages;
|
||||||
|
|
||||||
LanguageList::const_iterator const begin = UsedLanguages_.begin();
|
LanguageList::const_iterator const begin = UsedLanguages_.begin();
|
||||||
for (LanguageList::const_iterator cit = begin;
|
for (LanguageList::const_iterator cit = begin;
|
||||||
cit != UsedLanguages_.end();
|
cit != UsedLanguages_.end();
|
||||||
++cit) {
|
++cit) {
|
||||||
languages[(*cit)->polyglossia()] = (*cit)->polyglossiaOpts();
|
// We do not need the variants here
|
||||||
|
languages.insert((*cit)->polyglossia());
|
||||||
}
|
}
|
||||||
return languages;
|
return languages;
|
||||||
}
|
}
|
||||||
|
@ -129,7 +129,7 @@ public:
|
|||||||
///
|
///
|
||||||
std::string getBabelLanguages() const;
|
std::string getBabelLanguages() const;
|
||||||
///
|
///
|
||||||
std::map<std::string, std::string> getPolyglossiaLanguages() const;
|
std::set<std::string> getPolyglossiaLanguages() const;
|
||||||
///
|
///
|
||||||
std::set<std::string> getEncodingSet(std::string const & doc_encoding) const;
|
std::set<std::string> getEncodingSet(std::string const & doc_encoding) const;
|
||||||
///
|
///
|
||||||
|
@ -69,6 +69,8 @@ What's new
|
|||||||
|
|
||||||
- Fix nested language handling with polyglossia (bug 9633).
|
- Fix nested language handling with polyglossia (bug 9633).
|
||||||
|
|
||||||
|
- Fix usage of multiple varieties of the same polyglossia language.
|
||||||
|
|
||||||
- Fix LaTeX output of fixed-width cells with decimal separator (bug 9568).
|
- Fix LaTeX output of fixed-width cells with decimal separator (bug 9568).
|
||||||
|
|
||||||
- Do not hardcode required packages for Note inset.
|
- Do not hardcode required packages for Note inset.
|
||||||
|
Loading…
Reference in New Issue
Block a user