X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmathed%2FInsetMathDelim.cpp;h=fb4f8f4d87c4a756f96e3d913ffac765b3338d11;hb=c9d9309c1ecffa218dee04ce4f7991ed4fc0c9bb;hp=9cf6414e294257b03909933ecd287209d6fc10cd;hpb=90837aaf6eee523fd594c0ea7f44c053bb49a3cf;p=lyx.git diff --git a/src/mathed/InsetMathDelim.cpp b/src/mathed/InsetMathDelim.cpp index 9cf6414e29..fb4f8f4d87 100644 --- a/src/mathed/InsetMathDelim.cpp +++ b/src/mathed/InsetMathDelim.cpp @@ -4,7 +4,7 @@ * Licence details can be found in the file COPYING. * * \author Alejandro Aguilar Sierra - * \author André Pönitz + * \author André Pönitz * * Full author contact details are available in file CREDITS. */ @@ -14,10 +14,13 @@ #include "InsetMathDelim.h" #include "MathData.h" +#include "MathFactory.h" #include "MathStream.h" #include "MathSupport.h" #include "MetricsInfo.h" +#include "LaTeXFeatures.h" + #include "support/docstring.h" #include "frontends/FontMetrics.h" @@ -38,14 +41,15 @@ static docstring convertDelimToLatexName(docstring const & name) } -InsetMathDelim::InsetMathDelim(docstring const & l, docstring const & r) - : InsetMathNest(1), left_(l), right_(r) +InsetMathDelim::InsetMathDelim(Buffer * buf, docstring const & l, + docstring const & r) + : InsetMathNest(buf, 1), left_(l), right_(r) {} -InsetMathDelim::InsetMathDelim - (docstring const & l, docstring const & r, MathData const & ar) - : InsetMathNest(1), left_(l), right_(r) +InsetMathDelim::InsetMathDelim(Buffer * buf, docstring const & l, docstring const & r, + MathData const & ar) + : InsetMathNest(buf, 1), left_(l), right_(r) { cell(0) = ar; } @@ -57,20 +61,35 @@ Inset * InsetMathDelim::clone() const } -void InsetMathDelim::write(WriteStream & os) const +void InsetMathDelim::validate(LaTeXFeatures & features) const { - bool brace = os.pendingBrace(); - os.pendingBrace(false); - if (os.latex() && os.textMode()) { - os << "\\ensuremath{"; - os.textMode(false); - brace = true; + InsetMathNest::validate(features); + // The delimiters may be used without \left or \right as well. + // Therefore they are listed in lib/symbols, and if they have + // requirements, we need to add them here. + MathWordList const & words = mathedWordList(); + MathWordList::const_iterator it = words.find(left_); + if (it != words.end()) + { + string const req = it->second.requires; + if (!req.empty()) + features.require(req); + } + it = words.find(right_); + if (it != words.end()) + { + string const req = it->second.requires; + if (!req.empty()) + features.require(req); } +} + +void InsetMathDelim::write(WriteStream & os) const +{ + MathEnsurer ensurer(os); os << "\\left" << convertDelimToLatexName(left_) << cell(0) << "\\right" << convertDelimToLatexName(right_); - - os.pendingBrace(brace); } @@ -171,8 +190,14 @@ void InsetMathDelim::mathematica(MathematicaStream & os) const void InsetMathDelim::mathmlize(MathStream & os) const { - os << "" << cell(0) << ""; + os << "" << left_ << "" + << cell(0) << "" << right_ << ""; +} + + +void InsetMathDelim::htmlize(HtmlStream & os) const +{ + os << left_ << cell(0) << right_; }