]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/math_macroarg.C
make \newcommand{\bb}[1]{\mathbf{#1}} work for read/write/display.
[lyx.git] / src / mathed / math_macroarg.C
index 4a9bf76ce12c0f0160deab6cb8f2e03da4678092..35d09d22d9463e4d351663c2e740f2a89123f266 100644 (file)
 
 
 
-MathMacroArgument::MathMacroArgument(int n)
-       : MathNestInset(1), number_(n), expanded_(false)
+MathMacroArgument::MathMacroArgument(int n, MathTextCodes code)
+       : MathNestInset(1), number_(n), expanded_(false), code_(code)
 {
        if (n < 1 || n > 9) {
                lyxerr << "MathMacroArgument::MathMacroArgument: wrong Argument id: "
                        << n << std::endl;
        }
        str_[0] = '#';
-       str_[1] = '0' + n;
+       str_[1] = static_cast<unsigned char>('0' + n);
        str_[2] = '\0';
 }
 
@@ -30,9 +30,12 @@ MathInset * MathMacroArgument::clone() const
 }
 
 
-void MathMacroArgument::write(MathWriteInfo & os) const
+void MathMacroArgument::write(WriteStream & os) const
 {
-       os << '#' << number_;
+       if (code_ == LM_TC_MIN)
+               os << str_;
+       else
+               os << '\\' << math_font_name(code_) << '{' << str_ << '}';
 }
 
 
@@ -58,15 +61,17 @@ void MathMacroArgument::draw(Painter & pain, int x, int y) const
 }
 
 
-void MathMacroArgument::writeNormal(NormalStream & os) const
+void MathMacroArgument::normalize(NormalStream & os) const
 {
-       os << "[macroarg " << number_ << "] ";
+       os << "[macroarg " << str_ << "] ";
 }
 
 
 void MathMacroArgument::substitute(MathMacro const & m)
 {
        cell(0) = m.cell(number_ - 1);
+       for (MathArray::iterator it = cell(0).begin(); it != cell(0).end(); ++it)
+               it->nucleus()->handleFont(code_);
        expanded_ = true;
 }