Нам понадобится PostScript-принтер (не обязательно физически понимающий PostScript) и два скрипта.
Вспомогательный скрипт на перле:
#!/usr/bin/perl
$tumble = 'false';
$cookie = <<"END_OF_COOKIE";
%%BeginFeature: *Duplex DuplexTumble
mark
{
(<<) cvx exec /Duplex (true) cvx exec /Tumble ($tumble) cvx exec (>>) cvx exec
systemdict /setpagedevice get exec
} stopped
cleartomark
%%EndFeature
END_OF_COOKIE
$ps = '';
while (<>) {
$ps .= $_;
}
$nsubs = ($ps =~ s/(?:\n|\r)(%%EndSetup)/\n$cookie$1/);
unless ($nsubs) {
$nsubs = ($ps =~ s/(?:\n|\r)(%%EndProlog)(?:\n|\r)/\n$1\n$cookie/);
}
unless ($nsubs) {
$nsubs = ($ps =~ s/(?:\n|\r)(%%Page:\s)/\n$cookie$1/);
}
unless ($nsubs) {
die "ERROR";
}
print $ps;
Скрипт на шеле:
#!/bin/sh
cat "$1" |
psbook |
psnup -Pa4 -2 |
pstops -b "2:0,1U(21cm,29.7cm)" |
~/bin/mkbook-duplex.pl > "$1-booklet.ps"
#pstops "2:0U(8.5in,11.7in),1"
#pstops "2:0U(8.5in,11.7in),1(-.025in,0in)" |
Теперь преобразуем исходные файл и печатаем его:
$ mkbook text.ps
$ lpr text.ps-booklet.ps
Утилита a2ps очень полезна, если у вас PostSctipt-принтер и вы часто печатаете не-форматированные тексты типа листингов программ. Кстати, a2ps умеет подсвечивать синтаксис многих языков программирования.
Вам понадобятся шрифты i18n-fonts-0.1.tar.gz
или более новые.
С ними всё время происходят какие-то лицензионные напряги,
но гугл помогает их найти во множестве по всему интернету.
Последний раз я брал отсюда
ftp://ftp.padua.org/pub/misc/a2ps/i18n-fonts-0.1.tar.gz
(если ссылка устарела — жалуйтесь).
cd /tmp
wget ftp://ftp.padua.org/pub/misc/a2ps/i18n-fonts-0.1.tar.gz
tar xzf i18n-fonts-0.1.tar.gz
cd i18n-fonts-0.1
mkdir ~/.a2ps
cp fonts/ afm/ ~/.a2ps
cp make_fonts_map.sh ~/.a2ps
cd ~/.a2ps
./make_fonts_map.sh
mv fonts.map.new fonts.map
echo 'Options: --encoding=KOI8-R' >>~/.a2psrc
Туда же можно внести и другие полезные опции. Например:
Options: --medium=A4