mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-22 21:21:32 +00:00
babel handling: revert r26857 and r26858 for the reasons I posted o the list
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26870 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
551f2c0c22
commit
4331cbf30f
@ -942,49 +942,6 @@ void BufferParams::validate(LaTeXFeatures & features) const
|
|||||||
features.require("japanese");
|
features.require("japanese");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Find out if we need special treatment for babel.
|
|
||||||
static bool needsSpecialBabelCall(LaTeXFeatures const & features)
|
|
||||||
{
|
|
||||||
// FIXME: don't hardcode this!!
|
|
||||||
// If Vietnamese is used, babel must directly be loaded with the
|
|
||||||
// language options, see
|
|
||||||
// http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg129417.html
|
|
||||||
//
|
|
||||||
// viet = string::npos when not found
|
|
||||||
// the same is for all other languages that are not directly supported by
|
|
||||||
// babel, but where LaTeX-packages add babel support.
|
|
||||||
// this is currently the case for Latvian, Lithuanian, and Mongolian
|
|
||||||
//
|
|
||||||
// If Japanese is used, babel must directly be loaded with the
|
|
||||||
// language options, see
|
|
||||||
// http://bugzilla.lyx.org/show_bug.cgi?id=4597#c4
|
|
||||||
return !lyxrc.language_global_options
|
|
||||||
|| features.hasLanguage("vietnam")
|
|
||||||
|| features.hasLanguage("latvian")
|
|
||||||
|| features.hasLanguage("japanese")
|
|
||||||
|| features.hasLanguage("lithuanian")
|
|
||||||
|| features.hasLanguage("mongolian");
|
|
||||||
}
|
|
||||||
|
|
||||||
/// set up if and how babel is called
|
|
||||||
static docstring babelCall(LaTeXFeatures const & features,
|
|
||||||
string const & lang_opts)
|
|
||||||
{
|
|
||||||
string babel_call = lyxrc.language_package;
|
|
||||||
if (babel_call != "\\usepackage{babel}")
|
|
||||||
return from_utf8(babel_call);
|
|
||||||
// suppress the babel call when there is no babel language defined
|
|
||||||
// for the document language in the lib/languages file and if no
|
|
||||||
// other languages are used (lang_opts is then empty)
|
|
||||||
if (!features.hasLanguages())
|
|
||||||
return docstring();
|
|
||||||
|
|
||||||
if (needsSpecialBabelCall(features))
|
|
||||||
babel_call = "\\usepackage[" + lang_opts + "]{babel}";
|
|
||||||
|
|
||||||
return from_utf8(babel_call);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features,
|
bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features,
|
||||||
TexRow & texrow) const
|
TexRow & texrow) const
|
||||||
@ -1075,8 +1032,25 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features,
|
|||||||
language_options << ',';
|
language_options << ',';
|
||||||
language_options << language->babel();
|
language_options << language->babel();
|
||||||
}
|
}
|
||||||
if (!language_options.str().empty()
|
// if Vietnamese is used, babel must directly be loaded
|
||||||
&& !needsSpecialBabelCall(features))
|
// with language options, not in the class options, see
|
||||||
|
// http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg129417.html
|
||||||
|
size_t viet = language_options.str().find("vietnam");
|
||||||
|
// viet = string::npos when not found
|
||||||
|
// the same is for all other languages that are not directly supported by
|
||||||
|
// babel, but where LaTeX-packages add babel support.
|
||||||
|
// this is currently the case for Latvian, Lithuanian, and Mongolian
|
||||||
|
size_t latvian = language_options.str().find("latvian");
|
||||||
|
size_t lithu = language_options.str().find("lithuanian");
|
||||||
|
size_t mongo = language_options.str().find("mongolian");
|
||||||
|
// if Japanese is used, babel must directly be loaded
|
||||||
|
// with language options, not in the class options, see
|
||||||
|
// http://bugzilla.lyx.org/show_bug.cgi?id=4597#c4
|
||||||
|
size_t japan = language_options.str().find("japanese");
|
||||||
|
if (lyxrc.language_global_options && !language_options.str().empty()
|
||||||
|
&& viet == string::npos && japan == string::npos
|
||||||
|
&& latvian == string::npos && lithu == string::npos
|
||||||
|
&& mongo == string::npos)
|
||||||
clsoptions << language_options.str() << ',';
|
clsoptions << language_options.str() << ',';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1319,7 +1293,7 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features,
|
|||||||
|| features.isRequired("vietnamese")
|
|| features.isRequired("vietnamese")
|
||||||
|| features.isRequired("japanese") ) ) {
|
|| features.isRequired("japanese") ) ) {
|
||||||
// FIXME UNICODE
|
// FIXME UNICODE
|
||||||
lyxpreamble += babelCall(features, language_options.str()) + '\n';
|
lyxpreamble += from_utf8(babelCall(language_options.str())) + '\n';
|
||||||
lyxpreamble += from_utf8(features.getBabelOptions()) + '\n';
|
lyxpreamble += from_utf8(features.getBabelOptions()) + '\n';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1433,7 +1407,7 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features,
|
|||||||
&& !features.isRequired("vietnamese")
|
&& !features.isRequired("vietnamese")
|
||||||
&& !features.isRequired("japanese")) {
|
&& !features.isRequired("japanese")) {
|
||||||
// FIXME UNICODE
|
// FIXME UNICODE
|
||||||
lyxpreamble += babelCall(features, language_options.str()) + '\n';
|
lyxpreamble += from_utf8(babelCall(language_options.str())) + '\n';
|
||||||
lyxpreamble += from_utf8(features.getBabelOptions()) + '\n';
|
lyxpreamble += from_utf8(features.getBabelOptions()) + '\n';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1895,6 +1869,39 @@ string const BufferParams::dvips_options() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
string BufferParams::babelCall(string const & lang_opts) const
|
||||||
|
{
|
||||||
|
string lang_pack = lyxrc.language_package;
|
||||||
|
if (lang_pack != "\\usepackage{babel}")
|
||||||
|
return lang_pack;
|
||||||
|
// suppress the babel call when there is no babel language defined
|
||||||
|
// for the document language in the lib/languages file and if no
|
||||||
|
// other languages are used (lang_opts is then empty)
|
||||||
|
if (lang_opts.empty())
|
||||||
|
return string();
|
||||||
|
// If Vietnamese is used, babel must directly be loaded with the
|
||||||
|
// language options, see
|
||||||
|
// http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg129417.html
|
||||||
|
size_t viet = lang_opts.find("vietnam");
|
||||||
|
// viet = string::npos when not found
|
||||||
|
// the same is for all other languages that are not directly supported by
|
||||||
|
// babel, but where LaTeX-packages add babel support.
|
||||||
|
// this is currently the case for Latvian, Lithuanian, and Mongolian
|
||||||
|
size_t latvian = lang_opts.find("latvian");
|
||||||
|
size_t lithu = lang_opts.find("lithuanian");
|
||||||
|
size_t mongo = lang_opts.find("mongolian");
|
||||||
|
// If Japanese is used, babel must directly be loaded with the
|
||||||
|
// language options, see
|
||||||
|
// http://bugzilla.lyx.org/show_bug.cgi?id=4597#c4
|
||||||
|
size_t japan = lang_opts.find("japanese");
|
||||||
|
if (!lyxrc.language_global_options || viet != string::npos
|
||||||
|
|| japan != string::npos || latvian != string::npos
|
||||||
|
|| lithu != string::npos || mongo != string::npos)
|
||||||
|
return "\\usepackage[" + lang_opts + "]{babel}";
|
||||||
|
return lang_pack;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void BufferParams::writeEncodingPreamble(odocstream & os,
|
void BufferParams::writeEncodingPreamble(odocstream & os,
|
||||||
LaTeXFeatures & features, TexRow & texrow) const
|
LaTeXFeatures & features, TexRow & texrow) const
|
||||||
{
|
{
|
||||||
|
@ -306,6 +306,8 @@ public:
|
|||||||
};
|
};
|
||||||
///
|
///
|
||||||
std::string paperSizeName(PapersizePurpose purpose) const;
|
std::string paperSizeName(PapersizePurpose purpose) const;
|
||||||
|
/// set up if and how babel is called
|
||||||
|
std::string babelCall(std::string const & lang_opts) const;
|
||||||
/// handle inputenc etc.
|
/// handle inputenc etc.
|
||||||
void writeEncodingPreamble(odocstream & os, LaTeXFeatures & features,
|
void writeEncodingPreamble(odocstream & os, LaTeXFeatures & features,
|
||||||
TexRow & texrow) const;
|
TexRow & texrow) const;
|
||||||
|
@ -431,18 +431,6 @@ bool LaTeXFeatures::hasLanguages() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool LaTeXFeatures::hasLanguage(string const & lang) const
|
|
||||||
{
|
|
||||||
LanguageList::const_iterator cit = UsedLanguages_.begin();
|
|
||||||
LanguageList::const_iterator const end = UsedLanguages_.end();
|
|
||||||
for (; cit != end; ++cit) {
|
|
||||||
if ((*cit)->babel() == lang)
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
string LaTeXFeatures::getLanguages() const
|
string LaTeXFeatures::getLanguages() const
|
||||||
{
|
{
|
||||||
ostringstream languages;
|
ostringstream languages;
|
||||||
|
@ -89,8 +89,6 @@ public:
|
|||||||
void useLanguage(Language const *);
|
void useLanguage(Language const *);
|
||||||
///
|
///
|
||||||
bool hasLanguages() const;
|
bool hasLanguages() const;
|
||||||
/// \return true if the passed language name is used in the document.
|
|
||||||
bool hasLanguage(std::string const & lang) const;
|
|
||||||
///
|
///
|
||||||
std::string getLanguages() const;
|
std::string getLanguages() const;
|
||||||
///
|
///
|
||||||
|
Loading…
Reference in New Issue
Block a user