#!/bin/sh # # lyxdb2all # # LyX-szel szerkesztett DocBook dokumentumokat konvertál HTML és pdf # formátumokra a docbook-utils segítségével, # saját stíluslapokkal, néhány bug javításával, # a magyar nyelv támogatásával. # # denespal 2001-2002. # usage() { echo -e "\nHasználat: lyxdb2all [kapcsolók] \n" echo "[kapcsolók]:" echo " -w|--htmldsl a HTML konverzióhoz használt stíluslap" echo " -p|--printdsl a HTML konverzióhoz használt stíluslap" echo " (A két stíluslapot kötelező megadni, és" echo " nem használható a '#', mint az openjade-nél.)" echo " -c|--css a HTML-hez használt CSS stíluslap" echo " -f|--fonthack a typewriter font -> tag helyettesítés bekapcsolása" echo " -t|--typewritertag a typewriter fonthoz helyettesítendő DocBook tag" # echo " -o|--htmloutput a generált HTML file-okat ebbe a könyvtárba teszi" echo " -r|--htmlprefix a generált HTML file nevek prefixe" echo " -h|--help ez a segítség" echo ":" echo " az eredeti LyX file neve a \".lyx\" végződés nélkül" echo " Pl.: lyxdb2all -p mydocbook-print.dsl -w mydocbook-html.dsl" echo " a mydoc.lyx-ből létrehozza a mydoc.pdf, *.html file-okat." exit 1 } if [ "$#" == "0" ]; then usage fi #PRINTDSL="mydocbook.dsl#print" #PRINTDSL="/usr/share/sgml/docbook/dsssl-stylesheets-1.64/print/docbook.dsl" #HTMLDSL="mydocbook.dsl#html" #HTMLDSL="/usr/share/sgml/docbook/dsssl-stylesheets-1.64/html/docbook.dsl" FONTHACK="f" TYPEWRITERTAG="filename" #HTMLOUTPUT="." while [ "$1" != "" ]; do case "$1" in -w|--htmldsl) shift 1 if [ "$1" == "" ]; then usage fi HTMLDSL=$1 ;; -p|--printdsl) shift 1 if [ "$1" == "" ]; then usage fi PRINTDSL=$1 ;; -f|--fonthack) FONTHACK=t ;; -t|--typewritertag) shift 1 if [ "$1" == "" ]; then usage fi TYPEWRITERTAG=$1 ;; -c|--css) shift 1 if [ "$1" == "" ]; then usage fi CSS=$1 ;; # -o|--htmloutput) # shift 1 # if [ "$1" == "" ]; then # usage # fi # HTMLOUTPUT=$1 # ;; -r|--htmlprefix) shift 1 if [ "$1" == "" ]; then usage fi HTMLPREFIX=$1 ;; -h|--help) usage # exit 0 ;; -*) echo "$1 ismeretlen" usage ;; *) if [ "$BASENAME" != "" ]; then usage fi BASENAME=$1 # flist="$flist $i" esac shift 1 done #echo "----------------" #echo print=$PRINTDSL #echo html=$HTMLDSL #echo basename=$BASENAME #echo FONTHACK=$FONTHACK #echo TYPEWRITERTAG=$TYPEWRITERTAG #echo "----------------" if [[ ("$BASENAME" == "") || ("$PRINTDSL" == "") || ("$HTMLDSL" == "") ]]; then usage fi CHECK=`echo "$BASENAME"|grep "\."` if [ "$CHECK" != "" ]; then echo "$1" " gyanús. Biztos, hogy ez a LyX file neve a \".lyx\" végződés nélkül?" exit 1 fi # # FONTHACK: a LyX-ben typewriter fontra állított szövegeket # lecseréli a TYPEWRITERTAG-ben megadott DocBook tag-re. # Egy-egy szónál jól működik, de nagyobb blokkokon keresztül nem tanácsos # állítgatni a typewriter-t. # (A DocBook-ban csak egyféle karakterformázás van, az . Nincsenek # fontok, bold, stb. Viszont van sok tartalmi elem, pl. , # , amiket általában más fonttal kell formázni, csak ezeket # a LyX-ből nem lehet megadni. Ezzel a trükkel a LyX-ben typewriter # fonttal adhatunk meg egy ilyen elemet. # if [ "$FONTHACK" == "t" ]; then awk " /^\\\\family typewriter/ { #print \"----\"\$0\"----\" getline # lyx 1.1.6-hoz: --------------------------------------------------------- # print \"\\\\latex latex\\n<$TYPEWRITERTAG>\"\$0; # lyx 1.2.0-hoz: --------------------------------------------------------- print \"\\\\begin_inset ERT\\nstatus Collapsed\\n\\n\\\\layout Standard\\n<$TYPEWRITERTAG>\\n\\\\end_inset\\n\"\$0; typewriter_cl = 1; next } /^\\\\/ { if (typewriter_cl==1) { # lyx 1.1.6-hoz: --------------------------------------------------------- # print \"\\n\\\\latex default\"; # lyx 1.2.0-hoz: --------------------------------------------------------- print \"\\\\begin_inset ERT\\nstatus Collapsed\\n\\n\\\\layout Standard\\n\\n\\\\end_inset\\n\"\$0; typewriter_cl = 0; } } { print }" $BASENAME.lyx > $BASENAME.input.lyx else cp $BASENAME.lyx $BASENAME.input.lyx fi # # LyX -> DocBook # lyx -e docbook $BASENAME.input.lyx rm $BASENAME.input.lyx mv $BASENAME.input.sgml $BASENAME.sgml # # Stylesheet generálás: létrehozunk egy ideiglenes stylesheet-et, # amiben paramétereket tudunk állítani, és ami a -p, -t kapcsolókkal # megadottakra hivatkozik. # (Konkrétan a css és a html filenév prefix beállítása miatt kell ez.) # if [ "$CSS" != "" ]; then CSSDEF="(define %stylesheet% \"$CSS\") (define %stylesheet-type% \"text/css\")" fi if [ "$HTMLPREFIX" != "" ]; then HTMLPREFIXDEF="(define %html-prefix% \"$HTMLPREFIX\")" fi echo " ]> $CSSDEF $HTMLPREFIXDEF " > $BASENAME.lyxdb2all-generated.tmp.dsl # # DocBook -> pdf # #docbook2ps docbook2tex -d "$BASENAME.lyxdb2all-generated.tmp.dsl#print" $BASENAME.sgml mv $BASENAME.tex $BASENAME.input.tex # A tex file kavarása: # 1. Kijavítjuk a magyar ékezeteket és az idézőjeleket # 2. Valamilyen rejtélyes okból minden táblázat elé bekerül egy # ">>>>>" string, ezt kivesszük. cat $BASENAME.input.tex | sed -e $': more { s/ő/\\\\H{o}/ s/Ő/\\\\H{O}/ s/ű/\\\\H{u}/ s/Ű/\\\\H{U}/ s/\\\\Entity{ldquo}/,,/ s/\\\\Entity{rdquo}/\'\'/ } t more ' | awk " /^{0}}>\\\\\// { print \"{0}}\" del = 1 next } /^>\\\\\// { if (del == 1) { next } } { del = 0 print } " > $BASENAME.tex rm $BASENAME.input.tex jadetex $BASENAME.tex jadetex $BASENAME.tex jadetex $BASENAME.tex dvips -t a4 -o $BASENAME.ps $BASENAME.dvi rm $BASENAME.tex rm $BASENAME.aux rm $BASENAME.log ps2pdf $BASENAME.ps rm $BASENAME.dvi rm $BASENAME.ps # # DocBook -> HTML # #if [ "$HTMLOUTPUT" != "." ]; then # cp "$BASENAME.lyxdb2all-generated.tmp.dsl" $HTMLOUTPUT/"$BASENAME.lyxdb2all-generated.tmp.dsl" #fi docbook2html -d "$BASENAME.lyxdb2all-generated.tmp.dsl#html" $BASENAME.sgml rm $BASENAME.sgml rm $BASENAME.lyxdb2all-generated.tmp.dsl