# Draw rays between matrix elements

I would like to draw the following mathematical expression.

I tried a lot with the tabular environment, but I could not manage to get the wanted output. Can somebody help me with this?

Another question is how to draw diagonal rays in the following manner:

1. In the determinant under x, rays from b1 to c2 and from b2 to c1.
2. In the determinant under y, rays from c1 to a2 and from c2 to a1.
3. In the determinant under 1, rays from a1 to b2 and from a2 to b1.
• Have you tried putting a \begin{vmatrix}...\end{vmatrix} in the \frac{}{}? Not pretty perhaps, but should get the first part of your question? – Fredrik Johansson Feb 16 '16 at 9:54
• no i haven't tried actually not aware from it – Maths4Sandy Feb 16 '16 at 9:59
• Welcome to TeX.SX!! Please post the code that you have tried. It gives people something to work with. It is best to post a full minimal working example that starts with a \documentclass command, has a minimal preamble and then \begin{document}...\end{document}. This makes it much easier for people to help you --- and much ore likely that they will! – Andrew Feb 16 '16 at 10:02

\documentclass{article}
\usepackage{mathtools}
\begin{document}
$\frac{x}{\begin{vmatrix}b_1&c_1\\ b_2&c_2 \end{vmatrix}}=\frac{y}{\begin{vmatrix} c_1&a_1 \\ c_2&a_2 \end{vmatrix}}=\frac{1}{\begin{vmatrix} a_1&b_1\\a_2&b_2 \end{vmatrix}}$

$\displaystyle\frac{x}{\begin{vmatrix}b_1&c_1\\ b_2&c_2 \end{vmatrix}}=\frac{y}{\begin{vmatrix} c_1&a_1 \\ c_2&a_2 \end{vmatrix}}=\frac{1}{\begin{vmatrix} a_1&b_1\\a_2&b_2 \end{vmatrix}}$
\end{document}


The difference between the two is the \displaystyle which you may or may not like.

• You done it. But how to draw that diagonally rays. – Maths4Sandy Feb 16 '16 at 10:23

From table 3.6 of The not so short introduction to latex version 5.04, you will find the two symbols \nearrow and \searrow. You can add a dummy column and dummy row (both in the middle) to your determinant and put both these symbols in the middle cell. To make them overlap, I used negative spacing. This is not an elegant solution, but you don't need any additional packages other than amsmath. I have also another not so elegant solution based on raisebox from https://en.wikibooks.org/wiki/LaTeX/Boxes#raisebox

\documentclass[12pt,a5paper]{article}
\usepackage{amsmath}
\begin{document}
a\\
$$\begin{vmatrix} b_1 & & c_1\\ & \nearrow \hspace{-1em} \searrow &\\ b_2 & & c_2\\ \end{vmatrix}$$
\\
%another solution
$$\begin{vmatrix} b_1 & & c_1\\ b_2 & & c_2\\ \end{vmatrix}$$
\hspace{-3.2em} \raisebox{-0.3ex}\text{{$\nearrow$}}
\hspace{-1.7em} \raisebox{-0.3ex}\text{{$\searrow$}}
\end{document}


• you gave the answer of my second question. But now i have a problem that how can i used your codes in the previous answer given by Fredrik Johansson – Maths4Sandy Feb 17 '16 at 4:40
• Sorry friend. I done it see i giving my solution. – Maths4Sandy Feb 17 '16 at 4:44
• \documentclass[12pt,a5paper]{article} \usepackage{amsmath} \begin{document} $$\dfrac{x}{ \begin{vmatrix} b_1 & & c_1\\ & \nearrow \hspace{-1em} \searrow &\\ b_2 & & c_2\\ \end{vmatrix} }=\dfrac{y}{ \begin{vmatrix} c_1 & & a_1\\ & \nearrow \hspace{-1em} \searrow &\\ c_2 & & a_2\\ \end{vmatrix} }=\dfrac{1}{ \begin{vmatrix} a_1 & & b_1\\ & \nearrow \hspace{-1em} \searrow &\\ a_2 & & b_2\\ \end{vmatrix} }$$ \end{document} – Maths4Sandy Feb 17 '16 at 4:50

Code copied pasted from user jfbu's answer to Draw rays between matrix elements. Quite a mouthful, but it avoids big graphics engines. Two compilations needed each time. Works with pdflatex.

\documentclass{article}

% from https://tex.stackexchange.com/a/277474/4686 (user jfbu)
% --------------------------------START--------------------------------
% matrices
\usepackage{amsmath}

% I discovered a bad interaction of eso-pic with xetex
% which is fixed for an unknown reason to me by loading
% package geometry
\usepackage{geometry}

% transforms the page into a LaTeX picture
\usepackage{eso-pic}

% enhances original LaTeX picture
% there are other packages
% unfortunately I don't know how to draw dashed lines with pict2e
\usepackage{pict2e}

% for some color
\usepackage{color}

\makeatletter
\newbox\JayBox
\def\JayNodeCount{0}%

\def\zapspaces #1 #2{#1#2\zapspaces }

\newcommand\Node [2]{%
% make the code work also if no amsmath
\ifcsname ifmeasuring@\endcsname
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\unless\ifmeasuring@}\iftrue
\xdef\JayNodeCount{\the\numexpr\JayNodeCount+\@ne}%
\ifcsname JAY@nodecoords@\romannumeral\JayNodeCount\endcsname
\global
\expandafter\let
\csname JAY@nodename@\expandafter\zapspaces\detokenize{#1} \@gobble
\expandafter\endcsname
\csname JAY@nodecoords@\romannumeral\JayNodeCount\endcsname
\else\typeout{========> New JAY node: run LaTeX again ! <========}%
\fi
\sbox\JayBox{$\m@th #2$}%
\pdfsavepos
\edef\JAY@temp{%
\global
\def\@backslashchar
JAY@nodecoords@\romannumeral\JayNodeCount
{{\noexpand\the\numexpr\pdflastxpos+\number\wd\JayBox/2}%
{\noexpand\the\numexpr\pdflastypos+\number\ht\JayBox/2}%
{\number\wd\JayBox/2}{\number\ht\JayBox/2}}%
}%
\write\@mainaux\expandafter{\JAY@temp}%
\fi
#2%
}%

\def\JAY@north{north}
\def\JAY@south{south}
\def\JAY@west {west}
\def\JAY@east {east}
\def\JAY@northwest{northwest}
\def\JAY@northeast{northeast}
\def\JAY@southeast{southeast}
\def\JAY@southwest{southwest}

\def\JAY@setupAnode #1#2#3#4%
{%
\ifx\JAY@Aspec\JAY@northwest
\fi
\ifx\JAY@Aspec\JAY@northeast
\fi
\ifx\JAY@Aspec\JAY@southeast
\fi
\ifx\JAY@Aspec\JAY@southwest
\fi
}%

\def\JAY@setupBnode #1#2#3#4%
{%
\def\JAY@Bx {#1}\def\JAY@By {#2}\def\JAY@Bdx {#3}\def\JAY@Bdy {#4}%
\ifx\JAY@Bspec\JAY@north\edef\JAY@By {\the\numexpr\JAY@By+\JAY@Bdy}\fi
\ifx\JAY@Bspec\JAY@south\edef\JAY@By {\the\numexpr\JAY@By-\JAY@Bdy}\fi
\ifx\JAY@Bspec\JAY@west \edef\JAY@Bx {\the\numexpr\JAY@Bx-\JAY@Bdx}\fi
\ifx\JAY@Bspec\JAY@east \edef\JAY@Bx {\the\numexpr\JAY@Bx+\JAY@Bdx}\fi
\ifx\JAY@Bspec\JAY@northwest
\edef\JAY@By {\the\numexpr\JAY@By+\JAY@Bdy}%
\edef\JAY@Bx {\the\numexpr\JAY@Bx-\JAY@Bdx}%
\fi
\ifx\JAY@Bspec\JAY@northeast
\edef\JAY@By {\the\numexpr\JAY@By+\JAY@Bdy}%
\edef\JAY@Bx {\the\numexpr\JAY@Bx+\JAY@Bdx}%
\fi
\ifx\JAY@Bspec\JAY@southeast
\edef\JAY@By {\the\numexpr\JAY@By-\JAY@Bdy}%
\edef\JAY@Bx {\the\numexpr\JAY@Bx+\JAY@Bdx}%
\fi
\ifx\JAY@Bspec\JAY@southwest
\edef\JAY@By {\the\numexpr\JAY@By-\JAY@Bdy}%
\edef\JAY@Bx {\the\numexpr\JAY@Bx-\JAY@Bdx}%
\fi
}%

\newcommand\NodeLine [2][]{\def\JAY@opt{#1}\JAY@NodeLine #2\JAY@NodeLine}

\def\JAY@NodeLine #1[#2]#3->#4[#5]#6\JAY@NodeLine
{%
\edef\JAY@nodeA {\expandafter\zapspaces\detokenize{#1} \@gobble}%
\edef\JAY@nodeB {\expandafter\zapspaces\detokenize{#4} \@gobble}%
\let\JAY@temp\empty
\ifcsname JAY@nodename@\JAY@nodeA\endcsname
\ifcsname JAY@nodename@\JAY@nodeB\endcsname
\edef\JAY@Aspec {\zapspaces #2 \@gobble}%
\edef\JAY@Bspec {\zapspaces #5 \@gobble}%
\expandafter\expandafter\expandafter
\JAY@setupAnode\csname JAY@nodename@\JAY@nodeA\endcsname
\expandafter\expandafter\expandafter
\JAY@setupBnode\csname JAY@nodename@\JAY@nodeB\endcsname
\edef\JAY@temp {%
% THIS IS THE ONLY PLACE WHERE THE PICTURE SYNTAX IS USED
% here we use \Line from package pict2e
% The optional argument to \NodeLine contains optional commands
{\setlength{\unitlength}{1sp}%
\linethickness{1pt}%
\unexpanded\expandafter{\JAY@opt}%
\noexpand\Line (\JAY@Ax,\JAY@Ay)(\JAY@Bx,\JAY@By)%
}}}%
\fi\fi
\JAY@temp
}
\makeatother
% --------------------------------FINISH-------------------------------

\begin{document}

\Huge

$\frac{x} {\begin{vmatrix}\Node{B1}{b_1}&\Node{C1}{c_1}\\ \Node{B2}{b_2}&\Node{C2}{c_2}\end{vmatrix}} = \frac{y} {\begin{vmatrix} \Node{C1y}{c_1}&\Node{A1y}{a_1} \\ \Node{C2y}{c_2}&\Node{A2y}{a_2} \end{vmatrix}} = \frac{1} {\begin{vmatrix} a_1&b_1\\a_2&b_2 \end{vmatrix}}$
% No need to be inside the display, but
% make sure to issue these commands on the same page !

% TWO COMPILATIONS NEEDED AFTER ANY MODIFICATION

\NodeLine[\color{blue}]{B1[south east] -> C2[north west]}
\NodeLine[\color{red}] {C1[south west]-> B2[north east]}
% for some reason B2[east] gives more pleasing result than B2[north east]
% note that B2 alone does not work, must be B2[]

\NodeLine[\color{green}]{C1y[] -> A2y[]}
\NodeLine[\color{magenta}] {A1y[]-> C2y[]}

\end{document}