#! /bin/gawk -f # Last edited on 2002-01-09 03:16:36 by stolfi BEGIN { inside_parag = 0; after_break = 1; } /^[#]/ { next; } /^ *$/{ if (inside_parag) { if (! after_break) { printf "÷\n"; } printf "=\n"; inside_parag = 0; after_break = 1; } next; } /./{ lin = ($0 " "); # Remove known crud: lin = gensub(/[{][^{}]*[}]/, "", "g", lin); lin = gensub(/[\[\]]/, "", "g", lin); lin = gensub(/^[ ]*[»]/, "", "", lin); # lin = gensub(/^[ ]*['][']/, "", "", lin); # Remember if line ended with a line break is_break = (lin ~ /[÷][ ]*$/); # Remove repeated line breaks: if (after_break) { lin = gensub(/^[ ]*[÷]/, "", "", lin); } # Isolate punctuation lin = gensub(/[.,:;()\[\]¡!¿?"`'«»÷]/, " \\0 ", "g", lin); lin = gensub(/[-][-]+/, " \\0 ", "g", lin); # Normalize spaces gsub(/^[ ]*/, "", lin); gsub(/[ ][ ]+/, " ", lin); if (lin != " ") { # Break words and write: gsub(/[ ]/, "\n", lin); printf "%s", lin; # After_break is determined by this line's termination: after_break = is_break; } else { # After_break remains unchanged } inside_parag = 1; }