#! /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; } }