1#!/bin/sh 2# 3############################################################################### 4# 5# Wrapper for GNU groff to convert man pages to a few formats 6# 7# Usage: manconv.sh FORMAT [PAPER_SIZE] < in.1 > out.suffix 8# 9# FORMAT can be ascii, utf8, ps, or pdf. PAPER_SIZE can be anything that 10# groff accepts, e.g. a4 or letter. See groff_font(5). PAPER_SIZE defaults 11# to a4 and is used only when FORMAT is ps (PostScript) or pdf. 12# 13# Multiple man pages can be given at once e.g. to create a single PDF file 14# with continuous page numbering. 15# 16############################################################################### 17# 18# Author: Lasse Collin 19# 20# This file has been put into the public domain. 21# You can do whatever you want with this file. 22# 23############################################################################### 24 25FORMAT=$1 26PAPER=${2-a4} 27 28# Make PostScript and PDF output more readable: 29# - Use 11 pt font instead of the default 10 pt. 30# - Use larger paragraph spacing than the default 0.4v (man(7) only). 31FONT=11 32PD=0.8 33 34SED_PD=" 35/^\\.TH /s/\$/\\ 36.PD $PD/ 37s/^\\.PD\$/.PD $PD/" 38 39case $FORMAT in 40 ascii) 41 groff -t -mandoc -Tascii | col -bx 42 ;; 43 utf8) 44 groff -t -mandoc -Tutf8 | col -bx 45 ;; 46 ps) 47 sed "$SED_PD" | groff -dpaper=$PAPER -t -mandoc \ 48 -rC1 -rS$FONT -Tps -P-p$PAPER 49 ;; 50 pdf) 51 sed "$SED_PD" | groff -dpaper=$PAPER -t -mandoc \ 52 -rC1 -rS$FONT -Tps -P-p$PAPER | ps2pdf - - 53 ;; 54 *) 55 echo 'Invalid arguments' >&2 56 exit 1 57 ;; 58esac 59