
Используя некоторые пользовательские фигуры, я обнаружил, что текстовые метки не учитываются при расчете ограничивающего прямоугольника моих фигур. Нужно ли мне рисовать какую-то (невидимую) фигуру для создания ограничивающего прямоугольника или есть прямой способ указать ее?
Ниже приведен минимальный пример, демонстрирующий проблему. Мне нужно правильное определение формы, чтобы текст оставался в пределах рамки.
\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}