If language needs to be reset at the end of footnotes or floats

then do reset it only after footnotes or floats. \selectlanguage at
the end of environments might produce spurious vertical space
(see https://marc.info/?l=lyx-devel&m=168872369617866)
This commit is contained in:
Juergen Spitzmueller 2023-07-16 16:31:31 +02:00
parent 386a2ddca1
commit 243b0ef90c
4 changed files with 20 additions and 4 deletions

View File

@ -291,6 +291,10 @@ public:
*/ */
bool inInclude = false; bool inInclude = false;
/** Whether we are inside a footnote.
*/
bool inFootnote = false;
/** Whether a btUnit (for multiple biblographies) is open. /** Whether a btUnit (for multiple biblographies) is open.
*/ */
mutable bool openbtUnit = false; mutable bool openbtUnit = false;

View File

@ -111,6 +111,14 @@ docstring InsetFoot::toolTip(BufferView const & bv, int x, int y) const
} }
void InsetFoot::latex(otexstream & os, OutputParams const & runparams_in) const
{
OutputParams runparams(runparams_in);
runparams.inFootnote = true;
InsetText::latex(os, runparams);
}
int InsetFoot::plaintext(odocstringstream & os, int InsetFoot::plaintext(odocstringstream & os,
OutputParams const & runparams, size_t max_length) const OutputParams const & runparams, size_t max_length) const
{ {

View File

@ -32,6 +32,8 @@ private:
/// ///
docstring layoutName() const override; docstring layoutName() const override;
/// ///
void latex(otexstream &, OutputParams const &) const override;
///
int plaintext(odocstringstream & ods, OutputParams const & op, int plaintext(odocstringstream & ods, OutputParams const & op,
size_t max_length = INT_MAX) const override; size_t max_length = INT_MAX) const override;
/// ///

View File

@ -1298,13 +1298,15 @@ void TeXOnePar(Buffer const & buf,
if (localswitch_needed if (localswitch_needed
|| (intitle_command && using_begin_end) || (intitle_command && using_begin_end)
|| closing_rtl_ltr_environment || closing_rtl_ltr_environment
|| (((runparams.isLastPar && !runparams.inbranch) || close_lang_switch)
&& (par_lang != outer_lang || (using_begin_end
&& style.isEnvironment()
&& par_lang != nextpar_lang)))) {
// Since \selectlanguage write the language to the aux file, // Since \selectlanguage write the language to the aux file,
// we need to reset the language at the end of footnote or // we need to reset the language at the end of footnote or
// float. // float.
|| (((runparams.isLastPar
&& (using_begin_end || runparams.inFloat != OutputParams::NONFLOAT || runparams.inFootnote))
|| close_lang_switch)
&& (par_lang != outer_lang || (using_begin_end
&& style.isEnvironment()
&& par_lang != nextpar_lang)))) {
if (!localswitch && (pending_newline || close_lang_switch)) if (!localswitch && (pending_newline || close_lang_switch))
os << '\n'; os << '\n';