]> git.lyx.org Git - lyx.git/blobdiff - src/ParagraphParameters.C
fix reading the author field.
[lyx.git] / src / ParagraphParameters.C
index 2d0ee33f2063842cffc366ca1736cd309890a888..428063f0fd6ac90b0288b72d3b55b040a1c9589f 100644 (file)
@@ -38,6 +38,26 @@ using std::ostream;
 using std::ostringstream;
 using std::string;
 
+// anonym namespace
+namespace {
+int findToken(char const * const str[], string const search_token)
+{
+       int i = 0;
+
+       if (search_token != "default") {
+               while (str[i][0] && str[i] != search_token) {
+                       ++i;
+               }
+               if (!str[i][0]) {
+                       i = -1;
+               }
+       }
+
+       return i;
+}
+
+}
+
 
 ParagraphParameters::ParagraphParameters()
        : noindent_(false),
@@ -208,7 +228,8 @@ void ParagraphParameters::read(LyXLex & lex)
                                lex.printError("Unknown spacing token: '$$Token'");
                        }
                } else if (token == "\\align") {
-                       int tmpret = lex.findToken(string_align);
+                       lex.next();
+                       int tmpret = findToken(string_align, lex.getString());
                        if (tmpret == -1)
                                ++tmpret;
                        align(LyXAlignment(1 << tmpret));
@@ -225,25 +246,27 @@ void ParagraphParameters::read(LyXLex & lex)
 
 void ParagraphParameters::write(ostream & os) const
 {
+       ostringstream oss;
+
        // Maybe the paragraph has special spacing
-       spacing().writeFile(os, true);
+       spacing().writeFile(oss, true);
 
        // The labelwidth string used in lists.
        if (!labelWidthString().empty())
-               os << "\\labelwidthstring "
+               oss << "\\labelwidthstring "
                   << labelWidthString() << '\n';
 
        // Start of appendix?
        if (startOfAppendix())
-               os << "\\start_of_appendix ";
+               oss << "\\start_of_appendix ";
 
        // Noindent?
        if (noindent())
-               os << "\\noindent ";
+               oss << "\\noindent ";
 
        // Do we have a manual left indent?
        if (!leftIndent().zero())
-               os << "\\leftindent " << leftIndent().asString()
+               oss << "\\leftindent " << leftIndent().asString()
                   << ' ';
 
        // Alignment?
@@ -255,8 +278,9 @@ void ParagraphParameters::write(ostream & os) const
                case LYX_ALIGN_CENTER: h = 3; break;
                default: h = 0; break;
                }
-               os << "\\align " << string_align[h] << ' ';
+               oss << "\\align " << string_align[h] << ' ';
        }
+       os << rtrim(oss.str());
 }