Hallo Texwelt-Gemeinde! Ich habe auf tex.sx ein Beispiel für einen Sitzplan gefunden. Jedoch möchte ich das Beispiel noch etwas anpassen. Unter jedem Namen sollen noch zwei Informationen stehen. Dies habe ich soweit auch (erstmal rudimentär) hinzugefügt. Nun macht er aber die Kästen in Abhängigkeit Namen unterschiedlich groß. Meine Frage ist nun, ob man tikz dazu bringen kann, dass jeder Kasten die gleichen Dimensionen hat. Oder noch besser: Zwei (oder mehr) Schüler sollen in einem Rechteck (als Tisch) stehen und nur durch einem Strich getrennt sein. Wie im Original auf tex.sx. Open in Online-Editor
\documentclass[ paper=a4, fontsize=12pt, ]{scrartcl} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage[ngerman]{babel} \usepackage{tikz} \def\countitemsinmacro#1{\foreach \i [count=\itemcount, remember=\itemcount] in #1{}} \tikzset{% every seat/.style={ shape=rectangle, draw, font=\footnotesize, minimum width=1.5cm, minimum height=1cm, }, } \usepackage{bbding} \usepackage{graphicx} \usepackage{ifthen} \usepackage{tabularx} \begin{document} \begin{center} \begin{tikzpicture} \foreach \childrenrow [count=\rownumber] in {% {{\phantom{L}/0/-5,\phantom{L}/0/-5},{L/0/-5},{\phantom{L}/0/-5,\phantom{L}/0/-5}}, {{\phantom{L}/0/-5,\phantom{L}/0/-5},{Schüler1/2/0,Schüler2/3/1},{Schüler3/2/0,\phantom{L}/0/-5}},% {{Schüler4/3/1,Schüler5 A./2/0},{Schüler8/2/-1,Schüler9/3/1},{\phantom{L}/0/-5,\phantom{L}/0/-5}},% {{Schüler5 Z./2/0,Schüler6/4/2},{\phantom{L}/0/-5,Schüler7/1/-1},{\phantom{L}/0/-5,\phantom{L}/0/-5}},% }{ \countitemsinmacro{\childrenrow}% \let\tabletotal=\itemcount% \foreach \children [count=\tablenumber] in \childrenrow { \countitemsinmacro{\children}% \let\seatcount=\itemcount% \foreach \childname/\quant/\quali [count=\seatnumber] in \children{ \node [every seat/.try, seat \rownumber-\tablenumber-\seatnumber/.try, align=center] at (-\tabletotal/2*5+\tablenumber*6+\seatnumber*2-\seatcount/2*2,-\rownumber*1.5) (seat-\rownumber-\tablenumber-\seatnumber) {% \childname\\% \ifnum\quant>0 \foreach \k in {1,2,...,\quant} {\scalebox{.7}{\rotatebox[x=0mm, y=2mm]{-90}{\HandLeft}}}\else\phantom{\rotatebox[x=0mm, y=2mm]{-90}{\HandLeft}}\fi\\% \pgfmathparse{\quali+3} \ifcase\pgfmathresult% \phantom{0} \or $ -- $% \or $ - $% \or $ 0 $ \or $ + $% \or $ ++ $% \else\phantom{0}\fi% }; }}} \end{tikzpicture} \end{center} \end{document} Schonmal danke! |
Damit die Plätze alle gleich groß sind, muss man nur Bei der regelmäßigen Verteilung der Plätze würde ich aber einfach eine Matrix verwenden: Open in Online-Editor
\documentclass[fontsize=12pt,landscape]{scrartcl} \usepackage[utf8]{inputenc} \usepackage{bbding} \usepackage{graphicx} \usepackage{ifthen} \usepackage{tikz} \usetikzlibrary{matrix} \tikzset{ platz/.style={ draw, text width=3cm,% <- groß genug wählen align=center, minimum height=4\baselineskip% <- groß genug wählen }} \newcommand\sch[3]{{ #1\\ \ifnum#2>0 \foreach \k in {1,...,#2}{\scalebox{.7}{\rotatebox[x=0mm, y=2mm]{-90}{\HandLeft}}} \else \phantom{\rotatebox[x=0mm, y=2mm]{-90}{\HandLeft}} \fi\\% \pgfmathparse{#3+3} \ifcase\pgfmathresult% \phantom{0} \or $ -- $ \or $ - $ \or $ 0 $ \or $ + $ \or $ ++ $ \else\phantom{0} \fi }} \begin{document} \begin{tikzpicture} \matrix(sitzplan)[ matrix of nodes, row sep=3mm, column sep=-\pgflinewidth, nodes in empty cells, nodes={platz,anchor=center} ]{ &&[3mm]|[draw=none]|&|[draw=none]|&[3mm]&\\ &&\sch{Schüler 1}{2}{0}&\sch{Schüler 2}{3}{1}&\sch{Schüler 3}{2}{0}&\\ \sch{Schüler 4}{3}{1}&\sch{Schüler 5 A.}{2}{0}&\sch{Schüler 8}{2}{-1} &\sch{Schüler 9}{3}{1}&&\\ \sch{Schüler 5 Z.}{2}{0}&\sch{Schüler 6}{4}{2}&&\sch{Schüler 7}{2}{-1}&&\\ }; \path (sitzplan-1-3)--node[platz]{Lehrer}(sitzplan-1-4); \end{tikzpicture} \end{document} Ergebnis: beantwortet 23 Jun '15, 12:10 esdd Vielen Dank! Das sieht sehr gut und übersichtlich aus! Es ist genau das, was ich wollte. :)
(23 Jun '15, 19:21)
maphy-psd
|
Coole Idee mit dem Sitzplan.
Normalerweise sollte
\usepackage{varwidth}
\begin{varwidth}{2cm}
... Text ...
\end{varwidth}
oder
execute at begin node={\begin{varwidth}{2cm}},
execute at end node={\end{varwidth}}]
Aber: Das Beispiel scheint mir übertrieben kompliziert. Daher weiß ich nicht, wo ich das dazuschreiben könnte. Kompliziert auch, weil normalerweise möchte ich die Sitzplatzpersonen simpel in einer Textdatei eingeben:
Max Muster, Paul Müller,...
und der Rest sollte automatisch geschehen. Beim angegebenen Bsp. scheint mir allein diese Eingabe zu aufwenig.Erstmal danke für den Tipp. Mir ist bewusst, dass es nicht grad ein Minimalbeispiel ist. Es ist auch nur eine erste Version und das ganze in externe Dateien auszulagern, wäre der nächste Schritt.