Рабочий пример

Рабочий пример

Используя некоторые пользовательские фигуры, я обнаружил, что текстовые метки не учитываются при расчете ограничивающего прямоугольника моих фигур. Нужно ли мне рисовать какую-то (невидимую) фигуру для создания ограничивающего прямоугольника или есть прямой способ указать ее?

Ниже приведен минимальный пример, демонстрирующий проблему. Мне нужно правильное определение формы, чтобы текст оставался в пределах рамки.

\documentclass{article}

\usepackage{tikz}

\pgfdeclareshape{test}{
    \anchor{center}{\pgfpointorigin}
    \anchor{text}{\pgfpointorigin}
}

\begin{document}
\framebox{%
\begin{tikzpicture}
\draw node[test] {Some text};
\end{tikzpicture}
}
\end{document}

По сути я хочу повторить следующее

\framebox{%
\begin{tikzpicture}
\draw node[inner sep=0] {Some text};
\end{tikzpicture}
}

Сравнивая эти два результата, получаем следующий результат:

введите описание изображения здесь

решение1

Вы можете использовать \inheritsavedanchorsи \inheritbackgroundpath, если не хотите делать грязную работу.

Рабочий пример

\documentclass{article}

\usepackage{tikz}

\pgfdeclareshape{test}{
    \anchor{center}{\pgfpointorigin}
    \anchor{text}{\pgfpointorigin}
    \inheritsavedanchors[from=rectangle]
    \inheritbackgroundpath[from=rectangle]
}

\begin{document}
\framebox{%
\begin{tikzpicture}
\draw node[test] {Some text};
\end{tikzpicture}
}
\end{document}

Связанный контент