Auch hier gefragt: https://tex.stackexchange.com/questions/410335/building-a-tikz-matrix-from-specific-datas Wenn ich eine Tabelle des Typs Öffne in Overleaf
1 | 3 | s 1 | 1 | r 5 | 3 | b 11 | 3 | b 3 | 1 | r 19 | 3 | s habe (hier als Beispiel, es können auch mehr Spalten sein), in der jede Zelle drei Informationen enthält, wie bringe ich das am besten in eine TikZ-Matrix; unter Verwertung der Informationen; etwa: Öffne in Overleaf
%\documentclass[11pt, landscape]{scrartcl} \documentclass[border=3mm, varwidth]{standalone} \usepackage[ngerman]{babel} \usepackage{tikz, amsmath, amssymb} \usetikzlibrary{matrix} \begin{document} IST: \begin{verbatim} 1 | 3 | s 1 | 1 | r 5 | 3 | b 11 | 3 | b 3 | 1 | r 19 | 3 | s \end{verbatim} SOLL: \\ \begin{tikzpicture} \matrix (m) [ ampersand replacement=\&, matrix of math nodes, nodes in empty cells, ] {% \frac13 \& |[text=red]|1 \\ |[text=blue]|\frac53 \& |[text=blue]|\frac{11}{3} \\ |[text=red]|3 \& \frac{19}{3} \\ }; \end{tikzpicture} \end{document} gefragt 13 Jan '18, 16:00 cis
Ergebnis 5 von 6
show 1 more comments
|
Mit Öffne in Overleaf
\documentclass{article} \usepackage{luacode} \usepackage{xcolor} \colorlet{s}{black} \colorlet{b}{blue} \colorlet{r}{red} \begin{luacode*} local lpeg = assert(require"lpeg") local C, P, R, S = lpeg.C, lpeg.P, lpeg.R, lpeg.S local space = S(" \t")^0 local line = S("\n\r")^0 local integer = space * R("09")^1 / tonumber local sep = space * P("|") local color = space * C(R("az")) local function col(num, denom, color) if (denom == 1) then tex.sprint(string.format("\\textcolor{%s}{$%d$}",color,num)) else tex.sprint(string.format("\\textcolor{%s}{$\\frac{%d}{%d}$}",color,num,denom)) end end local function row() tex.sprint("\\medbreak") end local entry = ((integer * sep * integer * sep * color / col)^1 * line / row)^1 function parse(tab) entry:match(tab) end \end{luacode*} \begin{document} \begin{luacode*} parse[[ 1 | 3 | s 1 | 1 | r 5 | 3 | b 11 | 3 | b 3 | 1 | r 19 | 3 | s ]] \end{luacode*} \end{document} Das ganze in eine Tabelle zu packen überlasse ich mal als Übung. In ConTeXt ist das natürlich mal wieder unendlich einfacher... Öffne in Overleaf
\definecolor[s][black] \definecolor[b][blue] \definecolor[r][red] \startluacode local lpeg = assert(require"lpeg") local C, P, R, S = lpeg.C, lpeg.P, lpeg.R, lpeg.S local space = S(" \t")^0 local line = S("\n\r")^0 local integer = space * R("09")^1 / tonumber local sep = space * P("|") local color = space * C(R("az")) local function col(num, denom, color) if (denom == 1) then context.NC(string.format("\\color[%s]{$%d$}",color,num)) else context.NC(string.format("\\color[%s]{$\\frac{%d}{%d}$}",color,num,denom)) end end local function row() context.NC() context.NR() end local entry = ((integer * sep * integer * sep * color / col)^1 * line / row)^1 function parse(tab) context.startTABLE{ frame="off", align="middle,lohi" } entry:match(tab) context.stopTABLE() end \stopluacode \starttext \startluacode parse[[ 1 | 3 | s 1 | 1 | r 5 | 3 | b 11 | 3 | b 3 | 1 | r 19 | 3 | s ]] \stopluacode \stoptext beantwortet 15 Jan '18, 23:04 Henri |
Was hast du denn schon versucht?
Mmmhh... gute Frage. Ich bin mir gar nicht so sicher gerade, in welche Richtung es gehen sollte. Mit einem Tipp oder Denkanstoß in die richtige Richtung, kann ich die Aufgabe sicher selbst lösen. Ich dachte heute, man muss vermutlich jede Zelle als eigenen Datensatz einlesen und das dann in einen anderen Datensatz stecken. Also quasi so viele Tabellen/Matrizen in einer Matrix, wie es Zellen gibt. Kann natürlich auch sein, dass ich damit auf dem falschen Dampfer bin.
Ich habe heute gesehen, das es bei
pgfplots
einenmatrixplot
gibt. Das scheint mir sehr vielversprechend. https://tex.stackexchange.com/questions/305356/pgfplots-percentage-in-matrix-plot?rq=1 Vielleicht kann ich damit etwas basteln. Mir bereitet die Natur der Zellen ("3 Infos") Probleme; ich habe da keine gute Idee.OK, ich denke, ich werde dann mal mit pgfplost / matrix plot etwas erstellen. Und die Frage hier ggf. dann löschen. Nur die Dateneinlese ist mir da nicht klar, im Hinblick auf die Art der Zellen in meiner Tabelle. (Und ggf. gewisse Layoutansprüche, aber das sind dann triviale Zusatzaufgaben.)
Crosspost auf Englisch https://tex.stackexchange.com/questions/410335/building-a-tikz-matrix-from-specific-datas
@Henri @Crosspost Habe ich aber oben angegeben. Da kam ein m.E. entscheidenender Tipp, und zwar: Ich glaube, die Ausgabe mit den Balken
1|2|a
ist Mist, da es so in eine nichttriviale Einlese ausartet. Ich schließe daher die Frage und überlege mir, wie ich das neu aufziehen kann.