mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-12 03:23:12 +00:00
Provide option to force a local language switch where a global is not allowed (fixes #8033)
This commit is contained in:
parent
9b589ba9d9
commit
a7f8fb8c5f
@ -1,5 +1,5 @@
|
|||||||
#LyX 2.1 created this file. For more info see http://www.lyx.org/
|
#LyX 2.1 created this file. For more info see http://www.lyx.org/
|
||||||
\lyxformat 446
|
\lyxformat 448
|
||||||
\begin_document
|
\begin_document
|
||||||
\begin_header
|
\begin_header
|
||||||
\textclass scrbook
|
\textclass scrbook
|
||||||
@ -140,6 +140,7 @@ End
|
|||||||
\author -712698321 "Jürgen Spitzmüller"
|
\author -712698321 "Jürgen Spitzmüller"
|
||||||
\author -195340706 "Georg Baum"
|
\author -195340706 "Georg Baum"
|
||||||
\author 5863208 "ab"
|
\author 5863208 "ab"
|
||||||
|
\author 155139281 "Jrgen Spitzmller"
|
||||||
\author 1082167584 "Kayvan Sylvan" kayvan@sylvan.com
|
\author 1082167584 "Kayvan Sylvan" kayvan@sylvan.com
|
||||||
\author 1414654397 "Richard Heck"
|
\author 1414654397 "Richard Heck"
|
||||||
\author 2090807402 "usti"
|
\author 2090807402 "usti"
|
||||||
@ -15960,6 +15961,81 @@ LabelFont
|
|||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
later if you want them to be different.
|
later if you want them to be different.
|
||||||
|
\change_inserted 155139281 1354130923
|
||||||
|
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\begin_layout Description
|
||||||
|
|
||||||
|
\change_inserted 155139281 1354130923
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
|
\change_inserted 155139281 1354130923
|
||||||
|
ForceLocalFontSwitch
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
[
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
|
\change_inserted 155139281 1354130923
|
||||||
|
|
||||||
|
\emph on
|
||||||
|
0
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
,
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
|
\change_inserted 155139281 1354130923
|
||||||
|
1
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
] When using babel, always use a local font switch (
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
|
\change_inserted 155139281 1354130923
|
||||||
|
|
||||||
|
\backslash
|
||||||
|
foreignlanguage
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
), never a global one (such as
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
|
\change_inserted 155139281 1354130923
|
||||||
|
|
||||||
|
\backslash
|
||||||
|
selectlanguage
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
).
|
||||||
|
\change_unchanged
|
||||||
|
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Description
|
\begin_layout Description
|
||||||
@ -16670,7 +16746,7 @@ string
|
|||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
] A string that is put at the beginning of the layout content.
|
] A string that is put at the beginning of the layout content.
|
||||||
\change_unchanged
|
\change_inserted 155139281 1354130509
|
||||||
|
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
|
@ -406,6 +406,7 @@ InsetLayout Argument
|
|||||||
Size Small
|
Size Small
|
||||||
EndFont
|
EndFont
|
||||||
MultiPar false
|
MultiPar false
|
||||||
|
ForceLocalFontSwitch 1
|
||||||
End
|
End
|
||||||
|
|
||||||
InsetLayout Info
|
InsetLayout Info
|
||||||
|
@ -41,7 +41,7 @@ InsetLayout::InsetLayout() :
|
|||||||
passthru_(false), parbreakisnewline_(false), freespacing_(false),
|
passthru_(false), parbreakisnewline_(false), freespacing_(false),
|
||||||
keepempty_(false), forceltr_(false),
|
keepempty_(false), forceltr_(false),
|
||||||
needprotect_(false), intoc_(false), spellcheck_(true),
|
needprotect_(false), intoc_(false), spellcheck_(true),
|
||||||
resetsfont_(true), display_(true)
|
resetsfont_(true), display_(true), forcelocalfontswitch_(false)
|
||||||
{
|
{
|
||||||
labelfont_.setColor(Color_error);
|
labelfont_.setColor(Color_error);
|
||||||
}
|
}
|
||||||
@ -87,6 +87,7 @@ bool InsetLayout::read(Lexer & lex, TextClass const & tclass)
|
|||||||
IL_DECORATION,
|
IL_DECORATION,
|
||||||
IL_DISPLAY,
|
IL_DISPLAY,
|
||||||
IL_FONT,
|
IL_FONT,
|
||||||
|
IL_FORCE_LOCAL_FONT_SWITCH,
|
||||||
IL_FORCELTR,
|
IL_FORCELTR,
|
||||||
IL_FORCEPLAIN,
|
IL_FORCEPLAIN,
|
||||||
IL_FREESPACING,
|
IL_FREESPACING,
|
||||||
@ -135,6 +136,7 @@ bool InsetLayout::read(Lexer & lex, TextClass const & tclass)
|
|||||||
{ "display", IL_DISPLAY },
|
{ "display", IL_DISPLAY },
|
||||||
{ "end", IL_END },
|
{ "end", IL_END },
|
||||||
{ "font", IL_FONT },
|
{ "font", IL_FONT },
|
||||||
|
{ "forcelocalfontswitch", IL_FORCE_LOCAL_FONT_SWITCH },
|
||||||
{ "forceltr", IL_FORCELTR },
|
{ "forceltr", IL_FORCELTR },
|
||||||
{ "forceplain", IL_FORCEPLAIN },
|
{ "forceplain", IL_FORCEPLAIN },
|
||||||
{ "freespacing", IL_FREESPACING },
|
{ "freespacing", IL_FREESPACING },
|
||||||
@ -236,6 +238,9 @@ bool InsetLayout::read(Lexer & lex, TextClass const & tclass)
|
|||||||
case IL_LEFTDELIM:
|
case IL_LEFTDELIM:
|
||||||
lex >> leftdelim_;
|
lex >> leftdelim_;
|
||||||
break;
|
break;
|
||||||
|
case IL_FORCE_LOCAL_FONT_SWITCH:
|
||||||
|
lex >> forcelocalfontswitch_;
|
||||||
|
break;
|
||||||
case IL_RIGHTDELIM:
|
case IL_RIGHTDELIM:
|
||||||
lex >> rightdelim_;
|
lex >> rightdelim_;
|
||||||
break;
|
break;
|
||||||
|
@ -162,6 +162,8 @@ public:
|
|||||||
bool resetsFont() const { return resetsfont_; }
|
bool resetsFont() const { return resetsfont_; }
|
||||||
///
|
///
|
||||||
bool isDisplay() const { return display_; }
|
bool isDisplay() const { return display_; }
|
||||||
|
///
|
||||||
|
bool forcelocalfontswitch() const { return forcelocalfontswitch_; }
|
||||||
private:
|
private:
|
||||||
///
|
///
|
||||||
void makeDefaultCSS() const;
|
void makeDefaultCSS() const;
|
||||||
@ -263,6 +265,8 @@ private:
|
|||||||
///
|
///
|
||||||
bool display_;
|
bool display_;
|
||||||
///
|
///
|
||||||
|
bool forcelocalfontswitch_;
|
||||||
|
///
|
||||||
Layout::LaTeXArgMap latexargs_;
|
Layout::LaTeXArgMap latexargs_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -551,10 +551,21 @@ void TeXOnePar(Buffer const & buf,
|
|||||||
getPolyglossiaEnvName(doc_language) : doc_language->babel();
|
getPolyglossiaEnvName(doc_language) : doc_language->babel();
|
||||||
string const outer_lang = use_polyglossia ?
|
string const outer_lang = use_polyglossia ?
|
||||||
getPolyglossiaEnvName(outer_language) : outer_language->babel();
|
getPolyglossiaEnvName(outer_language) : outer_language->babel();
|
||||||
string const lang_begin_command = use_polyglossia ?
|
string lang_begin_command = use_polyglossia ?
|
||||||
"\\begin{$$lang}" : lyxrc.language_command_begin;
|
"\\begin{$$lang}" : lyxrc.language_command_begin;
|
||||||
string const lang_end_command = use_polyglossia ?
|
string lang_end_command = use_polyglossia ?
|
||||||
"\\end{$$lang}" : lyxrc.language_command_end;
|
"\\end{$$lang}" : lyxrc.language_command_end;
|
||||||
|
// the '%' is necessary to prevent unwanted whitespace
|
||||||
|
string lang_command_termination = "%\n";
|
||||||
|
|
||||||
|
// In some insets (such as Arguments), we cannot use \selectlanguage
|
||||||
|
bool const localswitch = !use_polyglossia
|
||||||
|
&& text.inset().getLayout().forcelocalfontswitch();
|
||||||
|
if (localswitch) {
|
||||||
|
lang_begin_command = lyxrc.language_command_local;
|
||||||
|
lang_end_command = "}";
|
||||||
|
lang_command_termination.clear();
|
||||||
|
}
|
||||||
|
|
||||||
if (par_lang != prev_lang
|
if (par_lang != prev_lang
|
||||||
// check if we already put language command in TeXEnvironment()
|
// check if we already put language command in TeXEnvironment()
|
||||||
@ -570,8 +581,7 @@ void TeXOnePar(Buffer const & buf,
|
|||||||
os << from_ascii(subst(lang_end_command,
|
os << from_ascii(subst(lang_end_command,
|
||||||
"$$lang",
|
"$$lang",
|
||||||
prev_lang))
|
prev_lang))
|
||||||
// the '%' is necessary to prevent unwanted whitespace
|
<< lang_command_termination;
|
||||||
<< "%\n";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// We need to open a new language if we couldn't close the previous
|
// We need to open a new language if we couldn't close the previous
|
||||||
@ -629,8 +639,7 @@ void TeXOnePar(Buffer const & buf,
|
|||||||
os << "["
|
os << "["
|
||||||
<< from_ascii(par_language->polyglossiaOpts())
|
<< from_ascii(par_language->polyglossiaOpts())
|
||||||
<< "]";
|
<< "]";
|
||||||
// the '%' is necessary to prevent unwanted whitespace
|
os << lang_command_termination;
|
||||||
os << "%\n";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -686,8 +695,7 @@ void TeXOnePar(Buffer const & buf,
|
|||||||
lang_begin_command,
|
lang_begin_command,
|
||||||
"$$lang",
|
"$$lang",
|
||||||
par_lang))
|
par_lang))
|
||||||
// the '%' is necessary to prevent unwanted whitespace
|
<< lang_command_termination;
|
||||||
<< "%\n";
|
|
||||||
}
|
}
|
||||||
runparams.encoding = encoding;
|
runparams.encoding = encoding;
|
||||||
}
|
}
|
||||||
@ -830,16 +838,16 @@ void TeXOnePar(Buffer const & buf,
|
|||||||
lang_begin_command,
|
lang_begin_command,
|
||||||
"$$lang",
|
"$$lang",
|
||||||
current_lang));
|
current_lang));
|
||||||
pending_newline = true;
|
pending_newline = !localswitch;
|
||||||
unskip_newline = true;
|
unskip_newline = !localswitch;
|
||||||
}
|
}
|
||||||
} else if (!par_lang.empty()) {
|
} else if (!par_lang.empty()) {
|
||||||
os << from_ascii(subst(
|
os << from_ascii(subst(
|
||||||
lang_end_command,
|
lang_end_command,
|
||||||
"$$lang",
|
"$$lang",
|
||||||
par_lang));
|
par_lang));
|
||||||
pending_newline = true;
|
pending_newline = !localswitch;
|
||||||
unskip_newline = true;
|
unskip_newline = !localswitch;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user