ref: b93c3599b6ad5cf0f6c45b356baa3c1146a8d559
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(/‥‥[^‥]+‥‥/, "\\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.." } 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 ".SH %d\n%s\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 }