2

I have drawn the following figure: enter image description here

As you can see, the arcs are too big for the page. So, I try to scale the image using [scale=0.5].

This works for the straight line segments perfectly. However, instead of scaling the arcs, TikZ does not change the size, but makes their centers closer to each other.

enter image description here

Here is a MWE for the first picture.

\documentclass[a4paper]{article}
\usepackage{tikz}
\tikzset{
    pics/carc/.style args={#1:#2:#3}{
        code={
            \draw[pic actions] (#1:#3) arc(#1:#2:#3);
        }
    }
}
\begin{document}


\begin{figure}[htbp]
    \centering
    \begin{tikzpicture}[scale=0.5]
    \tikzstyle{disk} = [draw, thick, circle,fill=none]
    \tikzstyle{center} = [draw,shape=rectangle,fill=blue]
    \tikzstyle{intersection} = [draw, circle ,fill=darkgray, inner sep=0.8mm]
    \node at (-6,0) {$A$};
    \node at (1,0) {$B$};
    \node at (-2,-6) {$C$};
    \draw[thick] (-8,0)  pic{carc=-100:50:60mm};
    \draw[thick] (2,0)  pic{carc=130:300:60mm};
    \draw[thick,red] (3.2,0)  pic{carc=130:300:60mm};
    \draw[thick] (-2,-14)  pic{carc=30:150:100mm};
    \draw[dashed] (-3,6)--(-3, -6);
    \draw[red] (-2.8,6)--(-2.8, -6);
    \draw[blue] (-2.2,6)--(-2.2, -6);
    \end{tikzpicture}
    \caption{Zoomed in}
    \label{fig:zoom}
\end{figure}

\end{document}

What can I do to scale the arcs as well?

  • 2
    Try \begin{tikzpicture}[scale=0.5, transform shape] – CarLaTeX Nov 19 '17 at 17:32
  • @CarLaTeX that did the trick. Can you post this as an answer? – padawan Nov 19 '17 at 17:36
  • I'll do it asap (I have no time at the moment) :) – CarLaTeX Nov 19 '17 at 17:55
  • Could also use \scalebox{<scale>}{<tikz picture>} – aidangallagher4 Nov 19 '17 at 18:22
  • @aidangallagher4 what is the difference in theory? – padawan Nov 19 '17 at 18:22
1

You can use transform shape, see Section 17.7 of the TikZ & PGF Manual (for Version 3.0.1a).

By the way, look also at this post: Should \tikzset or \tikzstyle be used to define TikZ styles?.

\documentclass[a4paper]{article}
\usepackage{tikz}
\tikzset{
    pics/carc/.style args={#1:#2:#3}{
        code={
            \draw[pic actions] (#1:#3) arc(#1:#2:#3);
        }
    }
}
\begin{document}
    \begin{figure}[htbp]
        \centering
        \begin{tikzpicture}[
            scale=0.5, 
            transform shape,
            disk/.style={draw, thick, circle, fill=none},
            center/.style={draw,shape=rectangle,fill=blue},
            intersection/.style={draw, circle, fill=darkgray, inner sep=0.8mm}
            ]
            \node at (-6,0) {$A$};
            \node at (1,0) {$B$};
            \node at (-2,-6) {$C$};
            \draw[thick] (-8,0) pic{carc=-100:50:60mm};
            \draw[thick] (2,0) pic{carc=130:300:60mm};
            \draw[thick,red] (3.2,0) pic{carc=130:300:60mm};
            \draw[thick] (-2,-14) pic{carc=30:150:100mm};
            \draw[dashed] (-3,6) -- (-3,-6);
            \draw[red] (-2.8,6) -- (-2.8,-6);
            \draw[blue] (-2.2,6) -- (-2.2,-6);
        \end{tikzpicture}
        \caption{Zoomed in\label{fig:zoom}}
    \end{figure}
\end{document}

enter image description here

Or, if you don't want to change the node text size, add it only to the draw with the pics:

\documentclass[a4paper]{article}
\usepackage{tikz}
\tikzset{
    pics/carc/.style args={#1:#2:#3}{
        code={
            \draw[pic actions] (#1:#3) arc(#1:#2:#3);
        }
    }
}
\begin{document}
    \begin{figure}[htbp]
        \centering
        \begin{tikzpicture}[
            scale=0.5, 
            disk/.style={draw, thick, circle, fill=none},
            center/.style={draw,shape=rectangle,fill=blue},
            intersection/.style={draw, circle, fill=darkgray, inner sep=0.8mm}
            ]
            \node at (-6,0) {$A$};
            \node at (1,0) {$B$};
            \node at (-2,-6) {$C$};
            \draw[thick,transform shape,
            ] (-8,0) pic{carc=-100:50:60mm};
            \draw[thick,transform shape] (2,0) pic{carc=130:300:60mm};
            \draw[thick,red,transform shape] (3.2,0) pic{carc=130:300:60mm};
            \draw[thick,transform shape] (-2,-14) pic{carc=30:150:100mm};
            \draw[dashed] (-3,6) -- (-3,-6);
            \draw[red] (-2.8,6) -- (-2.8,-6);
            \draw[blue] (-2.2,6) -- (-2.2,-6);
        \end{tikzpicture}
        \caption{Zoomed in\label{fig:zoom}}
    \end{figure}
\end{document}

enter image description here

0

The pic is not scaled correctly. You should separately scale=0.5 in the carc definition

  \documentclass[a4paper]{article}
\usepackage{tikz}
\tikzset{
    pics/carc/.style args={#1:#2:#3}{
        code={
            \draw[pic actions,scale=0.5] (#1:#3) arc(#1:#2:#3);
        }
    }
}
\begin{document}


    \begin{figure}[htbp]
        \centering
        \begin{tikzpicture}[scale=0.5]
        \tikzstyle{disk} = [draw, thick, circle,fill=none]
        \tikzstyle{center} = [draw,shape=rectangle,fill=blue]
        \tikzstyle{intersection} = [draw, circle ,fill=darkgray, inner sep=0.8mm]
        \node at (-6,0) {$A$};
        \node at (1,0) {$B$};
        \node at (-2,-6) {$C$};
        \draw[thick] (-8,0)  pic{carc=-100:50:60mm};
        \draw[thick] (2,0)  pic{carc=130:300:60mm};
        \draw[thick,red] (3.2,0)  pic{carc=130:300:60mm};
        \draw[thick] (-2,-14)  pic{carc=30:150:100mm};
        \draw[dashed] (-3,6)--(-3, -6);
        \draw[red] (-2.8,6)--(-2.8, -6);
        \draw[blue] (-2.2,6)--(-2.2, -6);
        \end{tikzpicture}
        \caption{Zoomed in}
        \label{fig:zoom}
    \end{figure}

\end{document}

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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