X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Foutput_latex.C;h=bca30a65471e4667b3a210f1e9e705108d590a23;hb=e7ef29fa2d516b8593aa3cccb6548de5686e8a9a;hp=b50748dd5274fb6c56fdf75f48613165a387142f;hpb=3d9f2089dd528ff458c1f18685fffac6a9530d9e;p=lyx.git diff --git a/src/output_latex.C b/src/output_latex.C index b50748dd52..bca30a6547 100644 --- a/src/output_latex.C +++ b/src/output_latex.C @@ -25,21 +25,17 @@ #include "texrow.h" #include "vspace.h" +#include "insets/insetbibitem.h" #include "insets/insetoptarg.h" #include "support/lstrings.h" -#ifdef HAVE_LOCALE -#endif - using lyx::support::subst; using std::endl; using std::ostream; using std::string; -extern string bibitemWidest(Buffer const &); - namespace { @@ -79,7 +75,7 @@ TeXDeeper(Buffer const & buf, os, texrow, runparams); } } - lyxerr[Debug::LATEX] << "TeXDeeper...done " << &*par << endl; + lyxerr[Debug::LATEX] << "TeXDeeper...done " << endl; return par; } @@ -190,23 +186,28 @@ TeXEnvironment(Buffer const & buf, texrow.newline(); } - lyxerr[Debug::LATEX] << "TeXEnvironment...done " << &*par << endl; - return par; // ale970302 + if (par != paragraphs.end() && lyxerr.debugging(Debug::LATEX)) + lyxerr << "TeXEnvironment...done " << &*par << endl; + return par; } -InsetOptArg * optArgInset(Paragraph const & par) +int latexOptArgInsets(Buffer const & buf, Paragraph const & par, + ostream & os, OutputParams const & runparams, int number) { - // Find the entry. + int lines = 0; + InsetList::const_iterator it = par.insetlist.begin(); InsetList::const_iterator end = par.insetlist.end(); - for (; it != end; ++it) { - InsetBase * ins = it->inset; - if (ins->lyxCode() == InsetBase::OPTARG_CODE) { - return static_cast(ins); + for (; it != end && number > 0 ; ++it) { + if (it->inset->lyxCode() == InsetBase::OPTARG_CODE) { + InsetOptArg * ins = + static_cast(it->inset); + lines += ins->latexOptional(buf, os, runparams); + --number; } } - return 0; + return lines; } @@ -308,10 +309,13 @@ TeXOnePar(Buffer const & buf, os << '\\' << style->latexname(); // Separate handling of optional argument inset. - if (style->optionalargs == 1) { - InsetOptArg * it = optArgInset(*pit); - if (it) - it->latexOptional(buf, os, runparams); + if (style->optionalargs > 0) { + int ret = latexOptArgInsets(buf, *pit, os, runparams, + style->optionalargs); + while (ret > 0) { + texrow.newline(); + --ret; + } } else os << style->latexparam(); @@ -409,7 +413,7 @@ paragraphs); } } - if (boost::next(pit) == const_cast(paragraphs).end() + if (boost::next(pit) == paragraphs.end() && language->babel() != doc_language->babel()) { // Since \selectlanguage write the language to the aux file, // we need to reset the language at the end of footnote or @@ -436,7 +440,9 @@ paragraphs); texrow.newline(); } - lyxerr[Debug::LATEX] << "TeXOnePar...done " << &*boost::next(pit) << endl; + if (boost::next(pit) != paragraphs.end() && + lyxerr.debugging(Debug::LATEX)) + lyxerr << "TeXOnePar...done " << &*boost::next(pit) << endl; return ++pit; }