man funciona da seguinte maneira:
- usa
groffpara converter arquivos de origem de páginas de manual da linguagem de marcação nroff para texto imprimível; - então passa
groffoutput para um pager que mostra para o usuário. O pager padrão éless.
groff formata a página para a largura man diz para usar. Por padrão, man usa a largura total do console, mas podemos substituí-lo usando a variável de ambiente MANWIDTH :
export MANWIDTH=100
Não encontrei nenhuma maneira de instruir groff sobre um recuo, mas, felizmente, há o less facility chamado pré-processador de entrada ( man less para os detalhes). Pode-se fornecer um comando para passar less input. Então eu escrevi um script que recua cada linha da entrada:
$ cat $HOME/bin/olivetti
#!/bin/sh
# Define desired width of the text.
WIDTH=100
# Evaluate left indentation based on terminal width.
INDENT=$(( ( $(tput cols) - $WIDTH ) / 2 ))
# Make line of that amount of spaces.
INDENT_LINE=$( printf %${INDENT}s )
# Put it on the beginning of each line of the input file.
sed "s/^/${INDENT_LINE}/" -
less recebe o comando do pré-processador de entrada da variável de ambiente $LESSOPEN :
export LESSOPEN="|- olivetti %s"
|- é instruir less para usar o pré-processador como um canal: redirecionar a entrada padrão para ele e ler a saída padrão dele.