ref: 2c3f4e76a07feb45795ffc5bf387127510a9d4f5
dir: /txt2ms/
#!/bin/awk -f # if someone wants to use that: # ‥text‥ to print italic # ‥‥text‥‥ to print bold # it might be better to just use \fI and \fB directly function parsed(a){ if(dontparse) return a gsub(/‥‥‥[^‥]+‥‥‥/, "\\f(CW&\\fR", a) gsub(/‥‥‥/, "", a) gsub(/‥‥[^‥]+‥‥/, "\\fB&\\fR", a) gsub(/‥‥/, "", a) gsub(/‥[^‥]+‥/, "\\fI&\\fR", a) gsub(/‥/, "", a) return a } BEGIN { #print ".de XS\n.ds LQ \"\"\n.nr |i (\\\\$1i-1i)/3u\n.ie '\\\\$1'0' .tm TOC:.XL \\\\$1 \\\\*(LQ\\\\$2\\\\*(LQ \\\\n%\n.el .tm TOC:.XL \\\\$1 \\\\*(LQ\\h'\\\\n(|iu'\\\\*(SN\\0\\0\\\\$2\\\\*(LQ \\\\n%\n.." istitle = 1 } firstheader && NR == 1 { printf ".TL\n%s\n", parsed($0) nextline = 1 } $1 ~ /^\[\[\[ms/ { ismsblock = 1 next } $1 ~ /^\[\[\[/ { ignore = 1 next } $1 ~ /^\]\]\]/ { ismsblock = 0 ignore = 0 next } ignore { next } ismsblock { print next } $1 ~ /^#+$/ { l = length($1) $1 = "" sub(/^[ \t]*/, "") printf ".NH %d\n.LG\n%s\n.NL\n", l, parsed($0) #printf ".XS %d \"%s\"\n", l, parsed($0) istitle = 1 nextline = 1 } $1 ~ /^-/ { $1 = "" sub(/^[ \t]*/, "") printf ".IP •\n%s\n", parsed($0) nextline = 1 } /^$/ { if(istitle) printf ".LP" else printf ".PP" istitle = 0 } { if(nextline == 0) print parsed($0) else nextline = 0 }