17

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

screenshot

2
  • Would one with arrows work?
    – azetina
    Nov 29, 2013 at 16:33
  • @azetina Perhaps I cannot imagine how arrows would work out, however.
    – J G
    Nov 29, 2013 at 16:40

5 Answers 5

5

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

0
25

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

20

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}
4
  • Oh my...lovely. can't beat that :-)
    – azetina
    Nov 29, 2013 at 16:28
  • was the artistic quality of the result consciously implemented in the code?
    – user4686
    Nov 29, 2013 at 16:29
  • 1
    There are now two artistic examples you can submit to the 2014 TUG's Calendar. Great job.
    – Manuel
    Nov 29, 2013 at 16:48
  • They look like lemons!
    – lily
    Nov 29, 2013 at 23:46
19

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}
2
  • I like this a lot. great contribution
    – azetina
    Nov 29, 2013 at 18:55
  • 1
    Honestly, to me it looks like two infinite symbols that happen to be there for no clear reason... Nov 30, 2013 at 3:41
10

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}

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .