Очень часто я обнаруживаю, что определяю стили для различных аннотаций к рисункам. Это отлично подходит для структурирования фигур. Однако есть одна мелочь, которую я надеюсь улучшить. Это связано с тем, что любые относительные размеры (единицы измерения ex
или em
) всегда интерпретируются TiкZ относительно размера шрифта, действующего на «уровне» tikzpicture
самого кода.
Если мне нужно изменить размер шрифта одной аннотации font=\tiny
, например, с помощью , мне также придется вручную настроить значение inner sep
, поскольку значение по умолчанию (или то, что указано в определении стиля) не всегда выглядит так хорошо с измененным размером шрифта.
Если бы я мог настроить определения стилей так, чтобы значение font
использовалось в качестве основы для любого ex
или em
измерений в inner sep
, эта проблема могла бы решиться сама собой. Я бы также рассмотрел решение, в котором значения font
и inner sep
указываются как аргументы стиля, если это позволяет преодолеть это ограничение.
Вот MWE:
\documentclass[tikz]{standalone}
\tikzset{
my inner sep/.style={inner sep=#1}, % how to define this?
every node/.style={anchor=south west},
}
\begin{document}
\begin{tikzpicture}
\node[my inner sep=0.2em] (A) {A};
\node[font=\tiny,my inner sep=0.2em] (B) {B};
\foreach \node in {A,B} {
\draw[blue,line width=0.01pt] % just to show the baselines
(\node.south west) |- (\node.base) -| (\node.north east);
}
\end{tikzpicture}
\end{document}
Текущий выход:
Синие линии волос нужны только для того, чтобы показать базовую линию каждого узла. Как показано, базовые линии находятся на одинаковом расстоянии от нижней части узлов. Подходящее определение my inner sep
создаст вывод с текстом, B
смещенным вниз и влево от его позиции, показанной выше, поскольку 0.2em
in \tiny
меньше, чем 0.2em
in \normalsize
.
Возможна ли такая цель с текущим Ti?кАрхитектура Z/порядок операций? Если да, то как это можно сделать?
решение1
Оттуда PGF 3.0
естьnode font
ключ, который задает шрифт для узла.ииспользуется как шрифт в расчетах размеров узлов с использованием em
и ex
. См. раздел 17.4.2
(«Параметры текста: Шрифт») в PGF 3.0
руководстве.
\documentclass[tikz, border=5]{standalone}
\begin{document}
\begin{tikzpicture}[every node/.style={fill=gray!50, anchor=south west}]
\node [inner sep=1em] at (0,0) (A) {A};
\node [font=\tiny, inner sep=1em] at (0,1) (B) {B};
\node [node font=\tiny, inner sep=1em] at (0,2) (C) {C};
\foreach \n in {A,B,C} {
\draw[red, very thin, <->] (\n.base west) -- (\n.base east);
\draw[red, very thin, <->] (\n.text |- \n.south) -- (\n.text |- \n.north);
}
\end{tikzpicture}
\end{document}