// LaTeX/LyX
//
-class WriteStream {
+class TeXMathStream {
public:
///
enum OutputType {
STRIKEOUT
};
///
- explicit WriteStream(otexrowstream & os, bool fragile = false,
- bool latex = false, OutputType output = wsDefault,
- Encoding const * encoding = nullptr);
+ explicit TeXMathStream(otexrowstream & os, bool fragile = false,
+ bool latex = false, OutputType output = wsDefault,
+ Encoding const * encoding = nullptr);
///
- ~WriteStream();
+ ~TeXMathStream();
///
int line() const { return line_; }
///
/// tell which ulem command type we are inside
UlemCmdType ulemCmd() const { return ulemcmd_; }
/// writes space if next thing is isalpha()
- void pendingSpace(bool how);
+ void pendingSpace(bool space);
/// writes space if next thing is isalpha()
bool pendingSpace() const { return pendingspace_; }
+ /// write braces if a space is pending and next char is [
+ /// or when a prime immediately follows a superscript
+ void useBraces(bool braces);
+ /// write braces if a space is pending and next char is [
+ /// or when a prime immediately follows a superscript
+ bool useBraces() const { return usebraces_; }
/// tell whether to write the closing brace of \ensuremath
void pendingBrace(bool brace);
/// tell whether to write the closing brace of \ensuremath
OutputType output_ = wsDefault;
/// do we have a space pending?
bool pendingspace_ = false;
+ /// do we have to write braces when a space is pending and [ follows,
+ /// or when a prime immediately follows a superscript?
+ bool usebraces_ = false;
/// do we have a brace pending?
bool pendingbrace_ = false;
/// are we in text mode when producing latex code?
};
///
-WriteStream & operator<<(WriteStream &, MathAtom const &);
+TeXMathStream & operator<<(TeXMathStream &, MathAtom const &);
///
-WriteStream & operator<<(WriteStream &, MathData const &);
+TeXMathStream & operator<<(TeXMathStream &, MathData const &);
///
-WriteStream & operator<<(WriteStream &, docstring const &);
+TeXMathStream & operator<<(TeXMathStream &, docstring const &);
///
-WriteStream & operator<<(WriteStream &, char const * const);
+TeXMathStream & operator<<(TeXMathStream &, char const * const);
///
-WriteStream & operator<<(WriteStream &, char);
+TeXMathStream & operator<<(TeXMathStream &, char);
///
-WriteStream & operator<<(WriteStream &, int);
+TeXMathStream & operator<<(TeXMathStream &, int);
///
-WriteStream & operator<<(WriteStream &, unsigned int);
+TeXMathStream & operator<<(TeXMathStream &, unsigned int);
/// ensure correct mode, possibly by opening \ensuremath or \lyxmathsym
-bool ensureMath(WriteStream & os, bool needs_mathmode = true,
+bool ensureMath(TeXMathStream & os, bool needs_mathmode = true,
bool macro = false, bool textmode_macro = false);
/// ensure the requested mode, possibly by closing \ensuremath or \lyxmathsym
-int ensureMode(WriteStream & os, InsetMath::mode_type mode, bool locked, bool ascii);
+int ensureMode(TeXMathStream & os, InsetMath::mode_type mode, bool locked, bool ascii);
/**
{
public:
///
- explicit MathEnsurer(WriteStream & os, bool needs_mathmode = true,
+ explicit MathEnsurer(TeXMathStream & os, bool needs_mathmode = true,
bool macro = false, bool textmode_macro = false)
: os_(os), brace_(ensureMath(os, needs_mathmode, macro, textmode_macro)) {}
///
~MathEnsurer() { os_.pendingBrace(brace_); }
private:
///
- WriteStream & os_;
+ TeXMathStream & os_;
///
bool brace_;
};
{
public:
///
- explicit ModeSpecifier(WriteStream & os, InsetMath::mode_type mode,
- bool locked = false, bool ascii = false)
+ explicit ModeSpecifier(TeXMathStream & os, InsetMath::mode_type mode,
+ bool locked = false, bool ascii = false)
: os_(os), oldmodes_(ensureMode(os, mode, locked, ascii)) {}
///
~ModeSpecifier()
}
private:
///
- WriteStream & os_;
+ TeXMathStream & os_;
///
int oldmodes_;
};