- lyxerr[Debug::LATEX] << "TeXOnePar... " << this << endl;
- Inset const * in = inInset();
- bool further_blank_line = false;
- LyXLayout_ptr style;
-
- // well we have to check if we are in an inset with unlimited
- // lenght (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!
- if ((in == 0) || !in->forceDefaultParagraphs(in)) {
- style = layout();
-
- if (params().startOfAppendix()) {
- os << "\\appendix\n";
- texrow.newline();
- }
-
- if (!params().spacing().isDefault()
- && (!previous() || !previous()->hasSameLayout(this))) {
- os << params().spacing().writeEnvirBegin() << "\n";
- texrow.newline();
- }
-
- if (style->isCommand()) {
- os << '\n';
- texrow.newline();
- }
-
- if (params().pagebreakTop()) {
- os << "\\newpage";
- further_blank_line = true;
- }
- if (params().spaceTop().kind() != VSpace::NONE) {
- os << params().spaceTop().asLatexCommand(bparams);
- further_blank_line = true;
- }
-
- if (params().lineTop()) {
- os << "\\lyxline{\\" << getFont(bparams, 0).latexSize() << '}'
- << "\\vspace{-1\\parskip}";
- further_blank_line = true;
- }
-
- if (further_blank_line) {
- os << '\n';
- texrow.newline();
- }
- } else {
- style = bparams.getLyXTextClass().defaultLayout();
- }
-
- Language const * language = getParLanguage(bparams);
- Language const * doc_language = bparams.language;
- Language const * previous_language = previous()
- ? previous()->getParLanguage(bparams) : doc_language;
-
- if (language->babel() != previous_language->babel()
- // check if we already put language command in TeXEnvironment()
- && !(style->isEnvironment()
- && (!previous() || previous()->layout() != layout() ||
- previous()->params().depth() != params().depth())))
- {
- if (!lyxrc.language_command_end.empty() &&
- previous_language->babel() != doc_language->babel())
- {
- os << subst(lyxrc.language_command_end, "$$lang",
- previous_language->babel())
- << endl;
- texrow.newline();
- }
-
- if (lyxrc.language_command_end.empty() ||
- language->babel() != doc_language->babel())
- {
- os << subst(lyxrc.language_command_begin, "$$lang",
- language->babel())
- << endl;
- texrow.newline();
- }
- }
-
- if (bparams.inputenc == "auto" &&
- language->encoding() != previous_language->encoding()) {
- os << "\\inputencoding{"
- << language->encoding()->LatexName()
- << "}" << endl;
- texrow.newline();
- }
-
- switch (style->latextype) {
- case LATEX_COMMAND:
- os << '\\'
- << style->latexname()
- << style->latexparam();
- break;
- case LATEX_ITEM_ENVIRONMENT:
- if (bibkey) {
- bibkey->latex(buf, os, false, false);
- } else
- os << "\\item ";
- break;
- case LATEX_LIST_ENVIRONMENT:
- os << "\\item ";
- break;
- default:
- break;
- }
-
- bool need_par = simpleTeXOnePar(buf, bparams, os, texrow, moving_arg);
-
- // Make sure that \\par is done with the font of the last
- // character if this has another size as the default.
- // This is necessary because LaTeX (and LyX on the screen)
- // calculates the space between the baselines according
- // to this font. (Matthias)
- //
- // Is this really needed ? (Dekel)
- // We do not need to use to change the font for the last paragraph
- // or for a command.
- LyXFont const font =
- (empty()
- ? getLayoutFont(bparams) : getFont(bparams, size() - 1));
-
- bool is_command = style->isCommand();
-
- if (style->resfont.size() != font.size() && next_ && !is_command) {
- if (!need_par)
- os << "{";
- os << "\\" << font.latexSize() << " \\par}";
- } else if (need_par) {
- os << "\\par}";
- } else if (is_command)
- os << "}";
-
- switch (style->latextype) {
- case LATEX_ITEM_ENVIRONMENT:
- case LATEX_LIST_ENVIRONMENT:
- if (next_ && (params().depth() < next_->params().depth())) {
- os << '\n';
- texrow.newline();
- }
- break;
- case LATEX_ENVIRONMENT:
- // if its the last paragraph of the current environment
- // skip it otherwise fall through
- if (next_
- && (next_->layout() != layout()
- || next_->params().depth() != params().depth()))
- break;
- // fall through possible
- default:
- // we don't need it for the last paragraph!!!
- if (next_) {
- os << '\n';
- texrow.newline();
- }
- }
-
- if ((in == 0) || !in->forceDefaultParagraphs(in)) {
- further_blank_line = false;
- if (params().lineBottom()) {
- os << "\\lyxline{\\" << font.latexSize() << '}';
- further_blank_line = true;
- }
-
- if (params().spaceBottom().kind() != VSpace::NONE) {
- os << params().spaceBottom().asLatexCommand(bparams);
- further_blank_line = true;
- }
-
- if (params().pagebreakBottom()) {
- os << "\\newpage";
- further_blank_line = true;
- }
-
- if (further_blank_line) {
- os << '\n';
- texrow.newline();
- }
-
- if (!params().spacing().isDefault()
- && (!next_ || !next_->hasSameLayout(this))) {
- os << params().spacing().writeEnvirEnd() << "\n";
- texrow.newline();
- }
- }
-
- // we don't need it for the last paragraph!!!
- if (next_) {
- os << '\n';
- texrow.newline();
- } else {
- // Since \selectlanguage write the language to the aux file,
- // we need to reset the language at the end of footnote or
- // float.
-
- if (language->babel() != doc_language->babel()) {
- if (lyxrc.language_command_end.empty())
- os << subst(lyxrc.language_command_begin,
- "$$lang",
- doc_language->babel())
- << endl;
- else
- os << subst(lyxrc.language_command_end,
- "$$lang",
- language->babel())
- << endl;
- texrow.newline();
- }
- }
-
- lyxerr[Debug::LATEX] << "TeXOnePar...done " << next_ << endl;
- return next_;