/* -*- gp-script -*- */ \\% Pretty print table (TeX or ascii) \\ Author: Joerg Arndt \\ License: GPL version 3 or later \\ online at http://www.jjj.de/pari/ \\ version: 2014-October-16 (18:30) read("print1w.gpi"); read("vecmanip.gpi"); printtable(v, nr, texq=1)= { /* see example below */ my(d, i, nv, n, w, vw, Pendl, Psep, Pcol, Pstart); nv = length(v); nc = ceil( nv/nr ); \\ if ( nc!=round(nc), error("printtable(): nr must divide vector length") ); if ( (nr * nc) != nv, print("printtable(): warning: nr does not divide vector length, using -1 for unknown entries"); n = nr * nc; v = vector(n, j, if (j<=nv, v[j], -1); ); ); vw = vector(nc); for (c=1, nc, w = vecminmax( vecpart_bn(v, 1+(c-1)*nr, nr ) ); w = abs(w); w=vecmax(w); \\ can be negative w = ceil(log(1.0+w)/log(10)+1); vw[c] = w; ); \\ print(" vw=" , vw); Pcol=": "; Psep=" | "; Pendl=" |"; Pstart=Psep; \\ if ( texq, Pendl=" \\\\"; Psep=" & "; Pcol=Psep; Pstart=""); if ( texq, Pendl=" \\\\"; Psep=" & "; Pcol=": & "; Pstart=""); for (r=0, nr-1, print1(Pstart); for ( c=0, nc-1, i = c*nr + r + 1; \\ ti=concat(Str(i),":"); print1w(" ",ti,3); print1w(" ",i,2); \\ print1w(Pcol, v[i], vw[c+1]); \\ if ( length(v)<=i, print1w(Pcol, v[i], vw[c+1]); \\ , \\ print1w(Pcol, "XXX", vw[c+1]); \\ ); if ( c