#!/bin/bash #MANPATH="${MANPATH:-/usr/share/man}" [[ "$1" =~ [0-9](|p|n|x) ]] && sec="$1" && shift q="$1" && shift #p="$(find "$MANPATH" -name "$q".[0-9].gz)" p="$(find /usr/share/man/man*/ -name "$q".[0-9].gz|head -n 1)" read -s -p $'\033[18t' -d t cup col="${cup##*;}" gzip -dc "$p" | awk -v ORS="" -v col="$col" -v t="1" ' function wrap(arg, width){ for(p=0;p<=length(arg);p=p+(width-2)) { line=line substr(arg, p, width) "\n" } return line } BEGIN{ORS="";nr=1} {while(wrap($0, (col+(t*8)))) {RS="\n";T[0]="";{print T[t]}{for(i=1;i<6;i++) T[i]=T[i-1]" "} {skip=0 {if($0~/(\\"|^\.if)/) {skip++}} {if($0~/^\.de/) { {while($0!~/^\.\./) {skip++;getline}} }} } {if(!(skip==0)) break} {if($1~/^\.TH/) {$1=""; print "\r" $0 "\n" T[t]; break}} {if($1~/^\.SH/) {$1=""; t=1; print "\n\r" $0 "\n" T[t]; break}} {if($1~/^\.TP/) {$1=""; t=($2^1); $2=""; print T[t] $0; break}} {if($1~/^\.PD/) {$1=""; t=($2^1); $2=""; print T[t] $0; break}} {if($1~/^\.(P|PP|LP|BR)/) {$1=""; print "\n" T[t]; break}} { {if($1~/^\.B/) {$1="";b="\x1b[35m"$0"\x1b[0m ";getline; print b$0}} {if($1~/^\.I/) {$1="";b="\x1b[96m"$0"\x1b[0m ";getline; print b$0}} #{if($1~/^\.B/) {RS="^\\.B"; print "\x1b[35m"$0"\x1b[0m ";next}} #{RS="^\\.I"; print "\x1b[33m"$0"\x1b[0m ";break} } {if($1~/^\.*/) $1=""} {print $0} {if(nr