Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I would like to implement something akin to the following in LaTeX, perhaps in tikz. I would be very grateful for any help.

screenshot

share|improve this question
3  
+1 for the brilliant diagram –  David Carlisle Nov 29 '13 at 16:24
    
Thanks @DavidCarlisle for said diagram! –  J G Nov 29 '13 at 16:29
    
Would one with arrows work? –  azetina Nov 29 '13 at 16:33
    
@azetina Perhaps I cannot imagine how arrows would work out, however. –  J G Nov 29 '13 at 16:40

5 Answers 5

up vote 4 down vote accepted

Here's a tikz solution:

\documentclass[border=10pt]{standalone}
\usepackage{tikz,amsmath}

\newcommand\tikzmark[2][]{
  \tikz[remember picture,inner sep=0,outer sep=0,baseline=(#1.base)]{\node(#1){$#2$};}
}

\newlength{\bubblesize}
\setlength{\bubblesize}{6pt}

\begin{document}

$ \dfrac{\tikzmark[topleft]{3}}{\tikzmark[bottomleft]{4}}   =
    \dfrac{\tikzmark[topright]{x}}{\tikzmark[bottomright]{10}} $

\begin{tikzpicture} [remember picture,overlay]
    \foreach \fracpart in {topleft,topright,bottomleft,bottomright}{
        \begin{scope}[shift=(\fracpart)]
            \coordinate (a\fracpart) at (60:\bubblesize);
            \coordinate (b\fracpart) at (240:\bubblesize);
            \coordinate (c\fracpart) at (120:\bubblesize);
            \coordinate (d\fracpart) at (300:\bubblesize);
        \end{scope}
    }   
    \draw [black!20] (abottomright) arc (60:-120:\bubblesize) -- (btopleft) arc (240:60:\bubblesize) -- cycle;
    \draw [black!20] (cbottomleft) arc (120:300:\bubblesize) -- (dtopright) arc (-60:120:\bubblesize) -- cycle;
\end{tikzpicture}

\end{document}

cross multiplying

share|improve this answer

This method uses highlight rather than drawing borders (because I don't know how to get a transparent color for double :/)

Code

\documentclass{article}
\usepackage{tikz,amsmath}

\newcommand\tikzmark[2][]{
  \tikz[remember picture,inner sep=0,outer sep=0,baseline=(#1.base)]{\node(#1){$#2$};}
}
\tikzset{
  crossmult/.style={double distance=9pt,line cap=round,opacity=.1,shorten >=3pt,shorten <=3pt,#1}
}

\begin{document}

\[
  \frac{\tikzmark[a]{3}}{\tikzmark[b]{4}}
  =
  \frac{\tikzmark[c]{x}}{\tikzmark[d]{10}}
\]

\tikz[remember picture,overlay]{
  \draw[crossmult=red](a.north west)--(d.south east);
  \draw[crossmult=green](b.south west)--(c.north east);
}

\end{document}

Output

enter image description here

share|improve this answer

Update it works better with fewer control points enter image description here

\documentclass{article}

\usepackage{tikz}

\usetikzlibrary{hobby}


\begin{document}


\Large

\[
    \frac{\tikz[remember picture,inner sep=1pt, outer sep=0pt]{\node (A){$3$};}}
         {\tikz[remember picture,inner sep=1pt, outer sep=0pt]{\node (B){$4$};}}
          = 
    \frac{\tikz[remember picture,inner sep=1pt, outer sep=0pt]{\node (C){$x$};}}
         {\tikz[remember picture,inner sep=1pt, outer sep=0pt]{\node (D){$10$};}}
 \]


\begin{tikzpicture}[remember picture, overlay]
\draw[draw=red](A.north west) 
to[closed,curve through={ (A.south west) .. (D.south west) .. 
(D.south east)  .. (D.north east) .. (A.north east) 
}](A.north west);
\draw[draw=green](C.north east) 
to[closed,curve through={(C.south east) .. (B.south east) .. (B.south west) .. 
(B.north west) .. (C.north west)
}](C.north east);
\end{tikzpicture}
\end{document}

I fear I haven't got the control points quite right (it's what comes of stealing code you don't understand from random answers on this site:-) , but something like

enter image description here

Updated with more symmetric use of code points.

\documentclass{article}
\usepackage{amsmath,cancel}
\usepackage{tikz}
%\usetikzlibrary{fit,shapes.geometric}
%\usetikzlibrary{tikzmark}
\usetikzlibrary{shapes.geometric} % required for the ellipse shape
\usetikzlibrary{arrows, backgrounds, calc, hobby, positioning}


\makeatletter


\begin{document}






\Large

\[
    \frac{\tikz[remember picture,inner sep=0pt, outer sep=0pt]{\node (A){$3$};}}
        {\tikz[remember picture,inner sep=0pt, outer sep=0pt]{\node (B){$4$};}}
          = 
    \frac{\tikz[remember picture,inner sep=0pt, outer sep=0pt]{\node (C){$x$};}}
        {\tikz[remember picture,inner sep=0pt, outer sep=0pt]{\node (D){$10$};}}
 \]

\vspace*{-1.32cm}\hspace*{4.75cm}%I guess I shouldn't need this
\begin{tikzpicture}[]
\draw[draw=red](A.north) 
to[closed,curve through={(A.north west) .. (A.west) .. (A.south west)
.. (D.south west) .. 
(D.south)..(D.south east) ..(D.east) .. (D.north east) .. (A.north east) 
}](A.north);
\draw[draw=green](C.north) 
to[closed,curve through={(C.north east).. (C.east) .. (C.south east) 
.. (B.south east) .. (B.south) .. (B.south west) .. 
(B.west)..(B.north west)  .. (C.north west) 
}](C.north);

\end{tikzpicture}
\end{document}
share|improve this answer
    
Oh my...lovely. can't beat that :-) –  azetina Nov 29 '13 at 16:28
    
was the artistic quality of the result consciously implemented in the code? –  jfbu Nov 29 '13 at 16:29
1  
There are now two artistic examples you can submit to the 2014 TUG's Calendar. Great job. –  Manuel Nov 29 '13 at 16:48
    
They look like lemons! –  Istvan Chung Nov 29 '13 at 23:46

A pstricks approach (requiring LaTeX or XeLaTeX):

enter image description here

\documentclass{article}
\usepackage{pst-node,xcolor}% http://tug.org/PSTricks/main.cgi/
\begin{document}
\[
  \frac{\Rnode{lt}{3}}{\Rnode{lb}{4}} = \frac{\Rnode{rt}{x}}{\Rnode{rb}{10}}
\]
%\ncline{->}{lt}{rb}\ncline{->}{lb}{rt} Arrows
\psset{nodesep=2pt,boxsize=.2,linearc=.2,linewidth=.5pt,linecolor=black!20,linestyle=dashed}% Boxes
\ncbox{lt}{rb}\ncbox{lb}{rt}
\end{document}

Here is another version:

enter image description here

\documentclass{article}
\usepackage{pst-node}% http://tug.org/PSTricks/main.cgi/
\usepackage{xcolor}% http://ctan.org/pkg/xcolor
\begin{document}
\psset{boxsize=.2,linewidth=.5pt,linecolor=black!30,fillstyle=solid,fillcolor=black!15}% Boxes
\[
  \frac{\Rnode{lt}{\psframebox{3}}}{\Rnode{lb}{\psframebox{4}}} \rnode{eq}{\phantom{=}} \frac{\Rnode{rt}{\psframebox{x}}}{\Rnode{rb}{\psframebox{10}}}
\]
\psset{angleA=0,angleB=180,fillstyle=none}
\nccurve{->}{lt}{rb}\nccurve{->}{lb}{rt}\rput(eq){=}
\end{document}
share|improve this answer
    
I like this a lot. great contribution –  azetina Nov 29 '13 at 18:55
1  
Honestly, to me it looks like two infinite symbols that happen to be there for no clear reason... –  Matteo Italia Nov 30 '13 at 3:41

The following requires two runs. I know its not what you really asked for but it can help somehow. I think.....

enter image description here

\documentclass[dvipsnames]{article}
\usepackage{amsmath}
\usepackage{tikz}

\newcommand{\tikzmark}[1]{\tikz[overlay,remember picture] \node[inner xsep=0pt,outer sep=0pt] (#1) {};}
%-------------- Cross Multiply Commands ---------------------------------------------
\newcommand{\crossmultiplynd}[2]{%
    \tikz[remember picture, overlay]{
        \draw[OrangeRed,thick,<-,shorten <=0pt] 
            (#1.east) -- (#2.north west);}}
\newcommand{\crossmultiplydn}[2]{%
    \tikz[remember picture, overlay]{
        \draw[Cerulean,thick,->,shorten >=0pt] 
            (#1.north east) -- (#2.west);}}
%------------------------------------------------------------------------------------               
\begin{document}
\[
\dfrac{a \tikzmark{a}}{b\tikzmark{b}}=\dfrac{\tikzmark{c}c}{\tikzmark{d}d}  
\crossmultiplynd{a}{d}
\crossmultiplydn{b}{c}
\]
\end{document}
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.