#! /usr/bin/gawk -f
# Last edited on 2025-05-04 15:40:09 by stolfi

BEGIN { 

  usage = ( ARGV[0] "\\\n" \
    "  [ -v width=WIDTH ] \\\n" \
    "  < INFILE > OUTFILE" \
  );
    
  # Reads a sequence of tokens, one or more per line. Packs those tokens,
  # separated by spaces, into lines of at most WIDTH columns (default
  # 72), left-justified.
  
  if (width == "") { width = 72; }

  lin = ""; n = 0; 
  sp = ""; k = 0;
}

/./ {
  for (i = 1; i <= NF; i++)
    { 
      wd = $(i); m = length(wd);
      if (n + m + k > width)
        { if (lin != "") { print lin; } 
          lin = wd; n = m;
        }
      else
        { lin = (lin sp wd); n += m + k; }
      sp = " "; k = 1;
      # Honor line and paragraph breaks
      if ((wd == "=") || (wd == "÷"))
        { print lin; 
          if (wd == "=") { print ""; }
          lin = ""; n = 0; 
          sp = ""; k = 0;
        }
     }
}
END { if (lin != "") { print lin; } }
             
