mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-30 05:12:40 +00:00
Fix the display of column spacing in AMS environments
AMS align environment should have some spacing between odd and even columns. Add a new virtual method displayColSpace() to InsetMathGrid, InsetMathHull and InsetMathSplit.
This commit is contained in:
parent
360992cb9f
commit
1676b69cf7
@ -486,7 +486,7 @@ void InsetMathGrid::metrics(MetricsInfo & mi, Dimension & dim) const
|
|||||||
colinfo_[col].offset_ =
|
colinfo_[col].offset_ =
|
||||||
colinfo_[col - 1].offset_ +
|
colinfo_[col - 1].offset_ +
|
||||||
colinfo_[col - 1].width_ +
|
colinfo_[col - 1].width_ +
|
||||||
colinfo_[col - 1].skip_ +
|
displayColSpace(col - 1) +
|
||||||
colsep() +
|
colsep() +
|
||||||
colinfo_[col].lines_ * vlinesep();
|
colinfo_[col].lines_ * vlinesep();
|
||||||
}
|
}
|
||||||
@ -508,7 +508,7 @@ void InsetMathGrid::metrics(MetricsInfo & mi, Dimension & dim) const
|
|||||||
int const nextoffset =
|
int const nextoffset =
|
||||||
colinfo_[first].offset_ +
|
colinfo_[first].offset_ +
|
||||||
wid +
|
wid +
|
||||||
colinfo_[last].skip_ +
|
displayColSpace(last) +
|
||||||
colsep() +
|
colsep() +
|
||||||
colinfo_[last+1].lines_ * vlinesep();
|
colinfo_[last+1].lines_ * vlinesep();
|
||||||
int const dx = nextoffset - colinfo_[last+1].offset_;
|
int const dx = nextoffset - colinfo_[last+1].offset_;
|
||||||
@ -741,7 +741,7 @@ void InsetMathGrid::metricsT(TextMetricsInfo const & mi, Dimension & dim) const
|
|||||||
colinfo_[col].offset_ =
|
colinfo_[col].offset_ =
|
||||||
colinfo_[col - 1].offset_ +
|
colinfo_[col - 1].offset_ +
|
||||||
colinfo_[col - 1].width_ +
|
colinfo_[col - 1].width_ +
|
||||||
colinfo_[col - 1].skip_ +
|
displayColSpace(col - 1) +
|
||||||
1 ; //colsep() +
|
1 ; //colsep() +
|
||||||
//colinfo_[col].lines_ * vlinesep();
|
//colinfo_[col].lines_ * vlinesep();
|
||||||
}
|
}
|
||||||
@ -953,7 +953,7 @@ int InsetMathGrid::cellWidth(idx_type idx) const
|
|||||||
col_type c2 = c1 + ncellcols(idx);
|
col_type c2 = c1 + ncellcols(idx);
|
||||||
return colinfo_[c2].offset_
|
return colinfo_[c2].offset_
|
||||||
- colinfo_[c1].offset_
|
- colinfo_[c1].offset_
|
||||||
- colinfo_[c2].skip_
|
- displayColSpace(c2)
|
||||||
- colsep()
|
- colsep()
|
||||||
- colinfo_[c2].lines_ * vlinesep();
|
- colinfo_[c2].lines_ * vlinesep();
|
||||||
}
|
}
|
||||||
@ -1378,6 +1378,11 @@ char InsetMathGrid::displayColAlign(idx_type idx) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int InsetMathGrid::displayColSpace(col_type col) const
|
||||||
|
{
|
||||||
|
return colinfo_[col].skip_;
|
||||||
|
}
|
||||||
|
|
||||||
void InsetMathGrid::doDispatch(Cursor & cur, FuncRequest & cmd)
|
void InsetMathGrid::doDispatch(Cursor & cur, FuncRequest & cmd)
|
||||||
{
|
{
|
||||||
//lyxerr << "*** InsetMathGrid: request: " << cmd << endl;
|
//lyxerr << "*** InsetMathGrid: request: " << cmd << endl;
|
||||||
@ -1862,5 +1867,32 @@ char InsetMathGrid::colAlign(HullType type, col_type col)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//static
|
||||||
|
int InsetMathGrid::colSpace(HullType type, col_type col)
|
||||||
|
{
|
||||||
|
int alignInterSpace;
|
||||||
|
switch (type) {
|
||||||
|
case hullEqnArray:
|
||||||
|
return 5;
|
||||||
|
|
||||||
|
case hullAlign:
|
||||||
|
alignInterSpace = 20;
|
||||||
|
break;
|
||||||
|
case hullAlignAt:
|
||||||
|
alignInterSpace = 0;
|
||||||
|
break;
|
||||||
|
case hullXAlignAt:
|
||||||
|
alignInterSpace = 40;
|
||||||
|
break;
|
||||||
|
case hullXXAlignAt:
|
||||||
|
case hullFlAlign:
|
||||||
|
alignInterSpace = 60;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return (col % 2) ? alignInterSpace : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
} // namespace lyx
|
} // namespace lyx
|
||||||
|
@ -261,8 +261,16 @@ protected:
|
|||||||
/// Column alignment for display of cell \p idx.
|
/// Column alignment for display of cell \p idx.
|
||||||
/// Must not be written to file!
|
/// Must not be written to file!
|
||||||
virtual char displayColAlign(idx_type idx) const;
|
virtual char displayColAlign(idx_type idx) const;
|
||||||
|
/// Column spacing for display of column \p col.
|
||||||
|
/// Must not be written to file!
|
||||||
|
virtual int displayColSpace(col_type col) const;
|
||||||
|
|
||||||
|
// The following two functions are used in InsetMathHull and
|
||||||
|
// InsetMathSplit.
|
||||||
/// The value of a fixed col align for a certain hull type
|
/// The value of a fixed col align for a certain hull type
|
||||||
static char colAlign(HullType type, col_type col);
|
static char colAlign(HullType type, col_type col);
|
||||||
|
/// The value of a fixed col spacing for a certain hull type
|
||||||
|
static int colSpace(HullType type, col_type col);
|
||||||
|
|
||||||
/// row info.
|
/// row info.
|
||||||
/// rowinfo_[nrows()] is a dummy row used only for hlines.
|
/// rowinfo_[nrows()] is a dummy row used only for hlines.
|
||||||
|
@ -382,6 +382,13 @@ char InsetMathHull::displayColAlign(idx_type idx) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int InsetMathHull::displayColSpace(col_type col) const
|
||||||
|
{
|
||||||
|
return colSpace(type_, col);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//FIXME: This has probably no effect and can be removed.
|
||||||
int InsetMathHull::defaultColSpace(col_type col)
|
int InsetMathHull::defaultColSpace(col_type col)
|
||||||
{
|
{
|
||||||
if (type_ == hullAlign || type_ == hullAlignAt)
|
if (type_ == hullAlign || type_ == hullAlignAt)
|
||||||
|
@ -111,6 +111,8 @@ public:
|
|||||||
///
|
///
|
||||||
int defaultColSpace(col_type col);
|
int defaultColSpace(col_type col);
|
||||||
///
|
///
|
||||||
|
int displayColSpace(col_type col) const;
|
||||||
|
///
|
||||||
char defaultColAlign(col_type col);
|
char defaultColAlign(col_type col);
|
||||||
///
|
///
|
||||||
char displayColAlign(idx_type idx) const;
|
char displayColAlign(idx_type idx) const;
|
||||||
|
@ -83,6 +83,17 @@ char InsetMathSplit::displayColAlign(idx_type idx) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int InsetMathSplit::displayColSpace(col_type col) const
|
||||||
|
{
|
||||||
|
if (name_ == "split" || name_ == "aligned" || name_ == "align")
|
||||||
|
return colSpace(hullAlign, col);
|
||||||
|
if (name_ == "alignedat")
|
||||||
|
return colSpace(hullAlignAt, col);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void InsetMathSplit::draw(PainterInfo & pi, int x, int y) const
|
void InsetMathSplit::draw(PainterInfo & pi, int x, int y) const
|
||||||
{
|
{
|
||||||
InsetMathGrid::draw(pi, x, y);
|
InsetMathGrid::draw(pi, x, y);
|
||||||
|
@ -41,6 +41,8 @@ public:
|
|||||||
///
|
///
|
||||||
int defaultColSpace(col_type) { return 0; }
|
int defaultColSpace(col_type) { return 0; }
|
||||||
///
|
///
|
||||||
|
int displayColSpace(col_type col) const;
|
||||||
|
///
|
||||||
char defaultColAlign(col_type);
|
char defaultColAlign(col_type);
|
||||||
///
|
///
|
||||||
char displayColAlign(idx_type idx) const;
|
char displayColAlign(idx_type idx) const;
|
||||||
|
Loading…
Reference in New Issue
Block a user