PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : box/knoten oben ausrichten



rafael
29-05-2010, 10:26
Ich habe mit parcolumns dreispaltigen Text erzeugt, den ich mit Text und Knoten des tikz Pakets bestücke. Das Problem ist, dass die Knoten in den Spalten nicht wirklich oben angeordnet sind. Wie kann man das machen?


\documentclass{scrartcl}

\usepackage{parcolumns,blindtext,tikz}

\begin{document}

\begin{parcolumns}[colwidths={1=0.3\textwidth},distance=2em,rulebetwe en=true,nofirstindent=true,sloppy]{3}
\colchunk{\tikz \node[draw,rounded corners]{\begin{minipage}[t]{.9\linewidth}\textbf{hiho}Testversuch Testversuch\footnote{hoih}\end{minipage}};\\\tikz \node[draw,rounded corners]{\begin{minipage}[t]{.9\linewidth}\textbf{hiho}Testversuch Testversuch\footnote{hoih}\end{minipage}};}
\colchunk{\tikz \node[draw,rounded corners]{\begin{minipage}[t]{.9\linewidth}\textbf{hiho}\blindtext\end{minipage }};}
\colchunk{\tikz \node[draw,rounded corners]{\begin{minipage}[t]{.9\linewidth}\textbf{hiho}\blindtext\end{minipage }};}
\colplacechunks
\end{parcolumns}

\end{document}

esdd
29-05-2010, 16:15
Hallo,
parcolumn richtet vermutlich die Zeilen an einander aus. Die tikz-Bilder werden jeweils auf der aktuellen Grundlinie eingefügt ...
Vorschlag:


\documentclass{scrartcl}

\usepackage{parcolumns,blindtext,tikz}
\usetikzlibrary{positioning}

\begin{document}

\tikzset{every picture/.style={baseline=(current bounding box.north),node distance=\baselineskip}}
\tikzset{every node/.style={draw,rounded corners}}

\begin{parcolumns}[colwidths={1=0.3\textwidth},distance=2em,rulebetwe en=true,nofirstindent=true,sloppy]{3}
\colchunk{%
\raisebox{\baselineskip}{\tikz\node(n1){\begin{min ipage}{.9\linewidth}\textbf{hiho}Testversuch Testversuch\footnote{hoih}\end{minipage}}%
node[below=\baselineskip of n1.south]{\begin{minipage}{.9\linewidth}\textbf{hiho}Testve rsuch Testversuch\footnote{hoih}\end{minipage}};}}
\colchunk{\raisebox{\baselineskip}{\tikz \node{\begin{minipage}{.9\linewidth}\textbf{hiho}\ blindtext\end{minipage}};}}
\colchunk{\raisebox{\baselineskip}{\tikz \node{\begin{minipage}[t]{.9\linewidth}\textbf{hiho}\blindtext\end{minipage }};}}
\colplacechunks
\end{parcolumns}

\end{document}

Gruß
Elke

rafael
29-05-2010, 16:40
Vielen Dank, genau das habe ich gesucht.

Mit der \raisebox hatte ich vorher auch schon experimentiert. Leider hatte ich statt \raisebox{\baselineskip}{} aber nur \raisebox{-0.5\height}{} versucht, was nicht den gewünschten Effekt zeigte.

esdd
29-05-2010, 17:45
Hallo,
das raisebox ist die kleinere Korrektur. Entscheidend ist das baseline=(current bounding box.north) für alle tikz Bilder. Es sorgt dafür, das diese nicht auf sondern unter der aktuellen Grundlinie eingefügt werden.
Gruß
Elke

rafael
31-05-2010, 22:30
Entscheidend ist das baseline=(current bounding box.north) für alle tikz Bilder.
Leider funktioniert das nur dann, wenn ich Knoten ineinander schachtle.
Aus anderen Gründen muss ich aber jeden Knoten separat erzeugen. Außerdem kann ich zwar Namen über einen Zähler number

\node (n\thenumber) {Knoten};
vergeben, aber der verweis auf

\node (n\thenumber-1) {Knoten};
funktioniert nicht, weil tikz -1 separat interpretiert.

Dann liegt die baseline leider über dem letzten Knoten der Spalte, aber nicht über dem Ersten.
Lässt sich das Problem lösen, wenn man trotzdem auf der Aneinanderreihung von Knoten per

\tikz\node{Knoten};Zwischentext\tikz\node{Knoten}; beharren will?

esdd
01-06-2010, 14:09
Hallo,
das mit dem Zaehler könnte man zum Beispiel so lösen:


\tikz\node(\thezaehler){\begin{minipage}{.9\linewi dth}\textbf{hiho}Testversuch Testversuch\footnote{hoih}\end{minipage}}%
\pgfextra{\stepcounter{zaehler} \pgfmathtruncatemacro\n{\thezaehler-1}}%
node(\thezaehler)[below=\baselineskip of \n.south]{\begin{minipage}{.9\linewidth}\textbf{hiho}Testve rsuch Testversuch\footnote{hoih}\end{minipage}};

Aber vielleicht hilft Dir das folgende mehr:


\documentclass{scrartcl}

\usepackage{parcolumns,blindtext,tikz}
\usetikzlibrary{matrix}

\pgfmathsetlengthmacro\abst{\baselineskip}
\tikzset{every picture/.style={baseline=(current bounding box.north)}}
\tikzset{every matrix/.style={%
matrix of nodes,inner sep=0pt,row sep=\abst,%
nodes={draw,rounded corners,inner sep=0.3333em}}}
\tikzset{zwt/.style={draw=none,inner sep=0pt}}

\begin{document}

\begin{parcolumns}[colwidths={1=0.3\textwidth},distance=2em,rulebetwe en=true,nofirstindent=true,sloppy]{3}
\colchunk{\raisebox{\baselineskip}{\tikz\matrix{%
\begin{minipage}{.9\linewidth}\textbf{hiho}Testver such Testversuch\footnote{hoih}\end{minipage}\\
|[zwt]|\begin{minipage}{\linewidth}\blindtext\end{minipa ge}\\
\begin{minipage}{.9\linewidth}\textbf{hiho}Testver such Testversuch\footnote{hoih}\end{minipage}\\%
};}}
\colchunk{\raisebox{\baselineskip}{\tikz\matrix{%
\begin{minipage}{.9\linewidth}\textbf{hiho}\blindt ext\end{minipage}\\%
};}}
\colchunk{\raisebox{\baselineskip}{\tikz\matrix{%
\begin{minipage}{.9\linewidth}\textbf{hiho}\blindt ext\end{minipage}\\%
};}}
\end{parcolumns}

\end{document}


Gruß
Elke

rafael
12-08-2010, 17:23
Klappt, Vielen Dank.
Doch tikz scheint mir doch immer zwei Nummern zu groß, komplex und pefekt zu sein. Was man da alles machen kann. Wahnsinn.