You should set the parameter \lineskiplimit
to a negative value to avoid the lines from spreading. This behavior is explained in the TeXbook pg.78.
The TeX engine adds more space between the lines if their separation is smaller than \lineskiplimit
; therefore setting it to a large negative value has the effect that a correction (which goes under the name \lineskip
) is never applied.
Therefore simply add \setlength{\lineskiplimit}{-100pt}
to the preamble of your document. All the lines will be equally spaced no matter their content. This is what you want.
Taking the MWE from @jfbu that's what the output looks like after setting the lineskiplimit:
You can define the symbols yourself:
\documentclass{article}
\usepackage{lucimatx}
\usepackage[fleqn]{amsmath}
\usepackage{pict2e}
\makeatletter
\DeclareRobustCommand{\bigplus}{%
\mathop{\vphantom{\sum}\mathpalette\@bigplus\relax}\slimits@
}
\newcommand{\@bigplus}[2]{\vcenter{\hbox{\make@bigplus{#1}}}}
\newcommand{\make@bigplus}[1]{%
\sbox\z@{$\m@th#1\sum$}%
\setlength{\unitlength}{\wd\z@}%
\begin{picture}(1.4,1.4)
%\roundcap
\linethickness{.17ex}
\Line(.7,.14)(.7,1.26)
\Line(.14,.7)(1.26,.7)
\end{picture}%
}
\DeclareRobustCommand{\bigtimes}{%
\mathop{\vphantom{\sum}\mathpalette\@bigtimes\relax}\slimits@
}
\newcommand{\@bigtimes}[2]{\vcenter{\hbox{\make@bigtimes{#1}}}}
\newcommand{\make@bigtimes}[1]{%
\sbox\z@{$\m@th#1\sum$}%
\setlength{\unitlength}{\wd\z@}%
\begin{picture}(1,1)
%\roundcap
\linethickness{.17ex}
\Line(.1,.1)(.9,.9)
\Line(.1,.9)(.9,.1)
\end{picture}%
}
\makeatother
\begin{document}
$\bigplus_{i\in I} X_i \bigtimes_{i\in I} X_i \sum_{i\in I} X_i \prod_{i\in I} X_i$
\bigskip
$\displaystyle
\bigplus_{i\in I} X_i \bigtimes_{i\in I} X_i \sum_{i\in I} X_i \prod_{i\in I} X_i$
\end{document}
I left \roundcap
(but commented), because it would be useful when Computer Modern is used instead of Lucida.
As you see, the width of \bigtimes
is the same as \sum
, whereas \bigplus
is 40% wider (so the two symbols are essentially a rotation of each other).
Experiment with \linethickness
until you're satisfied.
Edit September 2019
This should fix the slight misalignment of the subscript, as witnessed in the last two lines, with the guide rule.
\documentclass{article}
\usepackage{lucimatx}
\usepackage[fleqn]{amsmath}
\usepackage{pict2e}
\makeatletter
\DeclareRobustCommand{\bigplus}{%
\mathop{\vphantom{\sum}\mathpalette\@bigplus\relax}\slimits@
}
\newcommand{\@bigplus}[2]{\smash{\vcenter{\hbox{\make@bigplus{#1}}}}}
\newcommand{\make@bigplus}[1]{%
\sbox\z@{$\m@th#1\sum$}%
\setlength{\unitlength}{\wd\z@}%
\begin{picture}(1.4,1.4)
%\roundcap
\linethickness{.17ex}
\Line(.7,.14)(.7,1.26)
\Line(.14,.7)(1.26,.7)
\end{picture}%
}
\DeclareRobustCommand{\bigtimes}{%
\mathop{\vphantom{\sum}\mathpalette\@bigtimes\relax}\slimits@
}
\newcommand{\@bigtimes}[2]{\vcenter{\hbox{\make@bigtimes{#1}}}}
\newcommand{\make@bigtimes}[1]{%
\sbox\z@{$\m@th#1\sum$}%
\setlength{\unitlength}{\wd\z@}%
\begin{picture}(1,1)
%\roundcap
\linethickness{.17ex}
\Line(.1,.1)(.9,.9)
\Line(.1,.9)(.9,.1)
\end{picture}%
}
\makeatother
\begin{document}
$
\bigplus_{i\in I} X_i \bigtimes_{i\in I} X_i \sum_{i\in I} X_i \prod_{i\in I} X_i
\bigcup_{i\in I} X_i
$
\bigskip
$\displaystyle
\bigplus_{i\in I} X_i \bigtimes_{i\in I} X_i \sum_{i\in I} X_i \prod_{i\in I} X_i
\bigcup_{i\in I} X_i
$
\bigskip
\def\test{\makebox[0pt][l]{\kern-2cm\vrule height 0pt depth 0.1pt width \textwidth}}
$
\bigplus_{i\in I\test} X_i \bigtimes_{i\in I} X_i \sum_{i\in I} X_i \prod_{i\in I} X_i
\bigcup_{i\in I} X_i
$
\bigskip
$\displaystyle
\bigplus_{i\in I\test} X_i \bigtimes_{i\in I} X_i \sum_{i\in I} X_i \prod_{i\in I} X_i
\bigcup_{i\in I} X_i
$
\end{document}
Best Answer
It's as easy as this:
Explanation. The TX/NewTX packages do no change to the basic math font setup, where
\mathcal
is defined byin order not to waste a math group. For your purpose a new math group is obviously necessary, so we just need to look in
newtxmath.sty
what's the definition of thesymbols
math symbol font and we find(line numbers added for reference). So it's sufficient to change
\DeclareSymbolFont{symbols}
with\DeclareMathAlphabet{\mathcal}
and\SetSymbolFont{symbols}
with\SetMathAlphabet{\mathcal}
.It's better to use the fonts provided by NewTX that have refined metrics with respect to the older TX package and also is actively maintained, contrary to the old package.