#!/usr/bin/nawk -f #Q&D to print off a set of arithmetic flash cards # print pdf: double sided, Landscape & Flip on Short Side # type must be sub, add, mul or div BEGIN{ test=0; type="sub"; #must be set to sub, add, mul or div if (type!="sub"&&type!="add"&&type!="mul"&&type!="div"){ print "\nError: type must be sub, add, mul or div\n"; exit; }#end if a="\x27";q="\x22"; Dir="/tmp/FLASHCARDS"; s="mkdir "Dir; if(test==1)print s;else system(s); if (type=="sub"){ for (i=1;i<=20;i++) for(j=1;j<=10;j++){ if (i>=j){ #don't subtract bigger from smaller Q[++cnt]=" "i" - "j" = "; A[cnt]=i-j; }#end if }#end for i j }#if sub if (type=="add"){ for (i=1;i<=10;i++) for(j=1;j<=10;j++){ Q[++cnt]=" "i" + "j" = "; A[cnt]=i+j; }#end for i j }#if add if (type=="mul"){ for (i=2;i<=12;i++) for(j=2;j<=12;j++){ Q[++cnt]=" "i" x "j" = "; A[cnt]=i*j; }#end for i j }#if mul if (type=="div"){ for (i=2;i<=12;i++) for(j=2;j<=12;j++){ k=i*j; if (k>=j){ #don't divide bigger by smaller Q[++cnt]=" "k" / "j" = "; A[cnt]=k/j; }#end if }#end for i j }#if div fmtQ="convert -size 230x142 xc:white -gravity center -bordercolor gray -border 1 -font Courier-Bold -pointsize 36 -draw \x22text 0,0 \x27 %s \x27\x22 %s/question_%02d.jpg"; fmtA="convert -size 232x144 xc:white -gravity center -font Courier-Bold -pointsize 36 -draw \x22text 0,0 \x27 %s \x27\x22 +flop %s/answer_%02d.jpg"; #cnt=31; if(type=="sub"||type=="add")a=0; if(type=="mul"||type=="div")a=2; i=cnt;while (i>=a){ n=0; for (j=1;j<=3;j++){ for (k=1;k<=4;k++){ i--; s=sprintf(fmtQ,Q[i],Dir,++n); if(test==1)print s;else system(s); s=sprintf(fmtA,A[i],Dir,n); if(test==1)print s;else system(s); }#end for k }#end for j for (j=1;j<=3;j++){ for (k=1;k<=4;k++){ s="montage /tmp/FLASHCARDS/question_??.jpg -mode Concatenate -tile 3x4 /tmp/FLASHCARDS/question.jpg"; if(test==1)print s;else system(s); s="montage /tmp/FLASHCARDS/answer_??.jpg -mode Concatenate -tile 3x4 /tmp/FLASHCARDS/answer0.jpg"; if(test==1)print s;else system(s); #note: page is "flopped" mirror imaged for back side of question page s= "convert /tmp/FLASHCARDS/answer0.jpg +flop /tmp/FLASHCARDS/answer.jpg"; if(test==1)print s;else system(s); }#end for k }#end for j s=sprintf("convert %s/question.jpg %s/answer.jpg -resize 3300x550 %s/flashcard_%s_%02d.pdf",Dir,Dir,Dir,type,++p); if(test==1)print s;else system(s); }#end while i=cnt }#end BEGIN