Beim Zeichnen eines benutzerdefinierten Tikz-Symbols greifen Sie auf Koordinaten zu, die ratiometrisch zu Breite und Länge sind

Beim Zeichnen eines benutzerdefinierten Tikz-Symbols greifen Sie auf Koordinaten zu, die ratiometrisch zu Breite und Länge sind

Ich kann solche Dinge in Tikz machen, aber wie definiere ich \wddie Breite der Form?

\makeatletter
\pgfdeclareshape{myshape}{%
  \inheritsavedanchors[from=rectangle]%
  \inheritanchorborder[from=rectangle]%
  \inheritanchor[from=rectangle]{center}%
  %
  \backgroundpath{%
    \southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y
    \northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y
    \pgfpathmoveto{\pgfpoint{\pgf@xa+0.5\wd}{\pgf@ya}}
    \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}}
  }%
}
\makeatother

Antwort1

Hmm, das scheint zu funktionieren: Ich kann die Koordinaten des nordöstlichen Punkts zur Negation des südwestlichen Punkts hinzufügen.

\newdimen{\pgf@dx}
\pgfextractx{\pgf@dx}{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\southwest}}}

Antwort2

Die Breite wird amtlich wie folgt ermittelt.

\southwest%
\pgf@xa=\pgf@x%
\northeast%
\advance\pgf@x by-\pgf@xa%

Ich nenne das offiziell, weil man es in pgfmoduleshapes.code.texZeile 1036-1040 sehen kann

Um zum Nordanker zu gelangen, ist der kürzeste Weg

\southwest%
\pgf@xa=.5\pgf@x%
\northeast%
\advance\pgf@xa by.5\pgf@x%

verwandte Informationen