diff --git a/doc/generic/pgf/CHANGELOG.md b/doc/generic/pgf/CHANGELOG.md index 3eabe0278..e8eda682c 100644 --- a/doc/generic/pgf/CHANGELOG.md +++ b/doc/generic/pgf/CHANGELOG.md @@ -9,6 +9,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Fixed - Fix formatting of `default XXX, initially XXX` in key docs #1278 +- Moved `base west`, `base east`, `mid west`, and `mid east` anchors + onto the edge of the shape for `circle` and `ellipse` shapes ## [3.1.11] - 2025-08-14 Henri Menke diff --git a/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex b/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex index d7b42b5d6..a0b696e70 100644 --- a/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex +++ b/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex @@ -91,18 +91,26 @@ \anchor{mid west} {% \pgf@process{\radius} - \pgf@xa=\pgf@x% + \pgf@xa=\pgf@x + \pgf@ya=\pgf@y \pgf@process{\centerpoint} - \advance\pgf@x by-\pgf@xa% - \pgfmathsetlength\pgf@y{.5ex} + \pgf@xc=\pgf@x + \pgf@yc=\pgf@y + \pgfmathsetlength\pgf@y{0.5ex}% + \pgfmathsetlength\pgf@x{\pgf@xc + - \pgf@xa*cos(asin((\pgf@y-\pgf@yc)/\pgf@ya))} }% \anchor{base west} {% \pgf@process{\radius} - \pgf@xa=\pgf@x% + \pgf@xa=\pgf@x + \pgf@ya=\pgf@y \pgf@process{\centerpoint} - \advance\pgf@x by-\pgf@xa% - \pgf@y=0pt + \pgf@xc=\pgf@x + \pgf@yc=\pgf@y + \pgf@y=0pt% + \pgfmathsetlength\pgf@x{\pgf@xc + - \pgf@xa*cos(asin((\pgf@y-\pgf@yc)/\pgf@ya))} }% \anchor{north west} { @@ -132,18 +140,26 @@ \anchor{mid east} {% \pgf@process{\radius} - \pgf@xa=\pgf@x% + \pgf@xa=\pgf@x + \pgf@ya=\pgf@y \pgf@process{\centerpoint} - \advance\pgf@x by\pgf@xa% - \pgfmathsetlength\pgf@y{.5ex} + \pgf@xc=\pgf@x + \pgf@yc=\pgf@y + \pgfmathsetlength\pgf@y{0.5ex}% + \pgfmathsetlength\pgf@x{\pgf@xc + + \pgf@xa*cos(asin((\pgf@y-\pgf@yc)/\pgf@ya))} }% \anchor{base east} {% \pgf@process{\radius} - \pgf@xa=\pgf@x% + \pgf@xa=\pgf@x + \pgf@ya=\pgf@y \pgf@process{\centerpoint} - \advance\pgf@x by\pgf@xa% - \pgf@y=0pt + \pgf@xc=\pgf@x + \pgf@yc=\pgf@y + \pgf@y=0pt% + \pgfmathsetlength\pgf@x{\pgf@xc + + \pgf@xa*cos(asin(-(\pgf@y-\pgf@yc)/\pgf@ya))} }% \anchor{north east} { diff --git a/tex/generic/pgf/modules/pgfmoduleshapes.code.tex b/tex/generic/pgf/modules/pgfmoduleshapes.code.tex index 438f7b722..33853bcbe 100644 --- a/tex/generic/pgf/modules/pgfmoduleshapes.code.tex +++ b/tex/generic/pgf/modules/pgfmoduleshapes.code.tex @@ -1267,10 +1267,34 @@ \anchor{south}{\centerpoint\advance\pgf@y by-\radius}% \anchor{west}{\centerpoint\advance\pgf@x by-\radius}% \anchor{east}{\centerpoint\advance\pgf@x by\radius}% - \anchor{mid west}{\centerpoint\advance\pgf@x by-\radius\pgfmathsetlength\pgf@y{.5ex}}% - \anchor{mid east}{\centerpoint\advance\pgf@x by\radius\pgfmathsetlength\pgf@y{.5ex}}% - \anchor{base west}{\centerpoint\advance\pgf@x by-\radius\pgf@y=0pt}% - \anchor{base east}{\centerpoint\advance\pgf@x by\radius\pgf@y=0pt}% + \anchor{mid west}{\centerpoint + \pgf@xc=\pgf@x + \pgf@yc=\pgf@y + \pgfmathsetlength\pgf@y{0.5ex}% + \pgfmathsetlength\pgf@x{\pgf@xc + - \radius*cos(asin((\pgf@y-\pgf@yc)/\radius))}% + }% + \anchor{mid east}{\centerpoint + \pgf@xc=\pgf@x + \pgf@yc=\pgf@y + \pgfmathsetlength\pgf@y{0.5ex}% + \pgfmathsetlength\pgf@x{\pgf@xc + + \radius*cos(asin((\pgf@y-\pgf@yc)/\radius))}% + }% + \anchor{base west}{% + \centerpoint + \pgf@xc=\pgf@x + \pgf@yc=\pgf@y + \pgf@y=0pt% + \pgfmathsetlength\pgf@x{\pgf@xc - \radius*cos(asin(-\pgf@yc/\radius))}% + }% + \anchor{base east}{% + \centerpoint + \pgf@xc=\pgf@x + \pgf@yc=\pgf@y + \pgf@y=0pt% + \pgfmathsetlength\pgf@x{\pgf@xc + \radius*cos(asin(-\pgf@yc/\radius))}% + }% \anchor{north west}{ \centerpoint \pgf@xa=\radius