#! /usr/bin/gawk -f # Formats a block-to-panel page to use as a header for a by-block # word distribution map. # Input should have one block per line, in the format # BLOCKNUM FOLIONUM PANEL # e.g. # 067 102 r3 function ind(k, i) { # prints k spaces for(i=1;i<=k;i++) printf " "; } BEGIN { split("", fols) split("", pans) mfol = 0 mpan = 0 nbl = 0 } /./ { nb++ if ($1 != nb) { print "bad block num" > "/dev/stderr"; exit 1 } fols[nb] = $2 m = length($2); mfol = (m > mfol ? m : mfol) pans[nb] = $3 m = length($3); mpan = (m > mpan ? m : mpan) } END { ind(indent); for(k=1;k<=nb;k++) printf "-" printf "\n" for(i=1;i<=mfol;i++) { ind(indent); for(k=1;k<=nb;k++) { m = length(fols[k]); j = i-(mfol-m); printf "%s", (j < 1 ? " " : substr(fols[k],j,1)) } printf "\n" } for(i=1;i<=mpan;i++) { ind(indent); for(k=1;k<=nb;k++) { m = length(pans[k]); j = i; printf "%s", (j > m ? "." : substr(pans[k],j,1)) } printf "\n" } ind(indent); for(k=1;k<=nb;k++) printf "-" printf "\n" }