X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetText.cpp;h=f0a6c81832ffcc4ee088084fa10810b7ff3a6cb0;hb=bfddee97e191a853f0576f4fab3f095c4e9ce0de;hp=a71d25f623fac0c0fa0aa1944bc0129a5c973cec;hpb=ee351906e0cd2c2d5d138640266420c2f6102200;p=lyx.git diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp index a71d25f623..f0a6c81832 100644 --- a/src/insets/InsetText.cpp +++ b/src/insets/InsetText.cpp @@ -326,16 +326,15 @@ bool InsetText::getStatus(Cursor & cur, FuncRequest const & cmd, void InsetText::fixParagraphsFont() { - if (!getLayout().isPassThru()) - return; - Font font(inherit_font, buffer().params().language); font.setLanguage(latex_language); ParagraphList::iterator par = paragraphs().begin(); ParagraphList::iterator const end = paragraphs().end(); while (par != end) { - par->resetFonts(font); - par->params().clear(); + if (par->isPassThru()) + par->resetFonts(font); + if (!par->allowParagraphCustomization()) + par->params().clear(); ++par; } } @@ -371,14 +370,13 @@ void InsetText::validate(LaTeXFeatures & features) const } -int InsetText::latex(odocstream & os, OutputParams const & runparams) const +void InsetText::latex(otexstream & os, OutputParams const & runparams) const { // This implements the standard way of handling the LaTeX // output of a text inset, either a command or an // environment. Standard collapsable insets should not // redefine this, non-standard ones may call this. InsetLayout const & il = getLayout(); - int rows = 0; if (!il.latexname().empty()) { if (il.latextype() == InsetLayout::COMMAND) { // FIXME UNICODE @@ -389,10 +387,16 @@ int InsetText::latex(odocstream & os, OutputParams const & runparams) const os << from_utf8(il.latexparam()); os << '{'; } else if (il.latextype() == InsetLayout::ENVIRONMENT) { - os << "%\n\\begin{" << from_utf8(il.latexname()) << "}\n"; + if (il.isDisplay()) + os << breakln; + else + os << safebreakln; + if (runparams.lastid != -1) + os.texrow().start(runparams.lastid, + runparams.lastpos); + os << "\\begin{" << from_utf8(il.latexname()) << "}\n"; if (!il.latexparam().empty()) os << from_utf8(il.latexparam()); - rows += 2; } } OutputParams rp = runparams; @@ -404,20 +408,23 @@ int InsetText::latex(odocstream & os, OutputParams const & runparams) const rp.par_end = paragraphs().size(); // Output the contents of the inset - TexRow texrow; - latexParagraphs(buffer(), text_, os, texrow, rp); - rows += texrow.rows(); + latexParagraphs(buffer(), text_, os, rp); runparams.encoding = rp.encoding; if (!il.latexname().empty()) { if (il.latextype() == InsetLayout::COMMAND) { os << "}"; } else if (il.latextype() == InsetLayout::ENVIRONMENT) { - os << "\n\\end{" << from_utf8(il.latexname()) << "}\n"; - rows += 2; + // A comment environment doesn't need a % before \n\end + if (il.isDisplay() || runparams.inComment) + os << breakln; + else + os << safebreakln; + os << "\\end{" << from_utf8(il.latexname()) << "}\n"; + if (!il.isDisplay()) + os.protectSpace(true); } } - return rows; } @@ -682,10 +689,10 @@ void InsetText::forToc(docstring & os, size_t maxlen) const } -void InsetText::addToToc(DocIterator const & cdit) +void InsetText::addToToc(DocIterator const & cdit) const { DocIterator dit = cdit; - dit.push_back(CursorSlice(*this)); + dit.push_back(CursorSlice(const_cast(*this))); Toc & toc = buffer().tocBackend().toc("tableofcontents"); BufferParams const & bufparams = buffer_->params(); @@ -693,13 +700,13 @@ void InsetText::addToToc(DocIterator const & cdit) // For each paragraph, traverse its insets and let them add // their toc items - ParagraphList & pars = paragraphs(); + ParagraphList const & pars = paragraphs(); pit_type pend = paragraphs().size(); for (pit_type pit = 0; pit != pend; ++pit) { Paragraph const & par = pars[pit]; dit.pit() = pit; // if we find an optarg, we'll save it for use later. - InsetText * arginset = 0; + InsetText const * arginset = 0; InsetList::const_iterator it = par.insetList().begin(); InsetList::const_iterator end = par.insetList().end(); for (; it != end; ++it) {