Hallo!

Ich habe kürzlich auf dem Matheplaneten eine interessante Frage zu folgendem (HTML-)Bild, hier ein Ausschnitt, gelesen. Die Frage war: Wie läßt sich sowas 'automatisch' umsetzen; also sprich automatische Tabellenanpassung, Farbwahl etc., am ehesten vll. sogar so, daß man die Namen nicht mehr direkt in die Tabelle schreiben muß, sondern automatisch in eine Tabellenposition hinzufügt.

Danke fürs Lesen und das Interesse!

alt text

gefragt 27 Apr '14, 22:33

cis's gravatar image

cis
9.5k93459491
Akzeptiert-Rate: 29%

Eigentlich ist es ja keine Tabelle, da keine Spalten vorhanden sind. Es ist wie farbig markierter Fließtext mit größeren Wortabständen. Am Rand müssen die "Ziegelsteine" natürlich passen. Das können wir TeX mit seinem Blocksatz erledigen lassen. Dann könnte man mit einer Funktion die Wörter gleichmäßig und überlappungsfrei rahmen und färben lassen. Das klingt nach einer möglichen Anwendung von xesearch (kann Wörter automatisch finden und behandeln) oder LuaTeX. Sehr interessant!

(27 Apr '14, 22:45) stefan ♦♦

Wegen der Farbwahl dachte ich an eine "Schleife" und wegen den verschieden großen Zellen dachte ich spontan an eine "TikZ-Matrix".

(27 Apr '14, 22:49) cis

Ohne Spalten statt Matrix einfach Node-Ansammlung, dann mit Schleife und durchwechselnden Stilen, ja, wäre eine Möglichkeit. Ich denke an geraden rechten Rand. Beim Original wird der Rand beim Text nicht gleichmäßig eingehalten, nur mit den Rahmen, also könnte man hier auch den letzten Node etwas dehnen/stauchen, damit es passt. Oder alle in der Zeile. Oder verlässt sich auf den horizontalen Ausgleich von LaTeX. Daher fand ich gerade die Idee, den Text mit TeX setzen zu lassen und per "Hook" einfärben zu lassen, toll.

(27 Apr '14, 23:00) stefan ♦♦

Mir ist gerade aufgefallen, im "Original" kann man auch den HTLM-Code einsehen: Puh, also das MUSS einfacher gehen!

(27 Apr '14, 23:03) cis

Vielleicht mit dem völlig abgefahrenen Paket "NOX"? nox.sty Man beachte Heinz-Günther und Martina in der letzten Zeile.

Open in writeLaTeX
\documentclass[10pt,a4paper]{article}%
\usepackage[utf8]{inputenc}%
\usepackage[ngerman]{babel}%
\usepackage[colspecstaysintable,c]{nox}
\usepackage{amsmath,graphicx,tabularx,xcolor}
\author{ctansearch,rais}
\begin{document}%
\renewcommand\cellflush{\centering}
\deflintab{\nox\framebox{\nox\colorbox{red}{Berthold}},\nox\framebox{\nox\colorbox{green}{Karl-Otto}},\nox\framebox{\nox\colorbox{green}{Fritz}},\nox\framebox{\nox\colorbox{green}{Lisa-Maria}},\nox\framebox{\nox\colorbox{green}{Martina}},\nox\framebox{\nox\colorbox{red}{Berthold}},\nox\framebox{\nox\colorbox{green}{Karl-Otto}},\nox\framebox{\nox\colorbox{green}{Fritz}},\nox\framebox{\nox\colorbox{green}{Marina}},\nox\framebox{\nox\colorbox{green}{Martina}},\nox\framebox{\nox\colorbox{green}{Martina}},\nox\framebox{\nox\colorbox{green}{Martina}},\nox\framebox{\nox\colorbox{green}{Martina}},\nox\framebox{\nox\colorbox{green}{Martina}},\nox\framebox{\nox\colorbox{green}{Martina}},\nox\framebox{\nox\colorbox{green}{Martina}},\nox\framebox{\nox\colorbox{green}{Franziska}},\nox\framebox{\nox\colorbox{green}{Heinz-Günther}},\nox\raisebox{1\baselineskip}{\nox\kern+2.5em\nox\framebox{\nox\colorbox{white}{Martina}}}}
\tntabledimen{1}{4}
\tntab[4]{22}{22/4}

\end{document}
Permanenter link

beantwortet 27 Apr '14, 23:41

ctansearch's gravatar image

ctansearch
(ausgesetzt)
Akzeptiert-Rate: 18%

bearbeitet 28 Apr '14, 00:22

Das Nox-Paket ist glaub gar nicht so unbekannt. Ich schaue es mir nacher mal genauer an ;)

Insgeheim hoffe ich ja immer noch auf eine elegante TikZ-Lösung. Bin auch schon dran, manches ist da für mich nicht ganz einfach.

(27 Apr '14, 23:57) cis

Oder mit longtable, wie so oft...

Open in writeLaTeX
    \documentclass[10pt,a4paper]{article}%
\usepackage[utf8]{inputenc}%
\usepackage[ngerman]{babel}%
\usepackage[colspecstaysintable,c]{nox}
\usepackage{amsmath,graphicx,tabularx,xcolor,longtable}
\begin{document}%
\setlength{\tabcolsep}{-0.1em}%
\begin{longtable}{p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}p{1em}}%
\multicolumn{13}{l}{\colorbox{red}{\framebox{Heinz-Günther\dots}}}&%
\multicolumn{9}{l}{\colorbox{green}{\framebox{Franziska}}}&%
\multicolumn{7}{l}{\colorbox{blue}{\framebox{Martina}}}\\%
\multicolumn{7}{l}{\colorbox{red}{\framebox{Herbert}}}&%
\multicolumn{3}{l}{\colorbox{green}{\framebox{Fred}}}&%
\multicolumn{7}{l}{\colorbox{blue}{\framebox{Judith}}}&%
\multicolumn{7}{l}{\colorbox{red}{\framebox{Bettina}}}&%
\multicolumn{7}{l}{\colorbox{red}{\framebox{Rea}}}&\\
\multicolumn{7}{l}{\colorbox{red}{\framebox{Stefanie}}}&%
\multicolumn{4}{l}{\colorbox{green}{\framebox{Werner}}}&%
\multicolumn{7}{l}{\colorbox{blue}{\framebox{Micha}}}&%
\multicolumn{7}{l}{\colorbox{red}{\framebox{Anton}}}&\\
\end{longtable}%
\end{document}%
Permanenter link

beantwortet 28 Apr '14, 02:11

ctansearch's gravatar image

ctansearch
(ausgesetzt)
Akzeptiert-Rate: 18%

Mmmh, das Problem ist halt, wenn ich es richtig sehe, daß man die Zuordnung selbst vornehmen muß. Damit können wir gegen die HTML-Lösung noch nicht auftrumpfen. Vom Bild her paßt es schonmal.

(28 Apr '14, 02:39) cis

@cis Naja, die Zuordnung ist auch kein Problem, die Tabellenzellen kann man benennen und so eine Standardtabelle erstellen und die Zuordnung nach beliebigen Kritierien vornehmen, z.B. Punktezahl oder alphabetisch.

(28 Apr '14, 02:56) ctansearch

Hallo cis, gehts hier noch weiter? Eine Antwort nach Stefans Ansatz, das Ganze als Fließtext zu behandeln. (textcolor{farbe}{q}) dient nur als Abstandshalter)

Open in writeLaTeX
\documentclass[10pt,a4paper]{article}%
\usepackage[utf8]{inputenc}%
\usepackage[ngerman]{babel}%
\usepackage{xcolor}
\newcommand{\person}[2]{\definecolor{farbe}{rgb}{#2}\colorbox{farbe}{\dotfill\hfil\textcolor{farbe}{q}#1}\colorbox{farbe}{\textcolor{farbe}{Iq}}\ \hspace{-1em}\hfil}

\def\first{\person{Maria}{0.6,0.2,0.3}}\def\second{\person{Franziska}{0.6,0.7,0.3}}\def\third{\person{Franz}{0.9,0.7,0.3}}\def\fourth{\person{Tim}{0.6,0.4,0.3}}\def\fifth{\person{Immanuel
  Kant}{0.5,0.5,0.5}}
\parindent=0pt
\begin{document}%
\first\second\fifth\third\fourth\first\second\third\fifth\fourth\first\second\third\fourth\first\second\third\fourth\first\fifth\second\third\fourth\first\second\third\fourth\first\second\third\fourth\first\second\third\fourth\fourth\first\fourth\first\fifth
\end{document}%
Permanenter link

beantwortet 20 Mai '14, 22:09

ctansearch's gravatar image

ctansearch
(ausgesetzt)
Akzeptiert-Rate: 18%

bearbeitet 20 Mai '14, 22:12

Wow, das sieht sehr gut aus! Da solltest ein Bild ergänzen, daß die Leute mal sehen, was da los ist ;)

(20 Mai '14, 22:22) cis

PS: Ich hatte halt irgendwie gehofft, man gibt nur noch die Namen ein und erhält den Rest (Farbe, Position,...) autom.

(20 Mai '14, 22:23) cis

@cis Das hängt dann davon ab, wovon die Farbe und Position abhängen... Hat jede Person ihre eigene Farbe, oder hat jede Position ihre eigene Farbe, oder ändern sich Farbe und Position zufällig? Das heißt: Haben Farbe und Position einen Informationswert, oder soll es nur einfach bunt sein?

(20 Mai '14, 22:41) ctansearch

@cis Ach übrigens, Du hast auch viele offene Fragen, ca 11, Könntest Du mal durchsehen, welche Du als beantwortet kennzeichnen kannst?. Ich gehe gerade die Seiten nach offenen Fragen durch, nur so, wegen der Systematik.

(20 Mai '14, 22:46) ctansearch

Ja, die Farbzuordnung weiß ich auch nicht so recht, am besten willkürlich. Ich habe gerade etwas ausprobiert; den Rest könnte man vll. mit ein paar foreach-Schleifen hinbekommen:

\foreach[] \N  in {Paul, Monika, ...} 
(20 Mai '14, 23:52) cis
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×730
×256
×7

gestellte Frage: 27 Apr '14, 22:33

Frage wurde gesehen: 11,385 Mal

zuletzt geändert: 20 Mai '14, 23:52