Überarbeitungsverlauf[Zurück]
Klicke auf Einblenden/Ausblenden von Überarbeitungen 4

16 Jan '18, 00:44

Henri's gravatar image

Henri
15.7k133943

Mit `lpeg` lassen sich beliebige Dateiformate einlesen. \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} [![alt text][1]][1] text][1]][2] Das ganze in eine Tabelle zu packen überlasse ich mal als Übung. In ConTeXt ist das natürlich mal wieder unendlich einfacher... \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" 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 [![alt text][3]][3] [1]: http://texwelt.de/wissen/upfiles/test_383.png [2]: http://texwelt.de/wissen/upfiles/test_383.png [3]: http://texwelt.de/wissen/upfiles/test_384.png
Klicke auf Einblenden/Ausblenden von Überarbeitungen 3

16 Jan '18, 00:39

Henri's gravatar image

Henri
15.7k133943

Mit `lpeg` lassen sich beliebige Dateiformate einlesen. \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} [![alt text][1]][1] Das ganze in eine Tabelle zu packen überlasse ich mal als Übung. In ConTeXt ist das natürlich mal wieder unendlich einfacher... \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" } 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 [1]: http://texwelt.de/wissen/upfiles/test_383.pnghttp://texwelt.de/wissen/upfiles/test_383.png
Klicke auf Einblenden/Ausblenden von Überarbeitungen 2

15 Jan '18, 23:04

Henri's gravatar image

Henri
15.7k133943

Klicke auf Einblenden/Ausblenden von Überarbeitungen 1

15 Jan '18, 23:04

Henri's gravatar image

Henri
15.7k133943