Non scalable unit in tikz











up vote
9
down vote

favorite
1












Is there a non scalable unit in tikz?



I have the following picture,



    documentclass{report}
usepackage{tikz}
begin{document}
begin{tikzpicture}[>=latex, scale=2]
draw[->] (0,0) -- (2,1);
filldraw (0,0) circle[radius=0.05cm] node[anchor=north] {$P$}
(2,1) circle[radius=0.05cm] node[anchor=north] {$Q$};
end{tikzpicture}
end{document}


Some elements, like the line width, the arrowheads or the text aren't affected by the scale=2 option. I would like the circles to behave in the same fashion. Is this possible? I tried using different units for the circle radius (cm, pt, em) but I had no luck.










share|improve this question




























    up vote
    9
    down vote

    favorite
    1












    Is there a non scalable unit in tikz?



    I have the following picture,



        documentclass{report}
    usepackage{tikz}
    begin{document}
    begin{tikzpicture}[>=latex, scale=2]
    draw[->] (0,0) -- (2,1);
    filldraw (0,0) circle[radius=0.05cm] node[anchor=north] {$P$}
    (2,1) circle[radius=0.05cm] node[anchor=north] {$Q$};
    end{tikzpicture}
    end{document}


    Some elements, like the line width, the arrowheads or the text aren't affected by the scale=2 option. I would like the circles to behave in the same fashion. Is this possible? I tried using different units for the circle radius (cm, pt, em) but I had no luck.










    share|improve this question


























      up vote
      9
      down vote

      favorite
      1









      up vote
      9
      down vote

      favorite
      1






      1





      Is there a non scalable unit in tikz?



      I have the following picture,



          documentclass{report}
      usepackage{tikz}
      begin{document}
      begin{tikzpicture}[>=latex, scale=2]
      draw[->] (0,0) -- (2,1);
      filldraw (0,0) circle[radius=0.05cm] node[anchor=north] {$P$}
      (2,1) circle[radius=0.05cm] node[anchor=north] {$Q$};
      end{tikzpicture}
      end{document}


      Some elements, like the line width, the arrowheads or the text aren't affected by the scale=2 option. I would like the circles to behave in the same fashion. Is this possible? I tried using different units for the circle radius (cm, pt, em) but I had no luck.










      share|improve this question















      Is there a non scalable unit in tikz?



      I have the following picture,



          documentclass{report}
      usepackage{tikz}
      begin{document}
      begin{tikzpicture}[>=latex, scale=2]
      draw[->] (0,0) -- (2,1);
      filldraw (0,0) circle[radius=0.05cm] node[anchor=north] {$P$}
      (2,1) circle[radius=0.05cm] node[anchor=north] {$Q$};
      end{tikzpicture}
      end{document}


      Some elements, like the line width, the arrowheads or the text aren't affected by the scale=2 option. I would like the circles to behave in the same fashion. Is this possible? I tried using different units for the circle radius (cm, pt, em) but I had no luck.







      tikz-pgf scale






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 16 hours ago









      jfbu

      45.6k65147




      45.6k65147










      asked 17 hours ago









      mendus

      1045




      1045






















          2 Answers
          2






          active

          oldest

          votes

















          up vote
          9
          down vote













          You could use a node instead of a circle. nodes don't scale either:



           documentclass{report}
          usepackage{tikz}
          begin{document}
          begin{tikzpicture}[>=latex, scale=2]
          draw[->] (0,0) -- (2,1);
          filldraw (0,0) node[circle,inner sep=0.025cm,fill=black]{} node[anchor=north] {$P$}
          (2,1) circle[radius=0.05cm] node[anchor=north] {$Q$};
          end{tikzpicture}
          end{document}


          enter image description here






          share|improve this answer




























            up vote
            7
            down vote













            Yes, scale really scales mainly distances, not line widths etc. UPDATE: I misread the question, sorry, and big thanks to Paul Paulsen for pointing this out. You can just divide out the scale factor in the circle radii.



            documentclass{report}
            usepackage{tikz}
            begin{document}
            begin{tikzpicture}[>=latex, scale=2]
            pgfgettransformentries{myscale}{tmp}{tmp}{tmp}{tmp}{tmp}
            draw[->] (0,0) -- (2,1);
            filldraw (0,0) circle[radius=0.05cm/myscale] node[anchor=north] {$P$}
            (2,1) circle[radius=0.05cm/myscale] node[anchor=north] {$Q$};
            end{tikzpicture}
            begin{tikzpicture}[>=latex]
            draw[->] (0,0) -- (2,1);
            filldraw (0,0) circle[radius=0.05cm] node[anchor=north] {$P$}
            (2,1) circle[radius=0.05cm] node[anchor=north] {$Q$};
            end{tikzpicture}
            end{document}


            enter image description here



            ORIGINAL ANSWER: Here I address how one can scale the line width with the distances. Note that I do not recommend using pgflowlevelsynccm here as it screws up the bounding box (which is why there are vspaces added), but I list it for completeness.



            documentclass{report}
            usepackage[margin=1in]{geometry}
            usepackage{tikz}
            begin{document}
            subsection*{Original post}
            begin{tikzpicture}[>=latex, scale=2]
            draw[->] (0,0) -- (2,1);
            filldraw (0,0) circle[radius=0.05cm] node[anchor=north] {$P$}
            (2,1) circle[radius=0.05cm] node[anchor=north] {$Q$};
            end{tikzpicture}

            subsection*{Using texttt{textbackslash pgflowlevelsynccm}}

            vspace*{2cm}
            begin{tikzpicture}[>=latex, scale=2]
            pgflowlevelsynccm
            draw[->] (0,0) -- (2,1);
            filldraw (0,0) circle[radius=0.05cm] node[anchor=north] {$P$}
            (2,1) circle[radius=0.05cm] node[anchor=north] {$Q$};
            end{tikzpicture}
            vspace*{1cm}

            subsection*{Reading out transformation and applying it to lines etc.}
            begin{tikzpicture}[>=latex, scale=2]
            pgfgettransformentries{myscale}{tmp}{tmp}{tmp}{tmp}{tmp}
            draw[->,line width=myscale*pgflinewidth] (0,0) -- (2,1);
            filldraw[,line width=myscale*pgflinewidth]
            (0,0) circle[radius=myscale*0.05cm] node[anchor=north] {$P$}
            (2,1) circle[radius=myscale*0.05cm] node[anchor=north] {$Q$};
            end{tikzpicture}


            subsection*{Reading out transformation and applying it to lines etc. (2)}
            begin{tikzpicture}[>=latex, scale=2]
            pgfgettransformentries{myscale}{tmp}{tmp}{tmp}{tmp}{tmp}
            draw[->,line width=myscale*pgflinewidth] (0,0) -- (2,1);
            filldraw[,line width=myscale*pgflinewidth]
            (0,0) circle[radius=myscale*0.05cm] node[below=myscale*0.05cm] {$P$}
            (2,1) circle[radius=myscale*0.05cm] node[above=myscale*0.05cm] {$Q$};
            end{tikzpicture}

            subsection*{Reading out transformation and applying it to lines etc. (3)}
            begin{tikzpicture}[>=latex, scale=2,transform shape]
            pgfgettransformentries{myscale}{tmp}{tmp}{tmp}{tmp}{tmp}
            draw[->,line width=myscale*pgflinewidth] (0,0) -- (2,1);
            filldraw[,line width=myscale*pgflinewidth]
            (0,0) circle[radius=myscale*0.05cm] node[below=myscale*0.05cm] {$P$}
            (2,1) circle[radius=myscale*0.05cm] node[above=myscale*0.05cm] {$Q$};
            end{tikzpicture}

            end{document}


            enter image description here



            And I would draw the thing probably like this:



            documentclass[tikz,border=3.14mm]{standalone}
            begin{document}
            begin{tikzpicture}[>=latex, scale=2,bullet/.style={transform shape,inner
            sep=0.05cm,fill,circle}]
            pgfgettransformentries{myscale}{tmp}{tmp}{tmp}{tmp}{tmp}
            draw[->,shorten >=2pt,line width=myscale*pgflinewidth]
            (0,0) node[bullet,label=below:$P$]{}
            -- (2,1) node[bullet,label=below:$Q$]{};
            end{tikzpicture}

            end{document}


            enter image description here






            share|improve this answer























            • But the OP asks how to not scale the circles, not how to scale everything...
              – Paul Paulsen
              8 hours ago










            • @PaulPaulsen Very good point! Thanks a lot! (I had the opposite problem, i.e. wanted to scale the line width, some time ago, and was thinking this was asked here. But no, you are absolutely right, and I was too sloppy.)
              – marmot
              8 hours ago






            • 1




              +1, nice update and a cool way to deal with the problem :)
              – Paul Paulsen
              8 hours ago











            Your Answer








            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "85"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            convertImagesToLinks: false,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: null,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f464315%2fnon-scalable-unit-in-tikz%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes








            up vote
            9
            down vote













            You could use a node instead of a circle. nodes don't scale either:



             documentclass{report}
            usepackage{tikz}
            begin{document}
            begin{tikzpicture}[>=latex, scale=2]
            draw[->] (0,0) -- (2,1);
            filldraw (0,0) node[circle,inner sep=0.025cm,fill=black]{} node[anchor=north] {$P$}
            (2,1) circle[radius=0.05cm] node[anchor=north] {$Q$};
            end{tikzpicture}
            end{document}


            enter image description here






            share|improve this answer

























              up vote
              9
              down vote













              You could use a node instead of a circle. nodes don't scale either:



               documentclass{report}
              usepackage{tikz}
              begin{document}
              begin{tikzpicture}[>=latex, scale=2]
              draw[->] (0,0) -- (2,1);
              filldraw (0,0) node[circle,inner sep=0.025cm,fill=black]{} node[anchor=north] {$P$}
              (2,1) circle[radius=0.05cm] node[anchor=north] {$Q$};
              end{tikzpicture}
              end{document}


              enter image description here






              share|improve this answer























                up vote
                9
                down vote










                up vote
                9
                down vote









                You could use a node instead of a circle. nodes don't scale either:



                 documentclass{report}
                usepackage{tikz}
                begin{document}
                begin{tikzpicture}[>=latex, scale=2]
                draw[->] (0,0) -- (2,1);
                filldraw (0,0) node[circle,inner sep=0.025cm,fill=black]{} node[anchor=north] {$P$}
                (2,1) circle[radius=0.05cm] node[anchor=north] {$Q$};
                end{tikzpicture}
                end{document}


                enter image description here






                share|improve this answer












                You could use a node instead of a circle. nodes don't scale either:



                 documentclass{report}
                usepackage{tikz}
                begin{document}
                begin{tikzpicture}[>=latex, scale=2]
                draw[->] (0,0) -- (2,1);
                filldraw (0,0) node[circle,inner sep=0.025cm,fill=black]{} node[anchor=north] {$P$}
                (2,1) circle[radius=0.05cm] node[anchor=north] {$Q$};
                end{tikzpicture}
                end{document}


                enter image description here







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered 16 hours ago









                Ulrike Fischer

                184k7289665




                184k7289665






















                    up vote
                    7
                    down vote













                    Yes, scale really scales mainly distances, not line widths etc. UPDATE: I misread the question, sorry, and big thanks to Paul Paulsen for pointing this out. You can just divide out the scale factor in the circle radii.



                    documentclass{report}
                    usepackage{tikz}
                    begin{document}
                    begin{tikzpicture}[>=latex, scale=2]
                    pgfgettransformentries{myscale}{tmp}{tmp}{tmp}{tmp}{tmp}
                    draw[->] (0,0) -- (2,1);
                    filldraw (0,0) circle[radius=0.05cm/myscale] node[anchor=north] {$P$}
                    (2,1) circle[radius=0.05cm/myscale] node[anchor=north] {$Q$};
                    end{tikzpicture}
                    begin{tikzpicture}[>=latex]
                    draw[->] (0,0) -- (2,1);
                    filldraw (0,0) circle[radius=0.05cm] node[anchor=north] {$P$}
                    (2,1) circle[radius=0.05cm] node[anchor=north] {$Q$};
                    end{tikzpicture}
                    end{document}


                    enter image description here



                    ORIGINAL ANSWER: Here I address how one can scale the line width with the distances. Note that I do not recommend using pgflowlevelsynccm here as it screws up the bounding box (which is why there are vspaces added), but I list it for completeness.



                    documentclass{report}
                    usepackage[margin=1in]{geometry}
                    usepackage{tikz}
                    begin{document}
                    subsection*{Original post}
                    begin{tikzpicture}[>=latex, scale=2]
                    draw[->] (0,0) -- (2,1);
                    filldraw (0,0) circle[radius=0.05cm] node[anchor=north] {$P$}
                    (2,1) circle[radius=0.05cm] node[anchor=north] {$Q$};
                    end{tikzpicture}

                    subsection*{Using texttt{textbackslash pgflowlevelsynccm}}

                    vspace*{2cm}
                    begin{tikzpicture}[>=latex, scale=2]
                    pgflowlevelsynccm
                    draw[->] (0,0) -- (2,1);
                    filldraw (0,0) circle[radius=0.05cm] node[anchor=north] {$P$}
                    (2,1) circle[radius=0.05cm] node[anchor=north] {$Q$};
                    end{tikzpicture}
                    vspace*{1cm}

                    subsection*{Reading out transformation and applying it to lines etc.}
                    begin{tikzpicture}[>=latex, scale=2]
                    pgfgettransformentries{myscale}{tmp}{tmp}{tmp}{tmp}{tmp}
                    draw[->,line width=myscale*pgflinewidth] (0,0) -- (2,1);
                    filldraw[,line width=myscale*pgflinewidth]
                    (0,0) circle[radius=myscale*0.05cm] node[anchor=north] {$P$}
                    (2,1) circle[radius=myscale*0.05cm] node[anchor=north] {$Q$};
                    end{tikzpicture}


                    subsection*{Reading out transformation and applying it to lines etc. (2)}
                    begin{tikzpicture}[>=latex, scale=2]
                    pgfgettransformentries{myscale}{tmp}{tmp}{tmp}{tmp}{tmp}
                    draw[->,line width=myscale*pgflinewidth] (0,0) -- (2,1);
                    filldraw[,line width=myscale*pgflinewidth]
                    (0,0) circle[radius=myscale*0.05cm] node[below=myscale*0.05cm] {$P$}
                    (2,1) circle[radius=myscale*0.05cm] node[above=myscale*0.05cm] {$Q$};
                    end{tikzpicture}

                    subsection*{Reading out transformation and applying it to lines etc. (3)}
                    begin{tikzpicture}[>=latex, scale=2,transform shape]
                    pgfgettransformentries{myscale}{tmp}{tmp}{tmp}{tmp}{tmp}
                    draw[->,line width=myscale*pgflinewidth] (0,0) -- (2,1);
                    filldraw[,line width=myscale*pgflinewidth]
                    (0,0) circle[radius=myscale*0.05cm] node[below=myscale*0.05cm] {$P$}
                    (2,1) circle[radius=myscale*0.05cm] node[above=myscale*0.05cm] {$Q$};
                    end{tikzpicture}

                    end{document}


                    enter image description here



                    And I would draw the thing probably like this:



                    documentclass[tikz,border=3.14mm]{standalone}
                    begin{document}
                    begin{tikzpicture}[>=latex, scale=2,bullet/.style={transform shape,inner
                    sep=0.05cm,fill,circle}]
                    pgfgettransformentries{myscale}{tmp}{tmp}{tmp}{tmp}{tmp}
                    draw[->,shorten >=2pt,line width=myscale*pgflinewidth]
                    (0,0) node[bullet,label=below:$P$]{}
                    -- (2,1) node[bullet,label=below:$Q$]{};
                    end{tikzpicture}

                    end{document}


                    enter image description here






                    share|improve this answer























                    • But the OP asks how to not scale the circles, not how to scale everything...
                      – Paul Paulsen
                      8 hours ago










                    • @PaulPaulsen Very good point! Thanks a lot! (I had the opposite problem, i.e. wanted to scale the line width, some time ago, and was thinking this was asked here. But no, you are absolutely right, and I was too sloppy.)
                      – marmot
                      8 hours ago






                    • 1




                      +1, nice update and a cool way to deal with the problem :)
                      – Paul Paulsen
                      8 hours ago















                    up vote
                    7
                    down vote













                    Yes, scale really scales mainly distances, not line widths etc. UPDATE: I misread the question, sorry, and big thanks to Paul Paulsen for pointing this out. You can just divide out the scale factor in the circle radii.



                    documentclass{report}
                    usepackage{tikz}
                    begin{document}
                    begin{tikzpicture}[>=latex, scale=2]
                    pgfgettransformentries{myscale}{tmp}{tmp}{tmp}{tmp}{tmp}
                    draw[->] (0,0) -- (2,1);
                    filldraw (0,0) circle[radius=0.05cm/myscale] node[anchor=north] {$P$}
                    (2,1) circle[radius=0.05cm/myscale] node[anchor=north] {$Q$};
                    end{tikzpicture}
                    begin{tikzpicture}[>=latex]
                    draw[->] (0,0) -- (2,1);
                    filldraw (0,0) circle[radius=0.05cm] node[anchor=north] {$P$}
                    (2,1) circle[radius=0.05cm] node[anchor=north] {$Q$};
                    end{tikzpicture}
                    end{document}


                    enter image description here



                    ORIGINAL ANSWER: Here I address how one can scale the line width with the distances. Note that I do not recommend using pgflowlevelsynccm here as it screws up the bounding box (which is why there are vspaces added), but I list it for completeness.



                    documentclass{report}
                    usepackage[margin=1in]{geometry}
                    usepackage{tikz}
                    begin{document}
                    subsection*{Original post}
                    begin{tikzpicture}[>=latex, scale=2]
                    draw[->] (0,0) -- (2,1);
                    filldraw (0,0) circle[radius=0.05cm] node[anchor=north] {$P$}
                    (2,1) circle[radius=0.05cm] node[anchor=north] {$Q$};
                    end{tikzpicture}

                    subsection*{Using texttt{textbackslash pgflowlevelsynccm}}

                    vspace*{2cm}
                    begin{tikzpicture}[>=latex, scale=2]
                    pgflowlevelsynccm
                    draw[->] (0,0) -- (2,1);
                    filldraw (0,0) circle[radius=0.05cm] node[anchor=north] {$P$}
                    (2,1) circle[radius=0.05cm] node[anchor=north] {$Q$};
                    end{tikzpicture}
                    vspace*{1cm}

                    subsection*{Reading out transformation and applying it to lines etc.}
                    begin{tikzpicture}[>=latex, scale=2]
                    pgfgettransformentries{myscale}{tmp}{tmp}{tmp}{tmp}{tmp}
                    draw[->,line width=myscale*pgflinewidth] (0,0) -- (2,1);
                    filldraw[,line width=myscale*pgflinewidth]
                    (0,0) circle[radius=myscale*0.05cm] node[anchor=north] {$P$}
                    (2,1) circle[radius=myscale*0.05cm] node[anchor=north] {$Q$};
                    end{tikzpicture}


                    subsection*{Reading out transformation and applying it to lines etc. (2)}
                    begin{tikzpicture}[>=latex, scale=2]
                    pgfgettransformentries{myscale}{tmp}{tmp}{tmp}{tmp}{tmp}
                    draw[->,line width=myscale*pgflinewidth] (0,0) -- (2,1);
                    filldraw[,line width=myscale*pgflinewidth]
                    (0,0) circle[radius=myscale*0.05cm] node[below=myscale*0.05cm] {$P$}
                    (2,1) circle[radius=myscale*0.05cm] node[above=myscale*0.05cm] {$Q$};
                    end{tikzpicture}

                    subsection*{Reading out transformation and applying it to lines etc. (3)}
                    begin{tikzpicture}[>=latex, scale=2,transform shape]
                    pgfgettransformentries{myscale}{tmp}{tmp}{tmp}{tmp}{tmp}
                    draw[->,line width=myscale*pgflinewidth] (0,0) -- (2,1);
                    filldraw[,line width=myscale*pgflinewidth]
                    (0,0) circle[radius=myscale*0.05cm] node[below=myscale*0.05cm] {$P$}
                    (2,1) circle[radius=myscale*0.05cm] node[above=myscale*0.05cm] {$Q$};
                    end{tikzpicture}

                    end{document}


                    enter image description here



                    And I would draw the thing probably like this:



                    documentclass[tikz,border=3.14mm]{standalone}
                    begin{document}
                    begin{tikzpicture}[>=latex, scale=2,bullet/.style={transform shape,inner
                    sep=0.05cm,fill,circle}]
                    pgfgettransformentries{myscale}{tmp}{tmp}{tmp}{tmp}{tmp}
                    draw[->,shorten >=2pt,line width=myscale*pgflinewidth]
                    (0,0) node[bullet,label=below:$P$]{}
                    -- (2,1) node[bullet,label=below:$Q$]{};
                    end{tikzpicture}

                    end{document}


                    enter image description here






                    share|improve this answer























                    • But the OP asks how to not scale the circles, not how to scale everything...
                      – Paul Paulsen
                      8 hours ago










                    • @PaulPaulsen Very good point! Thanks a lot! (I had the opposite problem, i.e. wanted to scale the line width, some time ago, and was thinking this was asked here. But no, you are absolutely right, and I was too sloppy.)
                      – marmot
                      8 hours ago






                    • 1




                      +1, nice update and a cool way to deal with the problem :)
                      – Paul Paulsen
                      8 hours ago













                    up vote
                    7
                    down vote










                    up vote
                    7
                    down vote









                    Yes, scale really scales mainly distances, not line widths etc. UPDATE: I misread the question, sorry, and big thanks to Paul Paulsen for pointing this out. You can just divide out the scale factor in the circle radii.



                    documentclass{report}
                    usepackage{tikz}
                    begin{document}
                    begin{tikzpicture}[>=latex, scale=2]
                    pgfgettransformentries{myscale}{tmp}{tmp}{tmp}{tmp}{tmp}
                    draw[->] (0,0) -- (2,1);
                    filldraw (0,0) circle[radius=0.05cm/myscale] node[anchor=north] {$P$}
                    (2,1) circle[radius=0.05cm/myscale] node[anchor=north] {$Q$};
                    end{tikzpicture}
                    begin{tikzpicture}[>=latex]
                    draw[->] (0,0) -- (2,1);
                    filldraw (0,0) circle[radius=0.05cm] node[anchor=north] {$P$}
                    (2,1) circle[radius=0.05cm] node[anchor=north] {$Q$};
                    end{tikzpicture}
                    end{document}


                    enter image description here



                    ORIGINAL ANSWER: Here I address how one can scale the line width with the distances. Note that I do not recommend using pgflowlevelsynccm here as it screws up the bounding box (which is why there are vspaces added), but I list it for completeness.



                    documentclass{report}
                    usepackage[margin=1in]{geometry}
                    usepackage{tikz}
                    begin{document}
                    subsection*{Original post}
                    begin{tikzpicture}[>=latex, scale=2]
                    draw[->] (0,0) -- (2,1);
                    filldraw (0,0) circle[radius=0.05cm] node[anchor=north] {$P$}
                    (2,1) circle[radius=0.05cm] node[anchor=north] {$Q$};
                    end{tikzpicture}

                    subsection*{Using texttt{textbackslash pgflowlevelsynccm}}

                    vspace*{2cm}
                    begin{tikzpicture}[>=latex, scale=2]
                    pgflowlevelsynccm
                    draw[->] (0,0) -- (2,1);
                    filldraw (0,0) circle[radius=0.05cm] node[anchor=north] {$P$}
                    (2,1) circle[radius=0.05cm] node[anchor=north] {$Q$};
                    end{tikzpicture}
                    vspace*{1cm}

                    subsection*{Reading out transformation and applying it to lines etc.}
                    begin{tikzpicture}[>=latex, scale=2]
                    pgfgettransformentries{myscale}{tmp}{tmp}{tmp}{tmp}{tmp}
                    draw[->,line width=myscale*pgflinewidth] (0,0) -- (2,1);
                    filldraw[,line width=myscale*pgflinewidth]
                    (0,0) circle[radius=myscale*0.05cm] node[anchor=north] {$P$}
                    (2,1) circle[radius=myscale*0.05cm] node[anchor=north] {$Q$};
                    end{tikzpicture}


                    subsection*{Reading out transformation and applying it to lines etc. (2)}
                    begin{tikzpicture}[>=latex, scale=2]
                    pgfgettransformentries{myscale}{tmp}{tmp}{tmp}{tmp}{tmp}
                    draw[->,line width=myscale*pgflinewidth] (0,0) -- (2,1);
                    filldraw[,line width=myscale*pgflinewidth]
                    (0,0) circle[radius=myscale*0.05cm] node[below=myscale*0.05cm] {$P$}
                    (2,1) circle[radius=myscale*0.05cm] node[above=myscale*0.05cm] {$Q$};
                    end{tikzpicture}

                    subsection*{Reading out transformation and applying it to lines etc. (3)}
                    begin{tikzpicture}[>=latex, scale=2,transform shape]
                    pgfgettransformentries{myscale}{tmp}{tmp}{tmp}{tmp}{tmp}
                    draw[->,line width=myscale*pgflinewidth] (0,0) -- (2,1);
                    filldraw[,line width=myscale*pgflinewidth]
                    (0,0) circle[radius=myscale*0.05cm] node[below=myscale*0.05cm] {$P$}
                    (2,1) circle[radius=myscale*0.05cm] node[above=myscale*0.05cm] {$Q$};
                    end{tikzpicture}

                    end{document}


                    enter image description here



                    And I would draw the thing probably like this:



                    documentclass[tikz,border=3.14mm]{standalone}
                    begin{document}
                    begin{tikzpicture}[>=latex, scale=2,bullet/.style={transform shape,inner
                    sep=0.05cm,fill,circle}]
                    pgfgettransformentries{myscale}{tmp}{tmp}{tmp}{tmp}{tmp}
                    draw[->,shorten >=2pt,line width=myscale*pgflinewidth]
                    (0,0) node[bullet,label=below:$P$]{}
                    -- (2,1) node[bullet,label=below:$Q$]{};
                    end{tikzpicture}

                    end{document}


                    enter image description here






                    share|improve this answer














                    Yes, scale really scales mainly distances, not line widths etc. UPDATE: I misread the question, sorry, and big thanks to Paul Paulsen for pointing this out. You can just divide out the scale factor in the circle radii.



                    documentclass{report}
                    usepackage{tikz}
                    begin{document}
                    begin{tikzpicture}[>=latex, scale=2]
                    pgfgettransformentries{myscale}{tmp}{tmp}{tmp}{tmp}{tmp}
                    draw[->] (0,0) -- (2,1);
                    filldraw (0,0) circle[radius=0.05cm/myscale] node[anchor=north] {$P$}
                    (2,1) circle[radius=0.05cm/myscale] node[anchor=north] {$Q$};
                    end{tikzpicture}
                    begin{tikzpicture}[>=latex]
                    draw[->] (0,0) -- (2,1);
                    filldraw (0,0) circle[radius=0.05cm] node[anchor=north] {$P$}
                    (2,1) circle[radius=0.05cm] node[anchor=north] {$Q$};
                    end{tikzpicture}
                    end{document}


                    enter image description here



                    ORIGINAL ANSWER: Here I address how one can scale the line width with the distances. Note that I do not recommend using pgflowlevelsynccm here as it screws up the bounding box (which is why there are vspaces added), but I list it for completeness.



                    documentclass{report}
                    usepackage[margin=1in]{geometry}
                    usepackage{tikz}
                    begin{document}
                    subsection*{Original post}
                    begin{tikzpicture}[>=latex, scale=2]
                    draw[->] (0,0) -- (2,1);
                    filldraw (0,0) circle[radius=0.05cm] node[anchor=north] {$P$}
                    (2,1) circle[radius=0.05cm] node[anchor=north] {$Q$};
                    end{tikzpicture}

                    subsection*{Using texttt{textbackslash pgflowlevelsynccm}}

                    vspace*{2cm}
                    begin{tikzpicture}[>=latex, scale=2]
                    pgflowlevelsynccm
                    draw[->] (0,0) -- (2,1);
                    filldraw (0,0) circle[radius=0.05cm] node[anchor=north] {$P$}
                    (2,1) circle[radius=0.05cm] node[anchor=north] {$Q$};
                    end{tikzpicture}
                    vspace*{1cm}

                    subsection*{Reading out transformation and applying it to lines etc.}
                    begin{tikzpicture}[>=latex, scale=2]
                    pgfgettransformentries{myscale}{tmp}{tmp}{tmp}{tmp}{tmp}
                    draw[->,line width=myscale*pgflinewidth] (0,0) -- (2,1);
                    filldraw[,line width=myscale*pgflinewidth]
                    (0,0) circle[radius=myscale*0.05cm] node[anchor=north] {$P$}
                    (2,1) circle[radius=myscale*0.05cm] node[anchor=north] {$Q$};
                    end{tikzpicture}


                    subsection*{Reading out transformation and applying it to lines etc. (2)}
                    begin{tikzpicture}[>=latex, scale=2]
                    pgfgettransformentries{myscale}{tmp}{tmp}{tmp}{tmp}{tmp}
                    draw[->,line width=myscale*pgflinewidth] (0,0) -- (2,1);
                    filldraw[,line width=myscale*pgflinewidth]
                    (0,0) circle[radius=myscale*0.05cm] node[below=myscale*0.05cm] {$P$}
                    (2,1) circle[radius=myscale*0.05cm] node[above=myscale*0.05cm] {$Q$};
                    end{tikzpicture}

                    subsection*{Reading out transformation and applying it to lines etc. (3)}
                    begin{tikzpicture}[>=latex, scale=2,transform shape]
                    pgfgettransformentries{myscale}{tmp}{tmp}{tmp}{tmp}{tmp}
                    draw[->,line width=myscale*pgflinewidth] (0,0) -- (2,1);
                    filldraw[,line width=myscale*pgflinewidth]
                    (0,0) circle[radius=myscale*0.05cm] node[below=myscale*0.05cm] {$P$}
                    (2,1) circle[radius=myscale*0.05cm] node[above=myscale*0.05cm] {$Q$};
                    end{tikzpicture}

                    end{document}


                    enter image description here



                    And I would draw the thing probably like this:



                    documentclass[tikz,border=3.14mm]{standalone}
                    begin{document}
                    begin{tikzpicture}[>=latex, scale=2,bullet/.style={transform shape,inner
                    sep=0.05cm,fill,circle}]
                    pgfgettransformentries{myscale}{tmp}{tmp}{tmp}{tmp}{tmp}
                    draw[->,shorten >=2pt,line width=myscale*pgflinewidth]
                    (0,0) node[bullet,label=below:$P$]{}
                    -- (2,1) node[bullet,label=below:$Q$]{};
                    end{tikzpicture}

                    end{document}


                    enter image description here







                    share|improve this answer














                    share|improve this answer



                    share|improve this answer








                    edited 8 hours ago

























                    answered 17 hours ago









                    marmot

                    82.3k493176




                    82.3k493176












                    • But the OP asks how to not scale the circles, not how to scale everything...
                      – Paul Paulsen
                      8 hours ago










                    • @PaulPaulsen Very good point! Thanks a lot! (I had the opposite problem, i.e. wanted to scale the line width, some time ago, and was thinking this was asked here. But no, you are absolutely right, and I was too sloppy.)
                      – marmot
                      8 hours ago






                    • 1




                      +1, nice update and a cool way to deal with the problem :)
                      – Paul Paulsen
                      8 hours ago


















                    • But the OP asks how to not scale the circles, not how to scale everything...
                      – Paul Paulsen
                      8 hours ago










                    • @PaulPaulsen Very good point! Thanks a lot! (I had the opposite problem, i.e. wanted to scale the line width, some time ago, and was thinking this was asked here. But no, you are absolutely right, and I was too sloppy.)
                      – marmot
                      8 hours ago






                    • 1




                      +1, nice update and a cool way to deal with the problem :)
                      – Paul Paulsen
                      8 hours ago
















                    But the OP asks how to not scale the circles, not how to scale everything...
                    – Paul Paulsen
                    8 hours ago




                    But the OP asks how to not scale the circles, not how to scale everything...
                    – Paul Paulsen
                    8 hours ago












                    @PaulPaulsen Very good point! Thanks a lot! (I had the opposite problem, i.e. wanted to scale the line width, some time ago, and was thinking this was asked here. But no, you are absolutely right, and I was too sloppy.)
                    – marmot
                    8 hours ago




                    @PaulPaulsen Very good point! Thanks a lot! (I had the opposite problem, i.e. wanted to scale the line width, some time ago, and was thinking this was asked here. But no, you are absolutely right, and I was too sloppy.)
                    – marmot
                    8 hours ago




                    1




                    1




                    +1, nice update and a cool way to deal with the problem :)
                    – Paul Paulsen
                    8 hours ago




                    +1, nice update and a cool way to deal with the problem :)
                    – Paul Paulsen
                    8 hours ago


















                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to TeX - LaTeX Stack Exchange!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.





                    Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                    Please pay close attention to the following guidance:


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f464315%2fnon-scalable-unit-in-tikz%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Quarter-circle Tiles

                    build a pushdown automaton that recognizes the reverse language of a given pushdown automaton?

                    Mont Emei