Я могу делать такие вещи в tikz, но как мне определить \wd
ширину фигуры?
\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
решение1
Хм, кажется, это работает: я могу прибавить координаты северо-восточной точки к отрицанию юго-западной точки.
\newdimen{\pgf@dx}
\pgfextractx{\pgf@dx}{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\southwest}}}
решение2
Официальный способ получения ширины следующий:
\southwest% \pgf@xa=\pgf@x% \northeast% \advance\pgf@x by-\pgf@xa%
Я звоню этому официальному лицу, потому что вы можете увидеть это в pgfmoduleshapes.code.tex
строке 1036-1040.
Чтобы получить северный якорь, кратчайший путь —
\southwest% \pgf@xa=.5\pgf@x% \northeast% \advance\pgf@xa by.5\pgf@x%