tikz: Prä- und Postfix für den Text jedes Knotens

tikz: Prä- und Postfix für den Text jedes Knotens

Um den Zeilenabstand eines Knotens für mehrzeiligen Text zu konfigurieren, muss ich dem Text innerhalb jedes einzelnen Knotens \baselineskip=2.5exein weiteres voranstellen und \pardanach anhängen. Gibt es eine Möglichkeit, dies nicht immer wieder tun zu müssen?

\documentclass{report}
\usepackage{tikz}
  \usetikzlibrary{calc,fit,positioning}
\begin{document}

\begin{tikzpicture}[
    remember picture, overlay,
    every node/.style={fill=green, font=\large}
      ]
  \node (N0)
    at (0,0)
    {Start}; % <- That's what I want for multi-line text: Only the text
  \node[right=of N0, text width=3cm, align=center] (N1)
    {\baselineskip=2.5ex Looooooooooong multi-line text.\par}; % <- That's what's required
  \node[right=of N1, text width=3cm, align=center] (N2)
    {\baselineskip=2.5ex Another looooooooooong multi-line text.\par};
\end{tikzpicture}

\end{document}

Gibt es Knotenstilparameter zum Definieren solcher Präfix- und Postfix-Befehle?Es gibt postactionund preactionsParameter, die mir nicht weiterhelfen. Der folgende Code erzeugt keinen korrekten Zeilenabstand (der \parscheint ignoriert zu werden).

%...
    every node/.style={fill=green, font=\large, postaction={\par}}
%...
  \node[right=of N1, text width=3cm, align=center] (N2)
    {\baselineskip=2.5ex Another looooooooooong multi-line text.};
%...

Irgendwelche Ideen?

Antwort1

Ich sehe keine Notwendigkeit für \par, aber Sie können /tikz/execute at begin nodeund verwenden /tikz/execute at end node:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}

\begin{tikzpicture}[
    every node/.style={fill=green, font=\large},
    execute at begin node={\baselineskip=5ex\relax},
    % execute at end node={\endgraf}% not needed, as far as I can see
    ]
  \node (N0) at (0,0) {Start};
  \node[right=of N0, text width=3.2cm, align=center] (N1)
    {Looooooooooong multi-line text.};
  \node[right=of N1, text width=3.2cm, align=center] (N2)
    {Another looooooooooong multi-line text.};
\end{tikzpicture}

\end{document}

Bildbeschreibung hier eingeben

Ich habe das nicht benötigte entfernt remember picture, overlay, die 3 cm auf 3,2 cm erhöht, um ein Überfüllen \hboxim zweiten Knoten zu vermeiden, und Ihr \baselineskip=2.5exauf erhöht \baselineskip=5ex, um die Wirkung deutlicher zu machen. Das stellt sicher, dass TeX beim Lesen des zugewiesenen Werts \relaxnicht versucht, Token nach dem zu erweitern .5ex\baselineskip

Antwort2

Sie können verwenden font. Probieren Sie aus, ob das für Sie funktioniert. Ich verwende , \baselineskip=5exum den Unterschied hervorzuheben.

\documentclass{report}
\usepackage{tikz}
  \usetikzlibrary{calc,fit,positioning}
\begin{document}

\begin{tikzpicture}[
    remember picture, overlay,
    every node/.style={fill=green, font=\large},
    baselineskip/.style={font={\large\baselineskip=#1}}
  ]
  \node (N0)
    at (0,0)
    {Start}; % <- That's what I want for multi-line text: Only the text
  \node[right=of N0, text width=3cm, align=center,baselineskip=5ex] (N1)
    {Looooooooooong multi-line text.}; % <- That's what's required
  \node[right=of N1, text width=3cm, align=center,baselineskip=5ex] (N2)
    {Another looooooooooong multi-line text.};
\end{tikzpicture}

\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen