Ich habe mir einen morphologischen KJasten gebastelt und würde gerne die Skizzierung des Lösungsweges verändern. Ich möchte statt der Verbindung über captions die Linien von Mittelpunkt des Bildes zum nächsten Mittelpunkt des Bildes verbinden. Darüber hinaus möchte ich einen Verbindungspunkt sehen. So etwas meine ich Hier mein aktueller code: Open in writeLaTeX
\documentclass[paper=a4,DIV21,portait,12pt]{scrreprt} \usepackage[ngerman]{babel} \usepackage[latin1]{inputenc} \usepackage{booktabs} \usepackage{multirow} \usepackage{longtable} % zum Zeichnen der Lösungsvarianten \usepackage{tikz} \usetikzlibrary{decorations.pathreplacing} \newcommand\savepos[1]{\tikz[remember picture]{\node(#1){};}} % Formatierung Zaehler \newcounter{ZaehlerZeile} \newcommand\ZaehlerZeile{\textbf{\stepcounter{ZaehlerZeile}\alph{ZaehlerZeile}}} \begin{document} \begin{longtable}{ m{0.5cm}% Zähler Spalte m{3cm} % Funktion Spalte *{5}{c} % restliche Spalten } \caption{Morphologischer Kasten} \label{morphKasten} \\ \toprule & \multirow{2}{*}{\large\textbf{Teilfunktion}} & \multicolumn{5}{c}{\large\textbf{Lösungsvarianten}} \\ & & 1 & 2 & 3 & 4 & 5 \\ \midrule & &\savepos{a}{Caption} & {Caption} & {Caption} & {Caption} & {Caption} \\ \ZaehlerZeile & \textit{Funktion 1} & \begin{minipage}{2cm} \rule{2cm}{2cm} % schwarzes Quadrat als Lückenfüller \end{minipage} & \begin{minipage}{2cm} \rule{2cm}{2cm} \end{minipage} & \begin{minipage}{2cm} \rule{2cm}{2cm} \end{minipage} & \begin{minipage}{2cm} \rule{2cm}{2cm} \end{minipage} & \begin{minipage}{2cm} \rule{2cm}{2cm} \end{minipage} \\ \midrule & &\savepos{b}{Caption} & {Caption} & {Caption} & {Caption} & {Caption} \\ \ZaehlerZeile & \textit{Funktion 2} & \begin{minipage}{2cm} \rule{2cm}{2cm} % schwarzes Quadrat als Lückenfüller \end{minipage} & \begin{minipage}{2cm} \rule{2cm}{2cm} \end{minipage} & \begin{minipage}{2cm} \rule{2cm}{2cm} \end{minipage} & \begin{minipage}{2cm} \rule{2cm}{2cm} \end{minipage} & \begin{minipage}{2cm} \rule{2cm}{2cm} \end{minipage} \\ \midrule & & \savepos{c}{Caption} & {Caption} & {Caption} & {Caption} & {Caption} \\ \ZaehlerZeile & \textit{Funktion 3} & \begin{minipage}{2cm} \rule{2cm}{2cm} % schwarzes Quadrat als Lückenfüller \end{minipage} & \begin{minipage}{2cm} \rule{2cm}{2cm} \end{minipage} & \begin{minipage}{2cm} \rule{2cm}{2cm} \end{minipage} & \begin{minipage}{2cm} \rule{2cm}{2cm} \end{minipage} & \begin{minipage}{2cm} \rule{2cm}{2cm} \end{minipage} \\ \bottomrule \end{longtable} % Lösungsvariante 1 \begin{tikzpicture}[remember picture,overlay] \draw[color=red, line width = 2] ([xshift=7mm]a.south) -- ([xshift=7mm]b.north) ; \draw[color=red, thick] ([xshift=7mm]b.north) -- ([xshift=35mm]c.north) ; \end{tikzpicture} % Lösungsvariante 2 \begin{tikzpicture}[remember picture,overlay] \draw[color=blue, line width = 2] ([xshift=55mm]a.south) -- ([xshift=55mm]b.north) ; \draw[color=blue, line width = 2] ([xshift=55mm]b.north) -- ([xshift=100mm]c.north) ; \end{tikzpicture} \end{document} |
Hier ist ein Vorschlag, bei dem der Tabelleninhalt als TikZ-Matrix dargestellt wird. Damit die ersten Spalten vertikal zentriert zu den kleinen Bildern sind und die Mittelpunkte der Bilder einfach angesprochen werden können, setze ich die Beschriftungen der Bilder in den Abstand zwischen den Matrixzeilen. Hinterher werden noch die Kopfzeile und die Trennlinien ergänzt. Da man die Zellen einer TikZ-Matrix automatisch benennen lassen kann, können die Verbindungslinien anschließend mit Open in writeLaTeX
\documentclass[DIV=21,12pt,captions=tableheading]{scrreprt} \usepackage[ngerman]{babel} \usepackage[utf8]{inputenc} \usepackage{booktabs} \usepackage{tikz} \usetikzlibrary{matrix} \newcommand\zeilenabstand{\normalbaselineskip} \newcommand\grafik[2]{% \begin{minipage}{2cm} \centering\smash{\raisebox{\tabcolsep}{#1}}% \includegraphics[width=\linewidth,height=2cm]{#2}% \end{minipage}% } \tikzset{vp/.style={circle,fill,inner sep=3pt}} \newcommand\verbindungslinie[3]{ \foreach [remember=\p as \lastp (initially #2)] \p in {#3} \draw[#1](\lastp.center)node[vp]{}--(\p.center)node[vp]{}; } \usepackage{mwe}% für example-image \begin{document} \begin{center} \begin{minipage}{\linewidth} \captionof{table}{Morphologischer Kasten}\label{morphKasten} \begin{tikzpicture}[ very thick, nodes={inner sep=\tabcolsep} ] \matrix[ matrix of nodes, inner sep=0pt, row sep=\zeilenabstand, column 2/.style={minimum width=5cm}, ](m){ 1&Teilfunktion 1 &\grafik{Text}{example-image} &\grafik{Text}{example-image} &\grafik{Text}{example-image} &\grafik{Text}{example-image}\\ 2&Teilfunktion 2 &\grafik{Text}{example-image} &\grafik{Text}{example-image} &\grafik{Text}{example-image} &\grafik{Text}{example-image}\\ \ldots&{} &\grafik{Text}{example-image} &\grafik{Text}{example-image} &\grafik{Text}{example-image} &\grafik{Text}{example-image}\\ n&Teilfunktion n &\grafik{Text}{example-image} &\grafik{Text}{example-image} &\grafik{Text}{example-image} &\grafik{Text}{example-image}\\ &&{}&{}&{}&{}\\ }; % Kopfzeile \node(ul)[anchor=south west] at ([yshift={\zeilenabstand+\aboverulesep+\belowrulesep}]m.north west) {Teilfunktion}; \node(or)[anchor=south east] at (ul.north-|m-1-2.east){Lösungsvarianten}; \foreach[count=\i from 3] \c in {1,2,\ldots,m} \node[anchor=base] at (or.base-|m-1-\i){\c}; % Tabellenlinien \draw[line width=\lightrulewidth](or.north-|ul.west)--(or.east|-ul.south) ([yshift=-\aboverulesep]ul.south-|m.west) --([yshift=-\aboverulesep]ul.south-|m.east); \draw[line width=\heavyrulewidth]([yshift=\belowrulesep]or.north-|m.west) --([yshift=\belowrulesep]or.north-|m.east) ([yshift={-\aboverulesep-\zeilenabstand}]m.south west) --([yshift={-\aboverulesep-\zeilenabstand}]m.south east); % Verbindungslinien \verbindungslinie{red}{m-1-3}{m-2-4,m-3-3,m-4-5,m-5-5} \verbindungslinie{blue}{m-1-5}{m-2-3,m-3-3,m-4-3,m-5-3} \verbindungslinie{green}{m-1-6}{m-2-6,m-3-4,m-4-6,m-5-6} \foreach \f/\p/\t in {red/m-5-5/LV1,blue/m-5-3/LV2,green/m-5-6/LV3} \node[\f,below,font=\bfseries]at(\p){\t}; \end{tikzpicture} \end{minipage} \end{center} \end{document} Die Tabelle kann man natürlich auch in eine Gleitumgebung wie Ist die Tabelle länger als eine Seite, muss man den Seitenumbruch allerdings leider manuell einfügen, in dem man zwei beantwortet 28 Okt '14, 01:33 esdd Das sieht ja super aus! Den Seitenumbruch manuell einzufügen ist zwar nicht schön aber bringt einen ja auch nicht um... Gibst da keine Idee für?
(29 Okt '14, 19:07)
Giovario
Ich würde gerne noch neben der Nummerierung in vertikaler Schrift bestimmte funktionen davor Schreiben. Sie sollen aber nur für bestimmte Zeilen gelten. Jemand eine Idee?
(01 Jan '15, 19:13)
Giovario
@Giovario Kannst Du Deine Anschlussfrage als neue Frage posten? Dann wird sie besser gesehen als hier unten. Hier sind Antworten stets "echte" Antworten auf die Frage, keine Folgefragen oder Zusatzinfos, sondern Lösungen. Ungewohnt und anders als in Webforen, doch innovativ und nutzbarer für Archivierung und Nachschlagen von Lösungen. Bemerkungen gern wie hier als Kommentare.
(01 Jan '15, 20:50)
stefan ♦♦
Ich bin mir nicht sicher ob das noch jemand liest, aber ich probiere es mal. Kann man die Spaltenbreite manuell festlegen bzw. einen Zeilenumbruch manuelle einfügen?
(20 Mai '15, 10:11)
lude
|
Ohne es ausprobiert zu haben scheint mir, das eine mögliche und wahrscheinlich sogar einfache Variante wäre, eine TikZ-Matrix statt einer Tabelle zu verwenden. Dann ließen sich die einzelnen Zellen, die dann ja Knoten sind, einfach über den
center
-Anker verbinden. (Ein Problem könnte dann natürlich sein, das Layout an andere Tabellen im Dokument anzupassen...)@Giovario Brauchst Du wirklich
longtable
? Das Einzeichnen der Verbindungen wird bei einem möglichen automatischen Umbruch innerhalb der Tabelle schwierig.@esdd
longtable brauch ich nicht nicht unbedingt. Ich frage mich nur wie das ganze dann aussieht wenn ich auf eine weitere seite muss! Wie würdest du das denn ohne longtable realisieren
@clemens
Also mit Matrizen in tikz habe ich bis jetzt nicht viel zu tun gehabt.. Hört sich aber schon interessant an... Wie kann man sowas machen?
Schöne Aufgabe, kriegt man auch hin! Wenn ich gerade bisschen Zeit hätte, würde ich loslegen - evtl. später, wenn nicht schon jemand schneller ist. Idee:
tikzmark
-Paket (oder eben TikZ mitoverlay
undremember picture
), Marker mit array-Feature>{...}
in die Spalten einfügen und dadurch zum Überzeichnen adressieren. Vllt. geht auchlongtable
, wäre auszuprobieren, Umbrüche ändern sich ja durch so ein overlay nicht.@Stefan Mir ist nicht klar, wie man bei einem automatischen Seitenumbruch in einer
longtable
mit den Verbindungslinien ähnlich automatisch von der einen Seite auf die nächste wechseln könnte.