I want to type this equation in LaTeX. How do I type those vertical dots symbol?
[Tex/LaTex] How to type tensor multiplication with vertical dots
symbolstensor
Related Solutions
Here's one way. The gap is controlled by the \setstackgap
macro; The whole thing can be raised or lowered with a \raisebox
; the number of dots in the stack are the space-separated argument of the stack.
Note: you could stack any characters as such, not just dots. If the [usestackEOL]
option is passed to the package, the EOL separator is no longer a space, but a \\
character.
\documentclass{article}
\usepackage{stackengine}
%\stackMath
\setstackgap{S}{1pt}
\begin{document}
$A \Shortstack{. . . .}B$
$A \raisebox{-1.2pt}{\Shortstack{. . . . .}}B$
$A \setstackgap{S}{.5pt}\Shortstack{. . . . .}B$
\end{document}
If you want a version of \vdots
that is exactly as tall as a colon you could try to overlay a \cdot
on top of a :
. The code below, which is based on this excellent answer, does exactly this.
I'm actually defining several different versions of \threedots
with different spacing properties:
\threedotsord
has the same spacing as ordinary letters;\threedotsopen
and\threedotsclose
have the same spacing as opening and closing parentheses respectively;\threedotsbin
has the same spacing as a binary operator (like+
,-
,\times
,…);\threedotsrel
has the same spacing as a relation symbol (like=
,<
,\sim
,\rightorrow
, …).
Which version you need will depend on how you intend to use the symbol. Since you're talking about operator ordering, you will probably want to use \threedotsopen
and \threedotsclose
. For convenience, I defined a macro \oporder
that puts a pair of triple dots with the correct spacing around its argument.
\documentclass{article}
\makeatletter %% <- make @ usable in macro names
\newcommand*\superimpose[2]{%
\ooalign{$\m@th#1\@firstoftwo#2$\cr
\hidewidth$\m@th#1\@secondoftwo#2$\hidewidth}%
}
\makeatother %% <- revert @
%% You may want to rename these...
\newcommand*\threedotsord{\mathpalette\superimpose{{\mathop:}{\cdot}}} %% <- normal
\newcommand*\threedotsopen{\mathopen{\threedotsord}} %% <- spacing like (
\newcommand*\threedotsclose{\mathclose{\threedotsord}} %% <- spacing like )
\newcommand*\threedotsbin{\mathbin{\threedotsord}} %% <- spacing like +, -, ...
\newcommand*\threedotsrel{\mathrel{\threedotsord}} %% <- spacing like =, <, ...
\newcommand*\oporder[1]{\threedotsopen#1\threedotsclose} %% <- wraps argument in these
\begin{document}
Using the \verb|\mathopen| and \verb|\mathclose| versions is probably what you want:
\[
1 + \oporder{ x(t_1) x(t_2) x(t_3) } + \delta
\]
The spacing is nearly always the same as for ordinary atoms though:
\[
1 + \threedotsord x(t_1) x(t_2) x(t_3) \threedotsord + \delta
\]
Using \verb|\mathbin| or \verb|\mathrel| would be wrong in this context:
\[
1 + \threedotsbin x(t_1) x(t_2) x(t_3) \threedotsbin + \delta
\]
\[
1 + \threedotsrel x(t_1) x(t_2) x(t_3) \threedotsrel + \delta
\]
This also works in superscripts and subscripts
\[
X_{\oporder{xyz}^{\oporder{abc}}}
\]
\end{document}
Note that \mathop
vertically centres its argument with respect to the math axis whenever it is applied to a single character, as remarked e.g. here.
You could also centre the \cdot
with respect to the :
, but this is more work (if you want to do it automatically, without guessing the amount to lower it by).
Best Answer
These are obviously binary operators, so they should carry the same spacing. That is, use whatever works and then wrap it in
\mathbin
. While the original picture showed the bottom dots resting on the baseline, I think it would be more correct to center the symbols on the math axis (where the\cdot
is placed). Here is a simple possibility, that does not allow for size changes in scripts, but does respect global size changes like\large
.Allowing for changes in scripts is a good deal harder, but could be done with the aid of some of the internals of the
mathdots
package.