X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Foutput_latex.C;h=fa96ec758b3fadb24a8307b899e63ef2636b1b6a;hb=ba62665f966508db5a4de6864f4aa7374c5a5356;hp=1164fcc84b5d9261764ea066dc564d4a8794ce74;hpb=a8739b8b911286837353b00f50dcb93962eef0df;p=lyx.git diff --git a/src/output_latex.C b/src/output_latex.C index 1164fcc84b..fa96ec758b 100644 --- a/src/output_latex.C +++ b/src/output_latex.C @@ -83,10 +83,6 @@ TeXDeeper(Buffer const & buf, } -int latexOptArgInsets(Buffer const & buf, Paragraph const & par, - odocstream & os, OutputParams const & runparams, int number); - - ParagraphList::const_iterator TeXEnvironment(Buffer const & buf, ParagraphList const & paragraphs, @@ -212,6 +208,8 @@ TeXEnvironment(Buffer const & buf, return par; } +} + int latexOptArgInsets(Buffer const & buf, Paragraph const & par, odocstream & os, OutputParams const & runparams, int number) @@ -232,6 +230,8 @@ int latexOptArgInsets(Buffer const & buf, Paragraph const & par, } +namespace { + ParagraphList::const_iterator TeXOnePar(Buffer const & buf, ParagraphList const & paragraphs, @@ -393,14 +393,13 @@ TeXOnePar(Buffer const & buf, } else if (is_command) os << '}'; + bool pending_newline = false; switch (style->latextype) { case LATEX_ITEM_ENVIRONMENT: case LATEX_LIST_ENVIRONMENT: if (boost::next(pit) != paragraphs.end() - && (pit->params().depth() < boost::next(pit)->params().depth())) { - os << '\n'; - texrow.newline(); - } + && (pit->params().depth() < boost::next(pit)->params().depth())) + pending_newline = true; break; case LATEX_ENVIRONMENT: { // if its the last paragraph of the current environment @@ -416,10 +415,8 @@ TeXOnePar(Buffer const & buf, // fall through possible default: // we don't need it for the last paragraph!!! - if (boost::next(pit) != paragraphs.end()) { - os << '\n'; - texrow.newline(); - } + if (boost::next(pit) != paragraphs.end()) + pending_newline = true; } if (!pit->forceDefaultParagraphs()) { @@ -427,9 +424,12 @@ TeXOnePar(Buffer const & buf, && (boost::next(pit) == paragraphs.end() || !boost::next(pit)->hasSameLayout(*pit))) { - os << from_ascii(pit->params().spacing().writeEnvirEnd()) - << '\n'; - texrow.newline(); + if (pending_newline) { + os << '\n'; + texrow.newline(); + } + os << from_ascii(pit->params().spacing().writeEnvirEnd()); + pending_newline = true; } } @@ -439,19 +439,21 @@ TeXOnePar(Buffer const & buf, // we need to reset the language at the end of footnote or // float. + if (pending_newline) { + os << '\n'; + texrow.newline(); + } if (lyxrc.language_command_end.empty()) os << from_ascii(subst( lyxrc.language_command_begin, "$$lang", - doc_language->babel())) - << '\n'; + doc_language->babel())); else os << from_ascii(subst( lyxrc.language_command_end, "$$lang", - language->babel())) - << '\n'; - texrow.newline(); + language->babel())); + pending_newline = true; } // FIXME we switch from the encoding of this paragraph to the @@ -459,8 +461,9 @@ TeXOnePar(Buffer const & buf, // to take the encoding of the next paragraph into account. // This may result in some unneeded encoding changes. basefont = pit->getLayoutFont(bparams, outerfont); - if (switchEncoding(os, bparams, *(basefont.language()->encoding()), - outer_encoding)) { + switchEncoding(os, bparams, *(basefont.language()->encoding()), + outer_encoding); + if (pending_newline) { os << '\n'; texrow.newline(); } @@ -514,7 +517,8 @@ void latexParagraphs(Buffer const & buf, // well we have to check if we are in an inset with unlimited // length (all in one row) if that is true then we don't allow // any special options in the paragraph and also we don't allow - // any environment other then "Standard" to be valid! + // any environment other than the default layout of the + // text class to be valid! if (!par->forceDefaultParagraphs()) { LyXLayout_ptr const & layout = par->layout(); @@ -550,8 +554,7 @@ void latexParagraphs(Buffer const & buf, par = TeXOnePar(buf, paragraphs, par, os, texrow, runparams, everypar); } else if (layout->isEnvironment() || - !par->params().leftIndent().zero()) - { + !par->params().leftIndent().zero()) { par = TeXEnvironment(buf, paragraphs, par, os, texrow, runparams); } else { @@ -589,6 +592,7 @@ int switchEncoding(odocstream & os, BufferParams const & bparams, // only, but it is the best we can do. if ((bparams.inputenc == "auto" || bparams.inputenc == "default") && oldEnc.name() != newEnc.name() && + oldEnc.name() != "ascii" && newEnc.name() != "ascii" && oldEnc.name() != "tis620-0" && newEnc.name() != "tis620-0") { lyxerr[Debug::LATEX] << "Changing LaTeX encoding from " << oldEnc.name() << " to "