From 4e6868bd16be33f9da208832266441c678896ef6 Mon Sep 17 00:00:00 2001 From: Vladimir Volovich Date: Thu, 5 Jun 2008 02:14:06 +0000 Subject: per discussion with Karl: install remaining LIVESCRIPTS as LINKED_SCRIPTS: simpdftex: master copy in Master/texmf/scripts/simpdftex/simpdftex slave copy in Build/source/texk/texlive/linked_scripts/simpdftex symlink in bin/ARCH/simpdftex => ../../texmf/scripts/simpdftex/simpdftex ebong: master copy in Master/texmf-dist/scripts/bengali/ebong.py slave copy in Build/source/texk/texlive/linked_scripts/ebong.py symlink in bin/ARCH/ebong => ../../texmf-dist/scripts/bengali/ebong.py giftopng temporarily drop, pending Karl's decision whether and where to keep it it is used in Master/texmf-dist/tex/xmltex/passivetex/fotex.sty git-svn-id: svn://tug.org/texlive/trunk@8575 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/texlive/Makefile.in | 19 +- Build/source/texk/texlive/ebong | 346 ----------- Build/source/texk/texlive/linked_scripts/ebong.py | 346 +++++++++++ Build/source/texk/texlive/linked_scripts/simpdftex | 654 +++++++++++++++++++++ Build/source/texk/texlive/simpdftex | 654 --------------------- 5 files changed, 1006 insertions(+), 1013 deletions(-) delete mode 100755 Build/source/texk/texlive/ebong create mode 100755 Build/source/texk/texlive/linked_scripts/ebong.py create mode 100755 Build/source/texk/texlive/linked_scripts/simpdftex delete mode 100755 Build/source/texk/texlive/simpdftex (limited to 'Build') diff --git a/Build/source/texk/texlive/Makefile.in b/Build/source/texk/texlive/Makefile.in index 067822511c1..574b29336a3 100644 --- a/Build/source/texk/texlive/Makefile.in +++ b/Build/source/texk/texlive/Makefile.in @@ -7,8 +7,6 @@ kpse_include ../make/paths.mk kpse_include ../make/common.mk kpse_include ../make/programs.mk -LIVESCRIPTS = simpdftex ebong giftopng - # Copies of these scripts exist in /source/live_scripts/ for the sake # of avoiding dangling links produced by Build; the instances # in texmf are the masters (except when it is CTAN). @@ -17,12 +15,14 @@ LINKED_SCRIPTS = \ texmf/scripts/epstopdf/epstopdf.pl \ texmf/scripts/pkfix/pkfix.pl \ texmf/scripts/ps2eps/ps2eps.pl \ + texmf/scripts/simpdftex/simpdftex \ texmf/scripts/tetex/e2pall.pl \ texmf/scripts/tetex/texdoctk.pl \ texmf/scripts/texlive/getnonfreefonts.pl \ texmf/scripts/texlive/rungs.tlu \ texmf/scripts/texlive/texdoc.tlu \ texmf/scripts/texlive/tlmgr.pl \ + texmf-dist/scripts/bengali/ebong.py \ texmf-dist/scripts/dviasm/dviasm.py \ texmf-dist/scripts/glossaries/makeglossaries \ texmf-dist/scripts/mkjobtexmf/mkjobtexmf.pl \ @@ -38,7 +38,7 @@ LINKED_SCRIPTS = \ manpgs = getnonfreefonts getnonfreefonts-sys -all: $(LIVESCRIPTS) +all: default: all install: install-data install-exec @@ -49,15 +49,6 @@ install-data:: $(INSTALL_DATA) $(srcdir)/$$p.man $(man1dir)/$$p.$(manext); \ done -install-exec: install-linked-scripts - -$(SHELL) $(srcdir)/../mkinstalldirs $(scriptdir) - for s in $(LIVESCRIPTS); do \ - rm -f $(scriptdir)/$$s ; \ - $(INSTALL_SCRIPT) $(srcdir)/$$s $(scriptdir)/$$s; \ - done - rm -f $(scriptdir)/getnonfreefonts-sys - ln -s getnonfreefonts $(scriptdir)/getnonfreefonts-sys - # The idea here is to install the scripts themselves in texmf*/scripts, # and have bin/arch/foo be a symlink to, say, # ../../texmf/scripts/foo/foo.pl (for Perl). That way we save a bit of @@ -72,7 +63,7 @@ install-exec: install-linked-scripts # By the way, $(scriptdir) here is the binary directory, e.g., # bin/i386-linux, not the texmf*/scripts dir. # -install-linked-scripts: +install-exec: -$(SHELL) $(srcdir)/../mkinstalldirs $(scriptdir) # - link to the basename, removing any extension, of the source. # - we downcase for the sake of TeXcount.pl -> texcount. @@ -92,6 +83,8 @@ install-linked-scripts: $(INSTALL_SCRIPT) $(srcdir)/linked_scripts/`basename $$s` $(prefix)/$$s; \ ln -s $$d/$$s $$target; \ done + rm -f $(scriptdir)/getnonfreefonts-sys + ln -s getnonfreefonts $(scriptdir)/getnonfreefonts-sys kpse_include ../make/clean.mk diff --git a/Build/source/texk/texlive/ebong b/Build/source/texk/texlive/ebong deleted file mode 100755 index c4162cf0ef6..00000000000 --- a/Build/source/texk/texlive/ebong +++ /dev/null @@ -1,346 +0,0 @@ -#!/usr/bin/env python -# look in newbong -import sre -A='A' -B='B' -S='S' -s='s' -F='F' -X='X' - -NCLINE = 0 -global NCWORD,CWORD - -AKSAR={ - 'k' :[B,'k'], - 'kh' :[B,'kh'], - 'g' :[B,'g'], - 'gh' :[B,'gh'], - 'ng' :[B,'NG'], - - 'ch' :[B,'c'], - '^ch' :[B,'ch'], - 'j' :[B,'j'], - 'jh' :[B,'jh'], - '^y' :[B,'NJ'], - '_n' :[B,'NJ'], - - 't' :[B,'T'], - '^th' :[B,'Th'], - 'd' :[B,'D'], - 'dh' :[B,'Dh'], - '^n' :[B,'N'], - - '_t' :[B,'t'], - 'th' :[B,'th'], - '_d' :[B,'d'], - '_dh' :[B,'dh'], - 'n' :[B,'n'], - - 'p' :[B,'p'], - 'ph' :[B,'ph'], - 'f' :[B,'ph'], - 'b' :[B,'b'], - 'bh' :[B,'bh'], - 'v' :[B,'bh'], - 'm' :[B,'m'], - 'M' :[F,'M'], - - '^j' :[B,'J'], - 'J' :[B,'J'], - 'r' :[B,'r'], - 'R' :[F,'R'], - 'l' :[B,'l'], - 'L' :[F,'L'], - 'W' :[F,'W'], - 'V' :[F,'W'], - 'h' :[B,'H'], - 'kk' :[B,'kK'], - 'kkm' :[B,'kK/N'], - - 'sh' :[B,'sh'], - '^s' :[B,'Sh'], - '^sh' :[B,'Sh'], - 's' :[B,'s'], - - '^r' :[B,'rh'], - '^rh' :[B,'rhh'], - 'y' :[B,'y'], - 'Y' :[F,'Y'], - 'JY' :[F,'Y'], - '__t' :[B,'t//'], - '^ng' :[B,'NNG'], - ':h' :[B,'h'], - '^' :[F,'NN'], - '_' :[F,':/'], - - 'A' :[S,'A'], - 'AA' :[S,'Aa'], - 'I' :[S,'I'], - 'II' :[S,'II'], - 'U' :[S,'U'], - 'UU' :[S,'UU'], - 'RI' :[S,'RR'], - 'E' :[S,'E'], - 'OI' :[S,'OI'], - 'O' :[S,'O'], - 'OU' :[S,'OU'], - - 'a' :[X,'o',1], - 'aa' :[s,'a',1], - 'i' :[s,'i',-1], - 'ii' :[s,'ii',1], - 'u' :[s,'u',1], - 'uu' :[s,'uu',1], - 'RII' :[s,'rR',1], - 'e' :[s,'e',-1], - 'oi' :[s,'oi',-2], - 'oo' :[s,'oo',11], - 'o' :[X,'o',1], - 'ou' :[s,'ou',12], - - '.' :[F,'.'], - '..' :[F,'..'], - '...' :[F,'...'], - '|' :[F,'|'], - - '~' :[F,'~'], - '`' :[F,'`'], - '!' :[F,'!'], - '1' :[F,'1'], - '2' :[F,'2'], - 'at' :[F,'@'], - '#' :[F,'#'], - '3' :[F,'3'], - '$' :[F,'$'], - '4' :[F,'4'], - '%' :[F,'%'], - '5' :[F,'5'], - '6' :[F,'6'], - '&' :[F,'&'], - '7' :[F,'7'], - '*' :[F,'*'], - '8' :[F,'8'], - '(' :[F,'('], - '9' :[F,'9'], - ')' :[F,')'], - '0' :[F,'0'], - 'dash' :[F,'-'], - '+' :[F,'+'], - '=' :[F,'='], - '|' :[F,'|'], - '{' :[F,'{'], - '[' :[F,'['], - '}' :[F,'}'], - ']' :[F,']'], - ':' :[F,':'], - ';' :[F,';'], - '"' :[F,'"'], - "'" :[F,"'"], - '<' :[F,'<'], - ',' :[F,','], - '>' :[F,'>'], - '.' :[F,'.'], - '?' :[F,'?'], - '/' :[F,'/']} - -CATCODES = {'SS' :[S,'','','',1], - 'SB' :[B,'','','',1], - 'BS' :[S,'','','',1], - 'BB' :[B,'','/','',1], - 'BF' :[F,'','','',1], - 'Bs1' :[S,'','','',1], - 'Bs-1':[S,'\*','','*',1], - 'Bs-2':[S,'\*','','*{oi}',0], - 'Bs11':[S,'\*','','*ea',0], - 'Bs12':[S,'\*','','*eou',0], - 'Fs1' :[S,'','','',1], - 'Fs-1':[S,'\*','','*',1], - 'Fs-2':[S,'\*','','*{oi}',0], - 'Fs11':[S,'\*','','*ea',0], - 'Fs12':[S,'\*','','*eou',0], - 'FF' :[F,'','','',1], - 'AX' :[F,'','','',1]} - -def blocked(line): - #print '@ blocked', line , '->', - m = sre.findall('@[^@]+@',line) - outline = line - if not m : - #print outline - return(outline) - else: - for i in range(len(m)): - s=m[i][:-1].replace(' ','%X%') - outline = outline.replace(m[i],s,1) - #print outline - return(outline) - -def unblock(line): - #print '@unblock', line, '->', - m = sre.findall('@[^\s]+',line) - outline = line - if not m : - #print outline - return(outline) - else: - for i in range(len(m)): - s=m[i].replace('@','').replace('%X%',' ') - outline = outline.replace(m[i],s) - #print outline - return(outline) - -def printamp(line): - #print '@unblock', line, '->', - m = sre.findall('#AT',line) - outline = line - if not m : - #print outline - return(outline) - else: - for i in range(len(m)): - outline = outline.replace('#AT','@') - #print outline - return(outline) - -def readsyll(syll): - syllparts=[] - start = 0; end = len(syll) - while syll[start : end]: - slice = syll[start : end] - #print slice - if AKSAR.has_key(slice): - syllparts.append(AKSAR[slice]) - start = start + len(slice) - end = len(syll) - else : - end = end -1 - return(syllparts) - -def fuse(list1,list2): - global CCATCODE - #print list1,list2 - Type1 = list1[0] - Type2 = list2[0] - - if Type2 == s: - Type3 = str(list2[2]) - elif Type2 == X: - Type1=A - Type3='' - else: - Type3 ='' - - Type = Type1+Type2+Type3 - - #print 'Type:', Type - - try: - CATCODE = CATCODES[Type] - TARGET = CATCODE[0] - PREFIX = CATCODE[1] - MIDFIX = CATCODE[2] - POSTFIX = CATCODE[3] - FLAG = CATCODE[4] - - #print 'TGT:', TARGET, PREFIX,MIDFIX,POSTFIX,FLAG - #print 'RAWC', AKSAR[list1[1]][1],AKSAR[list2[1]][1] - - c1=list1[1] - c2=list2[1] - - if FLAG == 1 : - c = PREFIX + c1 + MIDFIX + POSTFIX + c2 - else : - c = PREFIX + c1 + MIDFIX + POSTFIX - - fused = [TARGET,c] - #print CATCODE - return(fused) - except KeyError: - print '\n ERROR AT LINE:', NCLINE, 'WORD:',NCWORD, '(',CWORD,')' - return(['ERROR','UNKNOWN CATCODE']) - -def fuseatoms(syll): - slist=readsyll(syll); - #print slist - lslist=len(slist); - l0=slist[0]; - for i in range(1,lslist): - nextitem = slist[i] - l0=fuse(l0,nextitem) - - return(l0[1]) - -def fuseword(wrd): - if wrd[0] == '@' : - return(wrd) - syllables = wrd.split('-') - w0='' - for eachsyll in syllables: - syll=eachsyll - thesyll = fuseatoms(syll) - w0 = w0 + thesyll - #print 'FUSED WORD',w0 - return(w0) - -def fuseline(line): - global NCWORD,CWORD - NCWORD = 0 - #line = blocked(line) - words = line.split() - l0='' - for eachword in words: - NCWORD=NCWORD+1 - word = eachword - CWORD=word - theword=fuseword(word) - #print 'XX',theword - l0=l0+' '+theword - #print 'FUSED LINE', l0 - return(l0) - -# The main program -import sys -OK=1 -finnam = sys.argv[1] -foutnam = finnam.split('.')[0] + '.' + 'tex' - -fin = file(finnam,'rt') -fout = file(foutnam,'wt') - -textin = fin.readlines() -nlines = len(textin) - -textout = [] - -fin.close() - -for eachline in textin: - NCLINE = NCLINE+1 - if eachline[0] == '#' : - lineout = eachline[1:] - elif eachline[0] == '\\' : - lineout = eachline - elif eachline == '\n': - lineout = eachline - else : - line1 = eachline.strip() - line2 = blocked(line1) - lineout = fuseline(line2) + '\n' - lineout = lineout[1:] - #print ':::', lineout - if lineout.find('UNKNOWN CATCODE') == -1 : - lineout = unblock(lineout) - #print ':::', lineout - textout.append(printamp(lineout)) - else : - OK = 0 - fout.close() - -if OK == 1: - fout.writelines(textout) - fout.close() - print 'done' -else: - print 'Unknown CATCODE, Fix The errors and try again' diff --git a/Build/source/texk/texlive/linked_scripts/ebong.py b/Build/source/texk/texlive/linked_scripts/ebong.py new file mode 100755 index 00000000000..c4162cf0ef6 --- /dev/null +++ b/Build/source/texk/texlive/linked_scripts/ebong.py @@ -0,0 +1,346 @@ +#!/usr/bin/env python +# look in newbong +import sre +A='A' +B='B' +S='S' +s='s' +F='F' +X='X' + +NCLINE = 0 +global NCWORD,CWORD + +AKSAR={ + 'k' :[B,'k'], + 'kh' :[B,'kh'], + 'g' :[B,'g'], + 'gh' :[B,'gh'], + 'ng' :[B,'NG'], + + 'ch' :[B,'c'], + '^ch' :[B,'ch'], + 'j' :[B,'j'], + 'jh' :[B,'jh'], + '^y' :[B,'NJ'], + '_n' :[B,'NJ'], + + 't' :[B,'T'], + '^th' :[B,'Th'], + 'd' :[B,'D'], + 'dh' :[B,'Dh'], + '^n' :[B,'N'], + + '_t' :[B,'t'], + 'th' :[B,'th'], + '_d' :[B,'d'], + '_dh' :[B,'dh'], + 'n' :[B,'n'], + + 'p' :[B,'p'], + 'ph' :[B,'ph'], + 'f' :[B,'ph'], + 'b' :[B,'b'], + 'bh' :[B,'bh'], + 'v' :[B,'bh'], + 'm' :[B,'m'], + 'M' :[F,'M'], + + '^j' :[B,'J'], + 'J' :[B,'J'], + 'r' :[B,'r'], + 'R' :[F,'R'], + 'l' :[B,'l'], + 'L' :[F,'L'], + 'W' :[F,'W'], + 'V' :[F,'W'], + 'h' :[B,'H'], + 'kk' :[B,'kK'], + 'kkm' :[B,'kK/N'], + + 'sh' :[B,'sh'], + '^s' :[B,'Sh'], + '^sh' :[B,'Sh'], + 's' :[B,'s'], + + '^r' :[B,'rh'], + '^rh' :[B,'rhh'], + 'y' :[B,'y'], + 'Y' :[F,'Y'], + 'JY' :[F,'Y'], + '__t' :[B,'t//'], + '^ng' :[B,'NNG'], + ':h' :[B,'h'], + '^' :[F,'NN'], + '_' :[F,':/'], + + 'A' :[S,'A'], + 'AA' :[S,'Aa'], + 'I' :[S,'I'], + 'II' :[S,'II'], + 'U' :[S,'U'], + 'UU' :[S,'UU'], + 'RI' :[S,'RR'], + 'E' :[S,'E'], + 'OI' :[S,'OI'], + 'O' :[S,'O'], + 'OU' :[S,'OU'], + + 'a' :[X,'o',1], + 'aa' :[s,'a',1], + 'i' :[s,'i',-1], + 'ii' :[s,'ii',1], + 'u' :[s,'u',1], + 'uu' :[s,'uu',1], + 'RII' :[s,'rR',1], + 'e' :[s,'e',-1], + 'oi' :[s,'oi',-2], + 'oo' :[s,'oo',11], + 'o' :[X,'o',1], + 'ou' :[s,'ou',12], + + '.' :[F,'.'], + '..' :[F,'..'], + '...' :[F,'...'], + '|' :[F,'|'], + + '~' :[F,'~'], + '`' :[F,'`'], + '!' :[F,'!'], + '1' :[F,'1'], + '2' :[F,'2'], + 'at' :[F,'@'], + '#' :[F,'#'], + '3' :[F,'3'], + '$' :[F,'$'], + '4' :[F,'4'], + '%' :[F,'%'], + '5' :[F,'5'], + '6' :[F,'6'], + '&' :[F,'&'], + '7' :[F,'7'], + '*' :[F,'*'], + '8' :[F,'8'], + '(' :[F,'('], + '9' :[F,'9'], + ')' :[F,')'], + '0' :[F,'0'], + 'dash' :[F,'-'], + '+' :[F,'+'], + '=' :[F,'='], + '|' :[F,'|'], + '{' :[F,'{'], + '[' :[F,'['], + '}' :[F,'}'], + ']' :[F,']'], + ':' :[F,':'], + ';' :[F,';'], + '"' :[F,'"'], + "'" :[F,"'"], + '<' :[F,'<'], + ',' :[F,','], + '>' :[F,'>'], + '.' :[F,'.'], + '?' :[F,'?'], + '/' :[F,'/']} + +CATCODES = {'SS' :[S,'','','',1], + 'SB' :[B,'','','',1], + 'BS' :[S,'','','',1], + 'BB' :[B,'','/','',1], + 'BF' :[F,'','','',1], + 'Bs1' :[S,'','','',1], + 'Bs-1':[S,'\*','','*',1], + 'Bs-2':[S,'\*','','*{oi}',0], + 'Bs11':[S,'\*','','*ea',0], + 'Bs12':[S,'\*','','*eou',0], + 'Fs1' :[S,'','','',1], + 'Fs-1':[S,'\*','','*',1], + 'Fs-2':[S,'\*','','*{oi}',0], + 'Fs11':[S,'\*','','*ea',0], + 'Fs12':[S,'\*','','*eou',0], + 'FF' :[F,'','','',1], + 'AX' :[F,'','','',1]} + +def blocked(line): + #print '@ blocked', line , '->', + m = sre.findall('@[^@]+@',line) + outline = line + if not m : + #print outline + return(outline) + else: + for i in range(len(m)): + s=m[i][:-1].replace(' ','%X%') + outline = outline.replace(m[i],s,1) + #print outline + return(outline) + +def unblock(line): + #print '@unblock', line, '->', + m = sre.findall('@[^\s]+',line) + outline = line + if not m : + #print outline + return(outline) + else: + for i in range(len(m)): + s=m[i].replace('@','').replace('%X%',' ') + outline = outline.replace(m[i],s) + #print outline + return(outline) + +def printamp(line): + #print '@unblock', line, '->', + m = sre.findall('#AT',line) + outline = line + if not m : + #print outline + return(outline) + else: + for i in range(len(m)): + outline = outline.replace('#AT','@') + #print outline + return(outline) + +def readsyll(syll): + syllparts=[] + start = 0; end = len(syll) + while syll[start : end]: + slice = syll[start : end] + #print slice + if AKSAR.has_key(slice): + syllparts.append(AKSAR[slice]) + start = start + len(slice) + end = len(syll) + else : + end = end -1 + return(syllparts) + +def fuse(list1,list2): + global CCATCODE + #print list1,list2 + Type1 = list1[0] + Type2 = list2[0] + + if Type2 == s: + Type3 = str(list2[2]) + elif Type2 == X: + Type1=A + Type3='' + else: + Type3 ='' + + Type = Type1+Type2+Type3 + + #print 'Type:', Type + + try: + CATCODE = CATCODES[Type] + TARGET = CATCODE[0] + PREFIX = CATCODE[1] + MIDFIX = CATCODE[2] + POSTFIX = CATCODE[3] + FLAG = CATCODE[4] + + #print 'TGT:', TARGET, PREFIX,MIDFIX,POSTFIX,FLAG + #print 'RAWC', AKSAR[list1[1]][1],AKSAR[list2[1]][1] + + c1=list1[1] + c2=list2[1] + + if FLAG == 1 : + c = PREFIX + c1 + MIDFIX + POSTFIX + c2 + else : + c = PREFIX + c1 + MIDFIX + POSTFIX + + fused = [TARGET,c] + #print CATCODE + return(fused) + except KeyError: + print '\n ERROR AT LINE:', NCLINE, 'WORD:',NCWORD, '(',CWORD,')' + return(['ERROR','UNKNOWN CATCODE']) + +def fuseatoms(syll): + slist=readsyll(syll); + #print slist + lslist=len(slist); + l0=slist[0]; + for i in range(1,lslist): + nextitem = slist[i] + l0=fuse(l0,nextitem) + + return(l0[1]) + +def fuseword(wrd): + if wrd[0] == '@' : + return(wrd) + syllables = wrd.split('-') + w0='' + for eachsyll in syllables: + syll=eachsyll + thesyll = fuseatoms(syll) + w0 = w0 + thesyll + #print 'FUSED WORD',w0 + return(w0) + +def fuseline(line): + global NCWORD,CWORD + NCWORD = 0 + #line = blocked(line) + words = line.split() + l0='' + for eachword in words: + NCWORD=NCWORD+1 + word = eachword + CWORD=word + theword=fuseword(word) + #print 'XX',theword + l0=l0+' '+theword + #print 'FUSED LINE', l0 + return(l0) + +# The main program +import sys +OK=1 +finnam = sys.argv[1] +foutnam = finnam.split('.')[0] + '.' + 'tex' + +fin = file(finnam,'rt') +fout = file(foutnam,'wt') + +textin = fin.readlines() +nlines = len(textin) + +textout = [] + +fin.close() + +for eachline in textin: + NCLINE = NCLINE+1 + if eachline[0] == '#' : + lineout = eachline[1:] + elif eachline[0] == '\\' : + lineout = eachline + elif eachline == '\n': + lineout = eachline + else : + line1 = eachline.strip() + line2 = blocked(line1) + lineout = fuseline(line2) + '\n' + lineout = lineout[1:] + #print ':::', lineout + if lineout.find('UNKNOWN CATCODE') == -1 : + lineout = unblock(lineout) + #print ':::', lineout + textout.append(printamp(lineout)) + else : + OK = 0 + fout.close() + +if OK == 1: + fout.writelines(textout) + fout.close() + print 'done' +else: + print 'Unknown CATCODE, Fix The errors and try again' diff --git a/Build/source/texk/texlive/linked_scripts/simpdftex b/Build/source/texk/texlive/linked_scripts/simpdftex new file mode 100755 index 00000000000..e5d5d4218b3 --- /dev/null +++ b/Build/source/texk/texlive/linked_scripts/simpdftex @@ -0,0 +1,654 @@ +#!/bin/sh + +# Created by Gerben Wierda, May 2001 +# Rewritten by Gerben Wierda, January 2002 +# Modified by Joachim Kock, May 2003 +# Modified by Gerben Wierda, April 2007 + +# COPYRIGHT Gerben Wierda 2001--2004 +# This file is free software. You are free to use this file in any way you like +# However, if you change it you should note in this file that you did and who +# you are, you also need to change the version string if you do. That way +# I will not get support questions for software that is not entirely mine. + +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# $Id: altpdftex,v 2.18 2004/11/15 20:36:11 gerben Exp $ + +# This script assumes that there is a config.pdf somewhere that sets +# the bitmap mode to something large but realistic (real mode) so that +# unavailable pfb fonts will be included as bitmaps. + +# Version 1.0: added the string above for identification purposes +# Version 1.0a: Cosmetic change: do not display dir of argv[0] all the time +# Added calledas variable to hold command basename +# Version 1.1: Use calledas instead of $0 which means the sed command +# for determining format below also works when there is no dir +# (run from dir where altpdftex resides, not very likely...) +# Version 1.2: Force the use of tex binaries from the same directory as +# this script +# Version 1.3: Added --echo-version option, placed argument check after +# switch, inside while to prevent subscript out of range error +# Added --tex-path to override directory where this script +# resides. Added --gs-path to override a new default gs +# directory /usr/local/bin. Also, force gs directory at the +# start of the path to repair for broken installations of +# TeX, gs and such +# Version 1.4: Moved path changes to just before calling gs so that only +# ps2pdf is affected +# Version 1.5: Removed some path-related redundancy from GS calling +# Version 1.5a: Missing ${extradviopts} from echo +# Added version to --help output +# Added wolfram.map +# Version 1.6: Fixed bug: --dviopts did not work because it did set +# the wrong variable +# Changed dviopts to dvipsopts (better name) +# Version 1.7: Added --distiller and --distiller-filter option +# Changed --gs-path to --distiller-path +# Changed distiller semantics +# Fixed bug --tex-path flag needed trailing '/' +# Some extra quoting to be more robust for whitespace +# in names, also internally +# Version 1.8: Added pstill and u-psbuild info to help +# Version 1.9: Removed textrace bbold font (textrace is broken) +# Version 1.10: Added amstex support +# Simplified different format support +# Version 1.11: Do not source ~/.{t}cshrc, use the environment 'as is' +# Version 1.11 says it is version 1.10! +# Version 1.12: Added textrace bold font (textrace 0.48 is ok) +# Version 1.13: Changed success message at the end +# Echo version on by default +# Debug option +# Version 1.13b:Date report on version was very out of date, removed + +# Version 2.0: Rewritten in /bin/sh because (t)csh does not handle signals +# very well... +# This version works, but you need to send the SIGTERM to +# the process group (the negative PID) to get it to work +# Version 2.1: Small bug fixes +# Version 2.2: Fixed bug where argument without extension was interpreted +# as dvi file. +# Removed dependencies on smart sh versions +# Version 2.3: Removed map file knowledge (needs to be outside this script) +# beyond the standard map files +# Version 2.4: Added support for omega and lambda (use odvips) +# Version 2.5: Changed maxpk and maxpfb implementation to recent updmap +# Version 2.6: Use ps2pdf13 as the default distiller +# Version 2.7: Changed help +# Version 2.8: Checked into CVS. +# Added handling of outdir for TeX +# Version 2.9: Added auto-outdir flag +# Version 2.10: Changed --outdir behaviour to mimick TEXMFOUTPUT, +# removed --auto-outdir +# Version 2.11: Fixed typo +# Version 2.12: RCS changes, from now on, the version number is the RCS number +# These notes here will become a ChangeLog. +# 2003/05/20 Joachim's modification: write first to a pdf file in tmp, +# and only upon completion copy the file to its final +# destination. This is done in order to minimise the time where +# the pdf file in current directory is in an unstable state, +# because a PDF viewer might be tracking the file, and +# if it finds the pdf file in an intermediate state it will +# display a blank page until the new version is ready. +# 2003/05/21 Joachim's modification used /bin/cp. Gerben made it truly +# atomic by using /bin/cp in combination with /bin/mv +# 2003/11/23 Added supportfor passing flasg to tex at the request of +# Dick Koch. +# 2004/09/05 Bugfix: make it work better with directories with whitespace +# in their name +# 2004/11/15 New calling mode: simpdftex format foo.tex +# e.g.: +# simpdftex latex foo.tex +# In the future, the old modes (altpdflatex and friends) through +# symlinks will disappear from my distribution, though they will +# still work. +# 2007/05/07 Added dvipdfm support with compatibility with the patched version +# that is available on the net (simpdftex_dpmx) +# Changed version string to date-based string +# 2007/08/09 Protected echo command against broken builtin versions by running +# /bin/echo explicitly. There may exist /bin/echo implementations +# that do not support -n and this script will have to be changed +# before it works on such a system + +# FEATURE: it seems -u +foo.map -u -foo.map does not work. So --extradvipsopts +# cannot be used to remove a map from the standard list + +# BUG: Handling of file name extensions is not completely equialent to TeX +# i.e. foo.bar.bla gets you foo.bar.pdf not foo.bar.bla.pdf +# Hint: Give all extensions explicitely on the command line + +version='20070809' +calledas=`basename "$0"` +if [ "${calledas}" = "simpdftex" ] +then + argwithoutlead=`/bin/echo -n "$1"|sed 's/^--//'` + if [ "$1" != "" -a "$1" = "${argwithoutlead}" ] + then + formatname="$1" + shift + calledas="altpdf${formatname}" + fi +fi +argvbackup="$*" + +dviprogram="dvips" # Might be dvips, dvipdfm or dvipdfmx + +# maxpkdvipsopts: use only pfb's for real PS fonts, bitmaps are default for the others +maxpkdvipsopts="-Ppk" +# maxpfbdvipsopts: use as many pfb's as possible +maxpfbdvipsopts="-Poutline" +opt_dvipsopts="" + +# Defaults: +# altpdftex --default is the default setting, it also works +# when there is no config.pdf file +extradvipsoptions="" +dvipsoptions="$maxpfbdvipsopts" +outputpostfix=".maxpfb" +simplename="yes" +keeppsfile="no" +echoversion="yes" +texpath=`dirname "$0"` +# Default distiller is ps2pdf from /usr/local/bin in no filter mode +# as the direct call to a filtering gs does not work yet for some reason +#distillerpath="" +#distillerprog="/usr/local/bin/gs -dCompatibility=1.3 -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=- -c save pop" +#distillerfilter="yes" +distillerpath="/usr/local/bin" +distillerprog="ps2pdf13" +distillerfilter="no" +unset outdir +debug="no" +dvipdfmoptions="" + +usage() +{ + cat <<_eof_help +This is simpdftex, $version + +Usage: simpdftex formatname [--mode modestring] + [--dvipsopts dvipsoptstring] [--extradvipsopts dvipsoptstring] [--pdf] + [--default] [--maxpk] [--maxpfb] [--extendedname] [--no-echo-version] + [--tex-path dir] [--keep-psfile] [--distiller-path dir] [--debug] + [--distiller prog] [--distiller-filter prog] [--help] + [--outdir dir] [--extratexopts texoptsstring] + [--dvipdfmopts dvipdfmoptstring] tex-or-dvi-file + +simpdftex is a way to do pdf{e}{la}tex without having pdf{e}{la}tex. It needs a +working TeX environment and one of three ways to turn DVI file into PDF: + - dvips + a distiller like ghostscript + - dvipdfm + - dvipdfmx +Since pdf{e}{la}tex cannot handle insertion of .eps graphics, simpdftex gives an +alternative when using dvips mode. The output for both systems is comparable. + +simpdftex compiles the file with {LA}TeX, processes the DVI file with dvips into +PostScript and uses gs to produce pdf (with ps2pdf). Or it uses dvipdfm or +dvipdfmx to turn the DVI file into PDF. There is finegrained control over the +resulting filename and the options with which dvips produces the PostScript +intermediary file. + +Dvips will call Metafont to produce bitmaps or include PostScript .pfb files +depending on the flags. See below. + +The default setting is normal name, maximal use of pfb's, just like pdf{la}tex, +in other words, "pdftex file.tex" and "altpdftex file.tex" both produce an +output file file.pdf. For pdftex, output options are controlled by pdftex.cfg, +for altpdftext by config.ps (unless --pdf is given). + +Arguments: + tex-or-dvi-file + If a .dvi file is given, skip the TeX process. Otherwise, TeX + the input file, dvips the resulting dvi file and ps2pdf the + resulting ps file + --mode + Tell simpdftex how to go from DVI to PDF. There are three modes: + - dvips + - dvipdfm + - dvipdfmx + --dpx + Compatibility flag with simpdftex_dpmx. Equal to --mode dvipdfmx + --dpm + Compatibility flag with simpdftex_dpmx. Equal to --mode dvipdfm + --help + Display this message and exit + --no-echo-version + Do not echo location and version of this script. Does not exit + so can be used tochange info to the output of a real run + --debug + Add some debug output + --extendedname + Depending on the mode, adds intermediary extensions to the + output filename. If the mode is --pdf, .pdfmode is added. If + the mode is --maxpk, ,maxpk is added and if the mode is + --maxpfb, .maxpfb is added. Example: + tex-or-dvi-file-basename.maxpfb.pdf + --maxpk + Use Metafont bitmaps (pk files) when possible. Only real + PostScript fonts (like Times Roman) are included as + PostScript fonts. All other fonts are included as bitmaps + for the default printer resolution. This options produces + optimal results for the chosen printer. + For file contents (not name) equivalent to: + --dvipsopts "-Ppk" + Not yet functional for the other modes. + --maxpfb + Use PostScript pfb files whenever possible. This produces + optimal results for the screen. + For file contents (not name) equivalent to: + --dvipsopts "-Poutline" + If any font is included as TeX pk bitmap, it is rendered + at the default resolution. + Not yet functional for the other modes. + --pdf + Select .pdfmode extension for the output file name if + --extendedname has been set. Use printer definition + config.pdf. For file contents (not name) equivalent to + --dvipsopts "-Ppdf" + Note that the default config.pdf assumes resolution 8000 + for bitmaps and bitmap generation fails at this resolution + because there exists no known mode for that resolution. + --default + Select no extension for the output file name, even if + --extendedfilename has been set. Use standard printer + definition config.ps. For file contents (not name) equivalent + to: + --dvipsopts "" --noextendedname + --dvipsopts + Give arbitrary arguments to dvips, e.g. + --dvipsopts "-M" + Sets extension for --extendedfilename to .custom. --dvipsopts + overrides other flags that set dvipsopts. + --extratexopts + Give extra arbitrary arguments to tex, e.g. + --extratexopts "--interaction=nonstopmode" + Sets extra options for the tex command that is used. + --extradvipsopts + Give extra arbitrary arguments to dvips, e.g. + --extradvipsopts "-M" + Sets extra options for dvips and does not set extension + or override other options. Options will be added to the end + of the options for dvips + --keep-psfile + After running dvips, copy the ps file over to the directory + where the tex file is, possibly overwriting a ps file + that is there. Use with caution, a ps file could be input + as well. + --tex-path + Give path of TeX binaries, use directory of this script + otherwise + --distiller prog + Use a distiller different from ps2pdf which is the default. + Argument must be an executable or executable script that + gets called iwth two arguments: input file (PS) and output + file (PDF). E.g.: + --distiller=/usr/local/alternate/bin/ps2pdf + --distiller=pstill + Using this flag sets the distiller filter mode to off + This flag only makes sense in dvips mode + --distiller-filter prog + Use a distiller executable or executable script which is + called with the PS input as standard input and which writes + the PDF output to standard output. E.g.: + --distiller-filter=u-psbuild + This flag only makes sense in dvips mode + --distiller-path + Give path needed by the distiller binary. This path is added + to the begin of you PATH environment before the distiller is + run. The reason is that for instance ps2pdf uses the path to + find gs and sets the path to something with /sw/bin at the + beginning. Thus, installing gs from fink would make + /usr/local/bin/ps2pdf find another gs than intended. By giving + an empty path, the path is not changed before the distiller + program is run. The default is empty. + This flag only makes sense in dvips mode + --dvipdfmopts + Give arbitrary arguments to dvipdfm or dvipdfmx, e.g. + --dvipdfmopts "-c" + Sets extension for --extendedfilename to .custom. --dvipdfmopts + overrides other flags that set dvipdfmopts. + --outdir dir + Write files here *if* our current directory is unwritable. This + mimicks the TEXMFOUTPUT environment variable of TeX, but + differently. The current dir becomes the value of --outdir and + the directory where the old current dir is added to TEXINPUTS. + This is more robust for reading and locating files. + You can also set TEXMFOUTPUT instead, but with a disadvantage: + you will be running TeXin the current dir. And you will not be + able to read files in the outdir unless you also adapt + TEXINPUTS. + + The defaults for the distiller are + Path addition: "${distillerpath}" + Filter mode: "${distillerfilter}" + Program: "${distillerprog}" + + Later flags override settings of earlier flags. +_eof_help +} + +while test $# -gt 0 +do + case $1 in + --help) + usage + exit 0;; + --dvipsopts) + shift + outputpostfix=".custom" + dvipsoptions="$1" + ;; + --dvipdfmopts) + outputpostfix=".custom" + shift + dvipdfmoptions="$1" + ;; + --dvipdfopts) # Compatibility with simpdftex_dpmx + shift + dvipdfmoptions="$1" + ;; + --extradvipsopts) + shift + extradvipsoptions="$1" + ;; + --extratexopts) + shift + extratexoptions="$1" + ;; + --tex-path) + shift + texpath="$1" + ;; + --pdf) + outputpostfix=".pdfmode" + dvipsoptions="-P pdf" + ;; + --default) + outputpostfix="" + dvipsoptions="" + # Use the default print option in config.ps + ;; + --maxpk) + outputpostfix=".maxpk" + dvipsoptions="$maxpkdvipsopts" + ;; + --maxpfb) + outputpostfix=".maxpbfb" + dvipsoptions="$maxpfbdvipsopts" + ;; + --extendedname) + simplename="no" + ;; + --keep-psfile) + keeppsfile="yes" + ;; + --debug) + debug="yes" + ;; + --distiller-path) + shift + distillerpath="$1" + ;; + --distiller) + shift + distillerprog="$1" + distillerfilter="no" + ;; + --mode) + shift + if [ "$1" = "dvips" -o "$1" = "dvipdfm" -o "$1" = "dvipdfmx" ] + then + dviprogram="$1" + else + /bin/echo "Unknown mode $1" + exit 1 + fi + ;; + --outdir) + shift + export TEXINPUTS=`pwd`:`kpsewhich --expand-var '$TEXINPUTS'` + export TEXMFOUTPUT="$1" + outdir="$1/" + outdirset="yes" + cd "$1" + ;; + --distiller-filter) + shift + distillerprog="$1" + distillerfilter="yes" + ;; + --no-echo-version) + echoversion="no" + ;; + --dpx) # Compatibility with simpdftex_dpmx + dviprogram="dvipdfmx" + ;; + --dpm) # Compatibility with simpdftex_dpmx + dviprogram="dvipdfm" + ;; + --*) + /bin/echo "Unknown option $1" + exit 1;; + "") + ;; + *) + break;; + esac + shift +done + +if [ "${echoversion}" = "yes" -a "${debug}" = "no" ] +then + /bin/echo "### This is $0, Version ${version}" +fi + +if [ "${debug}" = "yes" ] +then + /bin/echo "##### This is $0, Version ${version}" + /bin/echo "##### Arguments: ${argvbackup}" +fi + +run_dvipdfm() +{ + /bin/echo "### ${texpath}/${dviprogram} ${dvipdfmoptions} -o ${pdffile} ${dvifile}" + "${texpath}/${dviprogram}" ${dvipdfmoptions} -o "${pdffile}" "${dvifile}" || \ + { /bin/echo "### FAILED to generate ${pdffile} (${status})"; \ + exit 1; } +} + +run_dvips() +{ + /bin/echo "### ${texpath}/${dviprogram} -R ${dvipsoptions} ${extradvipsoptions} -o ${psfile} ${dvifile}" + "${texpath}/${dviprogram}" -R ${dvipsoptions} ${extradvipsoptions} -o "${psfile}" "${dvifile}" || \ + { /bin/echo "### FAILED to generate ${psfile} (${status})"; \ + exit 1; } + + if [ "${keeppsfile}" = "yes" ]; then + /bin/echo "### Saving intermediary ps file ${psfile} as ${savedpsfile}" + /bin/cp "${psfile}" "${savedpsfile}" || \ + /bin/echo "### FAILED to save ${psfile} (${status})" + fi + + if [ "${distillerpath}" != "" ]; then + PATH="${distillerpath}:${PATH}";export PATH + if [ "${debug}" = "yes" ]; then + /bin/echo "##### PATH set to ${PATH}" + fi + fi + + if [ "${distillerfilter}" = "yes" ]; then + /bin/echo "### ${distillerprog} <${psfile} >${pdffile}" + "${distillerprog}" <"${psfile}" >"${pdffile}" || \ + { /bin/echo "### FAILED to generate ${pdffile} (${status})" + exit 1; } + else + /bin/echo "### ${distillerprog} ${psfile} ${pdffile}" + "${distillerprog}" "${psfile}" "${pdffile}" || \ + { /bin/echo "### FAILED to generate ${pdffile} (${status})" + exit 1; } + fi +} + +cleanup() +{ + if [ "${tmpdir}" != "" -a "${debug}" = "no" ] + then + rm -rf "${tmpdir}" + fi +} + +terminated() +{ + cleanup + exit 1; +} + +trap 'terminated' 15 + +main() +{ + if [ "${file}" = "" ] + then + /bin/echo "simpdftex Empty argument: tex-or-dvi-file-name" + exit 1 + fi + + # Argument handling + + if [ "${simplename}" = "yes" ] + then + outputpostfix="" + fi + + startwithdvi="no" + basename=`basename "${file}"` + nosuffixbasename=`/bin/echo -n ${basename}|sed 's/\.[^.]*$//'` + nodvisuffixbasename=`/bin/echo -n ${basename}|sed 's/\.[dD][vV][iI]$//'` + if [ "${nodvisuffixbasename}" = "${nosuffixbasename}" -a \ + "${basename}" != "${nosuffixbasename}" ] + then + startwithdvi="yes" + fi + + kpsefilename=`kpsewhich "${file}"` + slashdirname=`dirname "${kpsefilename}"`/ + + if [ ! -w "." ] + then + if [ "${TEXMFOUTPUT}" != "" ] + then + outdir="${TEXMFOUTPUT}/" + outdirset="yes" + if [ "${autoinput}" = "yes" ] + then + export TEXINPUTS=${TEXMFOUTPUT}:`kpsewhich --expand-var '$TEXINPUTS'` + + fi + else + /bin/echo "### Cannot write in current directory and no redirect found. Bailing out..." + exit 1 + fi + fi + + # Assume the command is called altpdf* where the rest is the actual tex + # program to be run + texprogram=`/bin/echo ${calledas}|sed 's/altpdf//'` + if [ "${texprogram}" = "omega" -o "${texprogram}" = "lambda" ] + then + dvips="odvips" + else + dvips="dvips" + fi + + # Handle temp dir (cleanup is called on signal) + tmpext=$$-`/bin/date +"%s"` + tmpdir="/tmp/altpdf${texprogram}.${tmpext}" + # Force removal of possible existing tmpdir + cleanup + # Make new version + mkdir "${tmpdir}" + + if [ "${startwithdvi}" = "yes" ] + then + dvifile="${file}" + else + texfile="${file}" + dvifile="${outdir}${nosuffixbasename}.dvi" + fi + + psfile="${tmpdir}/${nosuffixbasename}${outputpostfix}.ps" + savedpsfile="${outdir}${nosuffixbasename}.ps" + pdffile="${tmpdir}/${nosuffixbasename}${outputpostfix}.pdf" + savedpdffile="${outdir}${nosuffixbasename}${outputpostfix}.pdf" + + if [ "${debug}" = "yes" ] + then + /bin/echo "##### TeX file: $texfile" + /bin/echo "##### DVI file: $dvifile" + if [ "${dviprogram}" = "dvips" ] + then + /bin/echo "##### PS file: $psfile" + /bin/echo "##### Saved PS file: $savedpsfile" + fi + /bin/echo "##### Created PDF file: $pdffile" + /bin/echo "##### Final PDF file: $savedpdffile" + /bin/echo "##### Environment:" + env | sed 's/^/##### /g' + fi + + if [ "${startwithdvi}" = "yes" ]; then + /bin/echo "### Skipping ${texprogram} ${texfile} [dvi->pdf only]" + else + /bin/echo "### ${texpath}/${texprogram} ${texfile}" + "${texpath}/${texprogram}" ${extratexoptions} "${texfile}" || \ + /bin/echo "### WARNING: TeX returned non zero exit status ${status}" + fi + + case "${dviprogram}" in + "dvips") + run_dvips;; + "dvipdfm") + run_dvipdfm;; + "dvipdfmx") + run_dvipdfm;; + *) + /bin/echo "### ERROR: wrong dvipdf mode ${dviprogram}" + esac + + /bin/echo "### Copying/moving pdf file ${pdffile} to ${savedpdffile}" + /bin/cp "${pdffile}" "${savedpdffile}.${tmpext}" || \ + /bin/echo "### FAILED to copy ${pdffile} (${status})" + /bin/rm -f "${savedpdffile}" + /bin/mv "${savedpdffile}.${tmpext}" "${savedpdffile}" || \ + /bin/echo "### FAILED to rename ${savedpdffile}.${tmpext} (${status})" + + if [ "${startwithdvi}" = "yes" ]; then + if [ "${keeppsfile}" = "yes" ]; then + /bin/echo "### Succesfully generated ${savedpdffile} and ${savedpsfile}" + else + /bin/echo "### Succesfully generated ${savedpdffile}" + fi + else + if [ "${keeppsfile}" = "yes" ]; then + /bin/echo "### Succesfully generated ${dvifile}, ${savedpdffile} and ${savedpsfile}" + else + /bin/echo "### Succesfully generated ${dvifile} and ${savedpdffile}" + fi + fi + + cleanup +} + +for file in "$@" +do + main +done diff --git a/Build/source/texk/texlive/simpdftex b/Build/source/texk/texlive/simpdftex deleted file mode 100755 index e5d5d4218b3..00000000000 --- a/Build/source/texk/texlive/simpdftex +++ /dev/null @@ -1,654 +0,0 @@ -#!/bin/sh - -# Created by Gerben Wierda, May 2001 -# Rewritten by Gerben Wierda, January 2002 -# Modified by Joachim Kock, May 2003 -# Modified by Gerben Wierda, April 2007 - -# COPYRIGHT Gerben Wierda 2001--2004 -# This file is free software. You are free to use this file in any way you like -# However, if you change it you should note in this file that you did and who -# you are, you also need to change the version string if you do. That way -# I will not get support questions for software that is not entirely mine. - -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED -# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -# EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# $Id: altpdftex,v 2.18 2004/11/15 20:36:11 gerben Exp $ - -# This script assumes that there is a config.pdf somewhere that sets -# the bitmap mode to something large but realistic (real mode) so that -# unavailable pfb fonts will be included as bitmaps. - -# Version 1.0: added the string above for identification purposes -# Version 1.0a: Cosmetic change: do not display dir of argv[0] all the time -# Added calledas variable to hold command basename -# Version 1.1: Use calledas instead of $0 which means the sed command -# for determining format below also works when there is no dir -# (run from dir where altpdftex resides, not very likely...) -# Version 1.2: Force the use of tex binaries from the same directory as -# this script -# Version 1.3: Added --echo-version option, placed argument check after -# switch, inside while to prevent subscript out of range error -# Added --tex-path to override directory where this script -# resides. Added --gs-path to override a new default gs -# directory /usr/local/bin. Also, force gs directory at the -# start of the path to repair for broken installations of -# TeX, gs and such -# Version 1.4: Moved path changes to just before calling gs so that only -# ps2pdf is affected -# Version 1.5: Removed some path-related redundancy from GS calling -# Version 1.5a: Missing ${extradviopts} from echo -# Added version to --help output -# Added wolfram.map -# Version 1.6: Fixed bug: --dviopts did not work because it did set -# the wrong variable -# Changed dviopts to dvipsopts (better name) -# Version 1.7: Added --distiller and --distiller-filter option -# Changed --gs-path to --distiller-path -# Changed distiller semantics -# Fixed bug --tex-path flag needed trailing '/' -# Some extra quoting to be more robust for whitespace -# in names, also internally -# Version 1.8: Added pstill and u-psbuild info to help -# Version 1.9: Removed textrace bbold font (textrace is broken) -# Version 1.10: Added amstex support -# Simplified different format support -# Version 1.11: Do not source ~/.{t}cshrc, use the environment 'as is' -# Version 1.11 says it is version 1.10! -# Version 1.12: Added textrace bold font (textrace 0.48 is ok) -# Version 1.13: Changed success message at the end -# Echo version on by default -# Debug option -# Version 1.13b:Date report on version was very out of date, removed - -# Version 2.0: Rewritten in /bin/sh because (t)csh does not handle signals -# very well... -# This version works, but you need to send the SIGTERM to -# the process group (the negative PID) to get it to work -# Version 2.1: Small bug fixes -# Version 2.2: Fixed bug where argument without extension was interpreted -# as dvi file. -# Removed dependencies on smart sh versions -# Version 2.3: Removed map file knowledge (needs to be outside this script) -# beyond the standard map files -# Version 2.4: Added support for omega and lambda (use odvips) -# Version 2.5: Changed maxpk and maxpfb implementation to recent updmap -# Version 2.6: Use ps2pdf13 as the default distiller -# Version 2.7: Changed help -# Version 2.8: Checked into CVS. -# Added handling of outdir for TeX -# Version 2.9: Added auto-outdir flag -# Version 2.10: Changed --outdir behaviour to mimick TEXMFOUTPUT, -# removed --auto-outdir -# Version 2.11: Fixed typo -# Version 2.12: RCS changes, from now on, the version number is the RCS number -# These notes here will become a ChangeLog. -# 2003/05/20 Joachim's modification: write first to a pdf file in tmp, -# and only upon completion copy the file to its final -# destination. This is done in order to minimise the time where -# the pdf file in current directory is in an unstable state, -# because a PDF viewer might be tracking the file, and -# if it finds the pdf file in an intermediate state it will -# display a blank page until the new version is ready. -# 2003/05/21 Joachim's modification used /bin/cp. Gerben made it truly -# atomic by using /bin/cp in combination with /bin/mv -# 2003/11/23 Added supportfor passing flasg to tex at the request of -# Dick Koch. -# 2004/09/05 Bugfix: make it work better with directories with whitespace -# in their name -# 2004/11/15 New calling mode: simpdftex format foo.tex -# e.g.: -# simpdftex latex foo.tex -# In the future, the old modes (altpdflatex and friends) through -# symlinks will disappear from my distribution, though they will -# still work. -# 2007/05/07 Added dvipdfm support with compatibility with the patched version -# that is available on the net (simpdftex_dpmx) -# Changed version string to date-based string -# 2007/08/09 Protected echo command against broken builtin versions by running -# /bin/echo explicitly. There may exist /bin/echo implementations -# that do not support -n and this script will have to be changed -# before it works on such a system - -# FEATURE: it seems -u +foo.map -u -foo.map does not work. So --extradvipsopts -# cannot be used to remove a map from the standard list - -# BUG: Handling of file name extensions is not completely equialent to TeX -# i.e. foo.bar.bla gets you foo.bar.pdf not foo.bar.bla.pdf -# Hint: Give all extensions explicitely on the command line - -version='20070809' -calledas=`basename "$0"` -if [ "${calledas}" = "simpdftex" ] -then - argwithoutlead=`/bin/echo -n "$1"|sed 's/^--//'` - if [ "$1" != "" -a "$1" = "${argwithoutlead}" ] - then - formatname="$1" - shift - calledas="altpdf${formatname}" - fi -fi -argvbackup="$*" - -dviprogram="dvips" # Might be dvips, dvipdfm or dvipdfmx - -# maxpkdvipsopts: use only pfb's for real PS fonts, bitmaps are default for the others -maxpkdvipsopts="-Ppk" -# maxpfbdvipsopts: use as many pfb's as possible -maxpfbdvipsopts="-Poutline" -opt_dvipsopts="" - -# Defaults: -# altpdftex --default is the default setting, it also works -# when there is no config.pdf file -extradvipsoptions="" -dvipsoptions="$maxpfbdvipsopts" -outputpostfix=".maxpfb" -simplename="yes" -keeppsfile="no" -echoversion="yes" -texpath=`dirname "$0"` -# Default distiller is ps2pdf from /usr/local/bin in no filter mode -# as the direct call to a filtering gs does not work yet for some reason -#distillerpath="" -#distillerprog="/usr/local/bin/gs -dCompatibility=1.3 -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=- -c save pop" -#distillerfilter="yes" -distillerpath="/usr/local/bin" -distillerprog="ps2pdf13" -distillerfilter="no" -unset outdir -debug="no" -dvipdfmoptions="" - -usage() -{ - cat <<_eof_help -This is simpdftex, $version - -Usage: simpdftex formatname [--mode modestring] - [--dvipsopts dvipsoptstring] [--extradvipsopts dvipsoptstring] [--pdf] - [--default] [--maxpk] [--maxpfb] [--extendedname] [--no-echo-version] - [--tex-path dir] [--keep-psfile] [--distiller-path dir] [--debug] - [--distiller prog] [--distiller-filter prog] [--help] - [--outdir dir] [--extratexopts texoptsstring] - [--dvipdfmopts dvipdfmoptstring] tex-or-dvi-file - -simpdftex is a way to do pdf{e}{la}tex without having pdf{e}{la}tex. It needs a -working TeX environment and one of three ways to turn DVI file into PDF: - - dvips + a distiller like ghostscript - - dvipdfm - - dvipdfmx -Since pdf{e}{la}tex cannot handle insertion of .eps graphics, simpdftex gives an -alternative when using dvips mode. The output for both systems is comparable. - -simpdftex compiles the file with {LA}TeX, processes the DVI file with dvips into -PostScript and uses gs to produce pdf (with ps2pdf). Or it uses dvipdfm or -dvipdfmx to turn the DVI file into PDF. There is finegrained control over the -resulting filename and the options with which dvips produces the PostScript -intermediary file. - -Dvips will call Metafont to produce bitmaps or include PostScript .pfb files -depending on the flags. See below. - -The default setting is normal name, maximal use of pfb's, just like pdf{la}tex, -in other words, "pdftex file.tex" and "altpdftex file.tex" both produce an -output file file.pdf. For pdftex, output options are controlled by pdftex.cfg, -for altpdftext by config.ps (unless --pdf is given). - -Arguments: - tex-or-dvi-file - If a .dvi file is given, skip the TeX process. Otherwise, TeX - the input file, dvips the resulting dvi file and ps2pdf the - resulting ps file - --mode - Tell simpdftex how to go from DVI to PDF. There are three modes: - - dvips - - dvipdfm - - dvipdfmx - --dpx - Compatibility flag with simpdftex_dpmx. Equal to --mode dvipdfmx - --dpm - Compatibility flag with simpdftex_dpmx. Equal to --mode dvipdfm - --help - Display this message and exit - --no-echo-version - Do not echo location and version of this script. Does not exit - so can be used tochange info to the output of a real run - --debug - Add some debug output - --extendedname - Depending on the mode, adds intermediary extensions to the - output filename. If the mode is --pdf, .pdfmode is added. If - the mode is --maxpk, ,maxpk is added and if the mode is - --maxpfb, .maxpfb is added. Example: - tex-or-dvi-file-basename.maxpfb.pdf - --maxpk - Use Metafont bitmaps (pk files) when possible. Only real - PostScript fonts (like Times Roman) are included as - PostScript fonts. All other fonts are included as bitmaps - for the default printer resolution. This options produces - optimal results for the chosen printer. - For file contents (not name) equivalent to: - --dvipsopts "-Ppk" - Not yet functional for the other modes. - --maxpfb - Use PostScript pfb files whenever possible. This produces - optimal results for the screen. - For file contents (not name) equivalent to: - --dvipsopts "-Poutline" - If any font is included as TeX pk bitmap, it is rendered - at the default resolution. - Not yet functional for the other modes. - --pdf - Select .pdfmode extension for the output file name if - --extendedname has been set. Use printer definition - config.pdf. For file contents (not name) equivalent to - --dvipsopts "-Ppdf" - Note that the default config.pdf assumes resolution 8000 - for bitmaps and bitmap generation fails at this resolution - because there exists no known mode for that resolution. - --default - Select no extension for the output file name, even if - --extendedfilename has been set. Use standard printer - definition config.ps. For file contents (not name) equivalent - to: - --dvipsopts "" --noextendedname - --dvipsopts - Give arbitrary arguments to dvips, e.g. - --dvipsopts "-M" - Sets extension for --extendedfilename to .custom. --dvipsopts - overrides other flags that set dvipsopts. - --extratexopts - Give extra arbitrary arguments to tex, e.g. - --extratexopts "--interaction=nonstopmode" - Sets extra options for the tex command that is used. - --extradvipsopts - Give extra arbitrary arguments to dvips, e.g. - --extradvipsopts "-M" - Sets extra options for dvips and does not set extension - or override other options. Options will be added to the end - of the options for dvips - --keep-psfile - After running dvips, copy the ps file over to the directory - where the tex file is, possibly overwriting a ps file - that is there. Use with caution, a ps file could be input - as well. - --tex-path - Give path of TeX binaries, use directory of this script - otherwise - --distiller prog - Use a distiller different from ps2pdf which is the default. - Argument must be an executable or executable script that - gets called iwth two arguments: input file (PS) and output - file (PDF). E.g.: - --distiller=/usr/local/alternate/bin/ps2pdf - --distiller=pstill - Using this flag sets the distiller filter mode to off - This flag only makes sense in dvips mode - --distiller-filter prog - Use a distiller executable or executable script which is - called with the PS input as standard input and which writes - the PDF output to standard output. E.g.: - --distiller-filter=u-psbuild - This flag only makes sense in dvips mode - --distiller-path - Give path needed by the distiller binary. This path is added - to the begin of you PATH environment before the distiller is - run. The reason is that for instance ps2pdf uses the path to - find gs and sets the path to something with /sw/bin at the - beginning. Thus, installing gs from fink would make - /usr/local/bin/ps2pdf find another gs than intended. By giving - an empty path, the path is not changed before the distiller - program is run. The default is empty. - This flag only makes sense in dvips mode - --dvipdfmopts - Give arbitrary arguments to dvipdfm or dvipdfmx, e.g. - --dvipdfmopts "-c" - Sets extension for --extendedfilename to .custom. --dvipdfmopts - overrides other flags that set dvipdfmopts. - --outdir dir - Write files here *if* our current directory is unwritable. This - mimicks the TEXMFOUTPUT environment variable of TeX, but - differently. The current dir becomes the value of --outdir and - the directory where the old current dir is added to TEXINPUTS. - This is more robust for reading and locating files. - You can also set TEXMFOUTPUT instead, but with a disadvantage: - you will be running TeXin the current dir. And you will not be - able to read files in the outdir unless you also adapt - TEXINPUTS. - - The defaults for the distiller are - Path addition: "${distillerpath}" - Filter mode: "${distillerfilter}" - Program: "${distillerprog}" - - Later flags override settings of earlier flags. -_eof_help -} - -while test $# -gt 0 -do - case $1 in - --help) - usage - exit 0;; - --dvipsopts) - shift - outputpostfix=".custom" - dvipsoptions="$1" - ;; - --dvipdfmopts) - outputpostfix=".custom" - shift - dvipdfmoptions="$1" - ;; - --dvipdfopts) # Compatibility with simpdftex_dpmx - shift - dvipdfmoptions="$1" - ;; - --extradvipsopts) - shift - extradvipsoptions="$1" - ;; - --extratexopts) - shift - extratexoptions="$1" - ;; - --tex-path) - shift - texpath="$1" - ;; - --pdf) - outputpostfix=".pdfmode" - dvipsoptions="-P pdf" - ;; - --default) - outputpostfix="" - dvipsoptions="" - # Use the default print option in config.ps - ;; - --maxpk) - outputpostfix=".maxpk" - dvipsoptions="$maxpkdvipsopts" - ;; - --maxpfb) - outputpostfix=".maxpbfb" - dvipsoptions="$maxpfbdvipsopts" - ;; - --extendedname) - simplename="no" - ;; - --keep-psfile) - keeppsfile="yes" - ;; - --debug) - debug="yes" - ;; - --distiller-path) - shift - distillerpath="$1" - ;; - --distiller) - shift - distillerprog="$1" - distillerfilter="no" - ;; - --mode) - shift - if [ "$1" = "dvips" -o "$1" = "dvipdfm" -o "$1" = "dvipdfmx" ] - then - dviprogram="$1" - else - /bin/echo "Unknown mode $1" - exit 1 - fi - ;; - --outdir) - shift - export TEXINPUTS=`pwd`:`kpsewhich --expand-var '$TEXINPUTS'` - export TEXMFOUTPUT="$1" - outdir="$1/" - outdirset="yes" - cd "$1" - ;; - --distiller-filter) - shift - distillerprog="$1" - distillerfilter="yes" - ;; - --no-echo-version) - echoversion="no" - ;; - --dpx) # Compatibility with simpdftex_dpmx - dviprogram="dvipdfmx" - ;; - --dpm) # Compatibility with simpdftex_dpmx - dviprogram="dvipdfm" - ;; - --*) - /bin/echo "Unknown option $1" - exit 1;; - "") - ;; - *) - break;; - esac - shift -done - -if [ "${echoversion}" = "yes" -a "${debug}" = "no" ] -then - /bin/echo "### This is $0, Version ${version}" -fi - -if [ "${debug}" = "yes" ] -then - /bin/echo "##### This is $0, Version ${version}" - /bin/echo "##### Arguments: ${argvbackup}" -fi - -run_dvipdfm() -{ - /bin/echo "### ${texpath}/${dviprogram} ${dvipdfmoptions} -o ${pdffile} ${dvifile}" - "${texpath}/${dviprogram}" ${dvipdfmoptions} -o "${pdffile}" "${dvifile}" || \ - { /bin/echo "### FAILED to generate ${pdffile} (${status})"; \ - exit 1; } -} - -run_dvips() -{ - /bin/echo "### ${texpath}/${dviprogram} -R ${dvipsoptions} ${extradvipsoptions} -o ${psfile} ${dvifile}" - "${texpath}/${dviprogram}" -R ${dvipsoptions} ${extradvipsoptions} -o "${psfile}" "${dvifile}" || \ - { /bin/echo "### FAILED to generate ${psfile} (${status})"; \ - exit 1; } - - if [ "${keeppsfile}" = "yes" ]; then - /bin/echo "### Saving intermediary ps file ${psfile} as ${savedpsfile}" - /bin/cp "${psfile}" "${savedpsfile}" || \ - /bin/echo "### FAILED to save ${psfile} (${status})" - fi - - if [ "${distillerpath}" != "" ]; then - PATH="${distillerpath}:${PATH}";export PATH - if [ "${debug}" = "yes" ]; then - /bin/echo "##### PATH set to ${PATH}" - fi - fi - - if [ "${distillerfilter}" = "yes" ]; then - /bin/echo "### ${distillerprog} <${psfile} >${pdffile}" - "${distillerprog}" <"${psfile}" >"${pdffile}" || \ - { /bin/echo "### FAILED to generate ${pdffile} (${status})" - exit 1; } - else - /bin/echo "### ${distillerprog} ${psfile} ${pdffile}" - "${distillerprog}" "${psfile}" "${pdffile}" || \ - { /bin/echo "### FAILED to generate ${pdffile} (${status})" - exit 1; } - fi -} - -cleanup() -{ - if [ "${tmpdir}" != "" -a "${debug}" = "no" ] - then - rm -rf "${tmpdir}" - fi -} - -terminated() -{ - cleanup - exit 1; -} - -trap 'terminated' 15 - -main() -{ - if [ "${file}" = "" ] - then - /bin/echo "simpdftex Empty argument: tex-or-dvi-file-name" - exit 1 - fi - - # Argument handling - - if [ "${simplename}" = "yes" ] - then - outputpostfix="" - fi - - startwithdvi="no" - basename=`basename "${file}"` - nosuffixbasename=`/bin/echo -n ${basename}|sed 's/\.[^.]*$//'` - nodvisuffixbasename=`/bin/echo -n ${basename}|sed 's/\.[dD][vV][iI]$//'` - if [ "${nodvisuffixbasename}" = "${nosuffixbasename}" -a \ - "${basename}" != "${nosuffixbasename}" ] - then - startwithdvi="yes" - fi - - kpsefilename=`kpsewhich "${file}"` - slashdirname=`dirname "${kpsefilename}"`/ - - if [ ! -w "." ] - then - if [ "${TEXMFOUTPUT}" != "" ] - then - outdir="${TEXMFOUTPUT}/" - outdirset="yes" - if [ "${autoinput}" = "yes" ] - then - export TEXINPUTS=${TEXMFOUTPUT}:`kpsewhich --expand-var '$TEXINPUTS'` - - fi - else - /bin/echo "### Cannot write in current directory and no redirect found. Bailing out..." - exit 1 - fi - fi - - # Assume the command is called altpdf* where the rest is the actual tex - # program to be run - texprogram=`/bin/echo ${calledas}|sed 's/altpdf//'` - if [ "${texprogram}" = "omega" -o "${texprogram}" = "lambda" ] - then - dvips="odvips" - else - dvips="dvips" - fi - - # Handle temp dir (cleanup is called on signal) - tmpext=$$-`/bin/date +"%s"` - tmpdir="/tmp/altpdf${texprogram}.${tmpext}" - # Force removal of possible existing tmpdir - cleanup - # Make new version - mkdir "${tmpdir}" - - if [ "${startwithdvi}" = "yes" ] - then - dvifile="${file}" - else - texfile="${file}" - dvifile="${outdir}${nosuffixbasename}.dvi" - fi - - psfile="${tmpdir}/${nosuffixbasename}${outputpostfix}.ps" - savedpsfile="${outdir}${nosuffixbasename}.ps" - pdffile="${tmpdir}/${nosuffixbasename}${outputpostfix}.pdf" - savedpdffile="${outdir}${nosuffixbasename}${outputpostfix}.pdf" - - if [ "${debug}" = "yes" ] - then - /bin/echo "##### TeX file: $texfile" - /bin/echo "##### DVI file: $dvifile" - if [ "${dviprogram}" = "dvips" ] - then - /bin/echo "##### PS file: $psfile" - /bin/echo "##### Saved PS file: $savedpsfile" - fi - /bin/echo "##### Created PDF file: $pdffile" - /bin/echo "##### Final PDF file: $savedpdffile" - /bin/echo "##### Environment:" - env | sed 's/^/##### /g' - fi - - if [ "${startwithdvi}" = "yes" ]; then - /bin/echo "### Skipping ${texprogram} ${texfile} [dvi->pdf only]" - else - /bin/echo "### ${texpath}/${texprogram} ${texfile}" - "${texpath}/${texprogram}" ${extratexoptions} "${texfile}" || \ - /bin/echo "### WARNING: TeX returned non zero exit status ${status}" - fi - - case "${dviprogram}" in - "dvips") - run_dvips;; - "dvipdfm") - run_dvipdfm;; - "dvipdfmx") - run_dvipdfm;; - *) - /bin/echo "### ERROR: wrong dvipdf mode ${dviprogram}" - esac - - /bin/echo "### Copying/moving pdf file ${pdffile} to ${savedpdffile}" - /bin/cp "${pdffile}" "${savedpdffile}.${tmpext}" || \ - /bin/echo "### FAILED to copy ${pdffile} (${status})" - /bin/rm -f "${savedpdffile}" - /bin/mv "${savedpdffile}.${tmpext}" "${savedpdffile}" || \ - /bin/echo "### FAILED to rename ${savedpdffile}.${tmpext} (${status})" - - if [ "${startwithdvi}" = "yes" ]; then - if [ "${keeppsfile}" = "yes" ]; then - /bin/echo "### Succesfully generated ${savedpdffile} and ${savedpsfile}" - else - /bin/echo "### Succesfully generated ${savedpdffile}" - fi - else - if [ "${keeppsfile}" = "yes" ]; then - /bin/echo "### Succesfully generated ${dvifile}, ${savedpdffile} and ${savedpsfile}" - else - /bin/echo "### Succesfully generated ${dvifile} and ${savedpdffile}" - fi - fi - - cleanup -} - -for file in "$@" -do - main -done -- cgit v1.2.3