dostałem ostatnio parę maili z prośbą o ponowną publikację skryptu do generowania PDFów z DocBooka. ostrzegam, że przepis działa na FreeBSD z zainstalowanym pakietem /usr/ports/textproc/docproj i nie pytajcie mnie co zrobić żeby działał w ogóle, działał na innym systemie czy przy innej konfiguracji.

na początek, musisz zainstalować całą paczkę /usr/ports/textproc/docproj wskazując, że interesuje Cię również zbudowanie Jade, czyli wydając polecenie:

# cd /usr/ports/textproc/docproj
# make JADETEX=yes install clean

to trochę potrwa (nawiasem mówiąc, uaktualniłeś sobie porty, prawda?) ale w wyniku tej operacji masz zainstalowany komplet narzędzi i arkuszy do produkcji PDFów, HTMLi czy nawet czystych TXT.

teraz powinieneś przelogować się na swojego zwykłego użytkownika i stworzyć dwa pliki - jeden z lokalną konfiguracją dla programu JadeTeX, a drugi będący skryptem generującym PDFy z DocBooka.

Plik jadetex.cfg powinien mieć mniej więcej taką zawartość (dziękuje Mirkowi za pomoc):

\def\Hyphenate{1}
\def\Quadding{justify}
\usepackage{mathptm}
\usepackage[polish]{babel}
\def\Language{PL}
\global\def\Language{PL}
\inputencoding{latin2}
\usepackage{url}
\usepackage{thumbpdf}
\pdfstringdefDisableCommands{%
  \let\textsubscript\relax
}
\pdfoutput=1
\pdfimageresolution=120
\hypersetup{
  pdfauthor={IMIĘ NAZWISKO, MAIL@DOMENA.PL},
  pdftitle={NAZWA_PLIKU_PDF},
  pdfhighlight=/I,
  colorlinks=true,
  linkcolor=blue,
  plainpages=false,
  pdfpagemode=UseThumbs, % FullScreen, UseNone, UseOutlines, UseThumbs
  pdfstartview=Fit%        % Fit, FitH, FitV, FitBH
}
\def\PageTwoSide{1}
\def\TwoSideStartOnRight{1}
\tolerance=2000

pozostaje utworzyć w katalogu domowym taki skrypt (nazwijmy go mkpdf.sh) tworzący PDFa:

#!/bin/sh
file=$1
set SP_ENCODING=ISO-8859-2
jade -b iso-8859-2 -Vtex-backend \
 -c /usr/local/share/sgml/docbook/dsssl/modular/catalog \
 -c /usr/local/share/sgml/docbook/catalog \
 -c /usr/local/share/sgml/jade/catalog \
 -d /usr/local/share/sgml/docbook/dsssl/modular/print/docbook.dsl \
 -t tex $file.db
pdftex "&pdfjadetex;" $file.tex > /dev/null
pdftex "&pdfjadetex;" $file.tex > /dev/null
pdftex "&pdfjadetex;" $file.tex > /dev/null
rm *.log *.aux *.tex *.out

plik wykonuje się podając mu źródło w postaci nazwy pliku w formacie DocBook bez rozszerzenia - czyli jeśli dokument, który przez ostatnie dwa tygodnie pisałeś po nocach znajduje się w pliku mojapraca.db, to powinieneś wykonać polecenie mkpdf.sh mojapraca. jeśli wszystko poszło dobrze, wynikiem będzie plik mojapraca.pdf zawierający PDFa.