]> git.lyx.org Git - lyx.git/blobdiff - src/Paragraph.cpp
* GuiToolbar.cpp:
[lyx.git] / src / Paragraph.cpp
index cc0587e02d881f985c89c2ddbf33acdcdb1b2a35..09c13cc43b10635bf1b42bb2eb81becbdb2f0fc0 100644 (file)
@@ -566,9 +566,10 @@ int Paragraph::Private::writeScriptChars(odocstream & os,
 
        // We only arrive here when a proper language for character text_[i] has
        // not been specified (i.e., it could not be translated in the current
-       // latex encoding) and it belongs to a known script.
-       // Parameter ltx contains the latex translation of text_[i] as specified in
-       // the unicodesymbols file and is something like "\textXXX{<spec>}".
+       // latex encoding) or its latex translation has been forced, and it
+       // belongs to a known script.
+       // Parameter ltx contains the latex translation of text_[i] as specified
+       // in the unicodesymbols file and is something like "\textXXX{<spec>}".
        // The latex macro name "textXXX" specifies the script to which text_[i]
        // belongs and we use it in order to check whether characters from the
        // same script immediately follow, such that we can collect them in a
@@ -577,8 +578,16 @@ int Paragraph::Private::writeScriptChars(odocstream & os,
        docstring::size_type const brace1 = ltx.find_first_of(from_ascii("{"));
        docstring::size_type const brace2 = ltx.find_last_of(from_ascii("}"));
        string script = to_ascii(ltx.substr(1, brace1 - 1));
-       int length = ltx.substr(0, brace2).length();
-       os << ltx.substr(0, brace2);
+       int pos = 0;
+       int length = brace2;
+       bool closing_brace = true;
+       if (script == "textgreek" && encoding.latexName() == "iso-8859-7") {
+               // Correct encoding is being used, so we can avoid \textgreek.
+               pos = brace1 + 1;
+               length -= pos;
+               closing_brace = false;
+       }
+       os << ltx.substr(pos, length);
        int size = text_.size();
        while (i + 1 < size) {
                char_type const next = text_[i + 1];
@@ -612,8 +621,10 @@ int Paragraph::Private::writeScriptChars(odocstream & os,
                length += len;
                ++i;
        }
-       os << '}';
-       ++length;
+       if (closing_brace) {
+               os << '}';
+               ++length;
+       }
        return length;
 }
 
@@ -1605,12 +1616,12 @@ void Paragraph::setBeginOfBody()
 }
 
 
-bool Paragraph::forceEmptyLayout() const
+bool Paragraph::forcePlainLayout() const
 {
        Inset const * const inset = inInset();
        if (!inset)
                return true;
-       return inset->forceEmptyLayout();
+       return inset->forcePlainLayout();
 }
 
 
@@ -1623,12 +1634,12 @@ bool Paragraph::allowParagraphCustomization() const
 }
 
 
-bool Paragraph::useEmptyLayout() const
+bool Paragraph::usePlainLayout() const
 {
        Inset const * const inset = inInset();
        if (!inset)
                return false;
-       return inset->useEmptyLayout();
+       return inset->usePlainLayout();
 }
 
 
@@ -1822,7 +1833,7 @@ bool Paragraph::latex(BufferParams const & bparams,
 
        bool return_value = false;
 
-       bool asdefault = forceEmptyLayout();
+       bool asdefault = forcePlainLayout();
 
        Layout const & style = asdefault ?
                bparams.documentClass().emptyLayout() :
@@ -2039,7 +2050,7 @@ bool Paragraph::latex(BufferParams const & bparams,
                        }
                }
 
-               // Set the encoding to that returned from simpleTeXSpecialChars (see
+               // Set the encoding to that returned from latexSpecialChar (see
                // comment for encoding member in OutputParams.h)
                runparams.encoding = rp.encoding;
        }
@@ -2365,9 +2376,9 @@ void Paragraph::setLayout(Layout const & layout)
 }
 
 
-void Paragraph::setEmptyOrDefaultLayout(DocumentClass const & tclass)
+void Paragraph::setPlainOrDefaultLayout(DocumentClass const & tclass)
 {
-       if (useEmptyLayout())
+       if (usePlainLayout())
                setLayout(tclass.emptyLayout());
        else
                setLayout(tclass.defaultLayout());
@@ -2554,6 +2565,12 @@ InsetList const & Paragraph::insetList() const
 }
 
 
+void Paragraph::setBuffer(Buffer & b)
+{
+       d->insetlist_.setBuffer(b);
+}
+
+
 Inset * Paragraph::releaseInset(pos_type pos)
 {
        Inset * inset = d->insetlist_.release(pos);