#!/usr/bin/awk -f # tr < poster2006paragraphs_modvas2feb.txt -dc "[:print:]\n" | awk -f txt2fig.awk > poster2006paragraphs_modvas2feb.fig # The tr is to remove junk added by OpenOffice. # Where the latter is maily a dummy file, the real .figs go into separate files. function writeheader() { printf "#FIG 3.2\nLandscape\nCenter\nInches\nA4\n100.00\nSingle\n-2\n1200 2\n" > filename; } function strlen(str) { w["_"]=25; W["_"]=3; w["+"]=26; W["+"]=4; w["="]=26; W["="]=4; w["{"]=13; W["{"]=8; w["}"]=13; W["}"]=9; w[","]=7; W[","]=6; w["."]=6; W["."]=6; w["'"]=7; W["'"]=7; w["a"]=20; W["a"]=5; w["b"]=23; W["b"]=3; w["c"]=21; W["c"]=4; w["d"]=23; W["d"]=5; w["e"]=20; W["e"]=4; w["f"]=18; W["f"]=4; w["g"]=23; W["g"]=4; w["h"]=24; W["h"]=3; w["i"]=12; W["i"]=4; w["j"]=13; W["j"]=0; w["k"]=25; W["k"]=3; w["l"]=12; W["l"]=4; w["m"]=38; W["m"]=3; w["n"]=23; W["n"]=4; w["o"]=21; W["o"]=5; w["p"]=23; W["p"]=3; w["q"]=23; W["q"]=4; w["r"]=17; W["r"]=3; w["s"]=17; W["s"]=6; w["t"]=13; W["t"]=4; w["u"]=24; W["u"]=3; w["v"]=22; W["v"]=4; w["w"]=32; W["w"]=5; w["x"]=23; W["x"]=4; w["y"]=21; W["y"]=5; w["z"]=20; W["z"]=4; w["A"]=34; W["A"]=4; w["B"]=29; W["B"]=4; w["C"]=31; W["C"]=4; w["D"]=33; W["D"]=4; w["E"]=29; W["E"]=4; w["F"]=26; W["F"]=4; w["G"]=34; W["G"]=4; w["H"]=34; W["H"]=4; w["I"]=15; W["I"]=4; w["J"]=18; W["J"]=4; w["K"]=34; W["K"]=5; w["L"]=29; W["L"]=4; w["M"]=42; W["M"]=4; w["N"]=34; W["N"]=4; w["O"]=33; W["O"]=5; w["P"]=26; W["P"]=4; w["Q"]=33; W["Q"]=5; w["R"]=32; W["R"]=4; w["S"]=23; W["S"]=5; w["T"]=29; W["T"]=4; w["U"]=34; W["U"]=4; w["V"]=34; W["V"]=4; w["W"]=47; W["W"]=3; w["X"]=35; W["X"]=3; w["Y"]=34; W["Y"]=4; w["Z"]=30; W["Z"]=3; w["1"]=14; W["1"]=9; w["2"]=23; W["2"]=4; w["3"]=20; W["3"]=5; w["4"]=23; W["4"]=4; w["5"]=20; W["5"]=5; w["6"]=21; W["6"]=5; w["7"]=21; W["7"]=4; w["8"]=19; W["8"]=6; w["9"]=21; W["9"]=5; w["0"]=23; W["0"]=4; w["-"]=21; W["-"]=4; w["["]=11; W["["]=7; w["]"]=10; W["]"]=5; w["("]=12; W["("]=6; w[")"]=12; W[")"]=5; w[":"]=6; W[":"]=7; w["\""]=13; W["\""]=7; w["\\"]=12; W["\\"]=4; w["("]=12; W["("]=6; w[")"]=12; W[")"]=5; w[";"]=6; W[";"]=7; w["&"]=33; W["&"]=5; w["/"]=12; W["/"]=6; w[" "]=25; W[" "]=4; w["#"]=29; W["#"]=4; len=0; n=split(str,a,//); for(j=1;j<=length(str);j++) { #printf "char=%s\n",a[j]; if( w[a[j]] ) len+=w[a[j]]+2; else printf "unknown char <%c>, with current line <%s>, input line %d\n",a[j],aline,NR > "/dev/stderr"; } # printf "incoming <%s> was %d long\n",str,len; return len; } function printline() { r=(mwidth+0)/tlen; if( eol==1 ) r=1; n=split(aline,a,//); x=0; for(j=1;j<=length(aline);j++) { dy=(j%2)*100+400; if( w[a[j]] ) dx=r*(w[a[j]]+2)*8; else dx=r*34*10; #dx=r*32*8; if( a[j]!=" " ) printf "4 0 0 50 -1 0 25 0.0000 4 255 180 %d %d %s\\001\n",x-W[a[j]]*5*r,y,a[j] >> filename; #printf "2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2\n %d %d %d %d\n",x+W[a[j]]*0,y+dy,x+W[a[j]]*0+dx,y+dy; x+=dx; } aline=""; tlen=0; y+=435*1; eol=0; } BEGIN { filename="/dev/stdout"; mwidth=17*150; FS=" "; writeheader(); } { if( $1=="#file" ) { filename=$2; y=0; writeheader(); } else if( $1=="#width" ) mwidth=$2*150; else { for(i=1;i<=NF;i++) { #printf "<%s>\n",$i >> "/dev/stderr"; if( strlen($i)+w[" "]+tlen>mwidth ) printline(); tlen+=strlen($i)+w[" "]; aline=sprintf("%s %s",aline,$i); if( i == NF ) eol=1; } if(tlen>0) printline(); if( NF == 0 ) y+=435; } }