]> git.lyx.org Git - lyx.git/blobdiff - src/Paragraph.cpp
whitespace only
[lyx.git] / src / Paragraph.cpp
index 177e20263388f18897d5cb1ec02df741e43b076a..52714b8f118c9e98e09900eae5643ccb4d2af441 100644 (file)
@@ -817,10 +817,10 @@ void Paragraph::Private::latexInset(
        }
 
        if (close) {
-       if (running_font.language()->lang() == "farsi")
-                       os << "\\endL{}";
-               else
-                       os << '}';
+               if (running_font.language()->lang() == "farsi")
+                               os << "\\endL{}";
+                       else
+                               os << '}';
        }
 
        if (tmp) {
@@ -864,9 +864,15 @@ void Paragraph::Private::latexSpecialChar(
                return;
        }
 
-       if (lyxrc.fontenc == "T1" && latexSpecialT1(c, os, i, column))
+       // If T1 font encoding is used, use the special
+       // characters it provides.
+       // NOTE: some languages reset the font encoding
+       // internally
+       if (!running_font.language()->internalFontEncoding()
+           && lyxrc.fontenc == "T1" && latexSpecialT1(c, os, i, column))
                return;
 
+       // \tt font needs special treatment
        if (running_font.fontInfo().family() == TYPEWRITER_FAMILY
                && latexSpecialTypewriter(c, os, i, column))
                return;
@@ -915,7 +921,9 @@ void Paragraph::Private::latexSpecialChar(
                column += 17;
                break;
 
-       case '*': case '[':
+       case '*':
+       case '[':
+       case ']':
                // avoid being mistaken for optional arguments
                os << '{';
                os.put(c);
@@ -1612,7 +1620,7 @@ docstring Paragraph::expandLabel(Layout const & layout,
 
        if (fmt.empty() && layout.labeltype == LABEL_COUNTER 
            && !layout.counter.empty())
-               fmt = "\\the" + layout.counter;
+               return tclass.counters().theCounter(layout.counter);
 
        // handle 'inherited level parts' in 'fmt',
        // i.e. the stuff between '@' in   '@Section@.\arabic{subsection}'
@@ -2440,6 +2448,29 @@ docstring Paragraph::asString(pos_type beg, pos_type end, int options) const
 }
 
 
+docstring Paragraph::stringify(pos_type beg, pos_type end, int options, OutputParams & runparams) const
+{
+       odocstringstream os;
+
+       if (beg == 0 
+               && options & AS_STR_LABEL
+               && !d->params_.labelString().empty())
+               os << d->params_.labelString() << ' ';
+
+       for (pos_type i = beg; i < end; ++i) {
+               char_type const c = d->text_[i];
+               if (isPrintable(c) || c == '\t'
+                   || (c == '\n' && options & AS_STR_NEWLINES))
+                       os.put(c);
+               else if (c == META_INSET && options & AS_STR_INSETS) {
+                       getInset(i)->plaintext(os, runparams);
+               }
+       }
+
+       return os.str();
+}
+
+
 void Paragraph::setInsetOwner(Inset const * inset)
 {
        d->inset_owner_ = inset;