Können wir den inneren Sep-Wert eines Knotens mit relativen Einheiten in Bezug auf den im Gültigkeitsbereich liegenden Font-Schlüsselwert definieren?

Können wir den inneren Sep-Wert eines Knotens mit relativen Einheiten in Bezug auf den im Gültigkeitsbereich liegenden Font-Schlüsselwert definieren?

Sehr oft ertappe ich mich dabei, Stile für verschiedene Zeichnungsanmerkungen zu definieren. Das ist großartig, um Figuren zu strukturieren. Es gibt jedoch eine Kleinigkeit, die ich hoffentlich verbessern kann. Das liegt daran, dass alle relativen Dimensionen (Einheiten von exoder em) immer von Ti interpretiert werden.kZ relativ zur Schriftgröße, die auf der „Ebene“ des tikzpictureCodes selbst gilt.

font=\tinyWenn ich beispielsweise die Schriftgröße einer Anmerkung ändern muss, indem ich verwende , muss ich den inner sepWert auch manuell anpassen, da die Standardeinstellung (oder was auch immer in der Stildefinition angegeben ist) mit der geänderten Schriftgröße nicht immer so schön aussieht.

Wenn ich Stildefinitionen so einrichten könnte, dass der Wert von fontals Grundlage für alle exoder emDimensionen in verwendet wird inner sep, würde sich dieses Problem von selbst lösen. Ich würde auch eine Lösung in Betracht ziehen, bei der die fontund inner sepWerte als Argumente für einen Stil angegeben werden, wenn sich diese Einschränkung dadurch überwinden lässt.

Hier ist ein 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}

Die aktuelle Ausgabe ist:

Bildbeschreibung hier eingeben

Die blauen Haarlinien dienen nur dazu, die Grundlinie jedes Knotens anzuzeigen. Wie gezeigt, haben die Grundlinien den gleichen Abstand vom unteren Ende der Knoten. Eine geeignete Definition von my inner seperzeugt eine Ausgabe mit Text, der Bnach unten und links von seiner oben gezeigten Position verschoben ist, da 0.2emin \tinykleiner als 0.2emin ist \normalsize.

Ist ein solches Ziel mit dem aktuellen Ti möglich?kZ-Architektur/Reihenfolge der Operationen? Wenn ja, wie kann das gemacht werden?

Antwort1

Von PGF 3.0dort gibt es einen node fontSchlüssel, der die Schriftart für den Knoten festlegtUndwird als Schriftart bei Knotendimensionsberechnungen mit emund verwendet ex. Siehe Abschnitt 17.4.2(„Textparameter: Schriftart“) im PGF 3.0Handbuch.

\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}

Bildbeschreibung hier eingeben

verwandte Informationen