Annotation of capa/capa51/CapaTools/printsections.tcl, revision 1.1
1.1 ! albertel 1: #!/usr/local/bin/tclsh7.6
! 2:
! 3: puts "Automated printing Version 1.1"
! 4:
! 5: proc quit { } {
! 6: global dir
! 7: cd $dir
! 8: exit
! 9: }
! 10:
! 11: proc parseCapaConfig { } {
! 12: global onesided twosided
! 13:
! 14: set filename [file join [pwd] capa.config]
! 15: set error [ catch { set fileId [open $filename "r"] } ]
! 16: if { $error } {
! 17: return
! 18: }
! 19:
! 20: while { 1 } {
! 21: gets $fileId aline
! 22: if { [eof $fileId ] } { break }
! 23: switch -glob -- "$aline" {
! 24: "lprOneSided_command *= *"
! 25: { set onesided [lindex $aline end] }
! 26: "lprTwoSided_command *= *"
! 27: { set twosided [lindex $aline end] }
! 28: }
! 29: }
! 30: if { [string first \$PS_file $onesided] == -1 } {
! 31: set onesided "$onesided \$PS_file"
! 32: }
! 33:
! 34: if { [string first \$PS_file $twosided] == -1 } {
! 35: set twosided "$twosided \$PS_file"
! 36: }
! 37: }
! 38:
! 39: proc parsesection { sec set } {
! 40: if { [ catch { exec echo [pwd] | qzparse -sec $sec \
! 41: -set $set >&@ file1 } ] } {
! 42: puts "Error occured while parsing set: $set section: $sec"
! 43: quit
! 44: }
! 45: }
! 46:
! 47: proc latexsection { sec set } {
! 48: if { [ catch { cd TeX } ] } {
! 49: puts "Unable to find [pwd]/TeX"
! 50: quit
! 51: }
! 52:
! 53: if { [ catch { exec latex section$sec-set$set < /dev/null >&@ file1 } ] } {
! 54: puts "Error occured while latexing set: $set section: $sec"
! 55: quit
! 56: }
! 57: cd ..
! 58: }
! 59:
! 60: proc dvisection { sec set } {
! 61: if { [ catch { cd TeX } ] } {
! 62: puts "Unable to find [pwd]/TeX"
! 63: quit
! 64: }
! 65:
! 66: if { [ catch { exec dvips -o section$sec-set$set.ps \
! 67: section$sec-set$set.dvi < /dev/null >&@ file1 } ] } {
! 68: puts "Error occured while creating dvi, set: $set section: $sec"
! 69: quit
! 70: }
! 71: cd ..
! 72: }
! 73:
! 74: proc printonesided { sec set Printer_selected } {
! 75: global onesided
! 76: if { [ catch { cd TeX } ] } {
! 77: puts "Unable to find [pwd]/TeX"
! 78: quit
! 79: }
! 80: set PS_file section$sec-set$set.ps
! 81: if { [ catch { eval "exec $onesided < /dev/null >&@ file1" } ] } {
! 82: puts "Error occured while printing set: $set section: $sec"
! 83: quit
! 84: }
! 85: cd ..
! 86: }
! 87:
! 88: proc printtwosided { sec set Printer_selected } {
! 89: if { [ catch { cd TeX } ] } {
! 90: puts "Unable to find [pwd]/TeX"
! 91: quit
! 92: }
! 93: set PS_file section$sec-set$set.ps
! 94: if { [ catch { eval "exec $twosided < /dev/null >&@file1" } ] } {
! 95: puts "Error occured while printing set: $set section: $sec"
! 96: quit
! 97: }
! 98: cd ..
! 99: }
! 100:
! 101: proc cleanup { sec set { some 0 } } {
! 102: set ext "dvi log aux ps tex"
! 103: if { $some } { set ext "dvi log aux" }
! 104: foreach ext { tex dvi ps log aux } {
! 105: exec rm -f TeX/section$sec-set$set.$ext
! 106: }
! 107: }
! 108:
! 109: if { $argc == 6 } {
! 110: set pathname [lindex $argv 0]
! 111: set startsection [lindex $argv 1]
! 112: set endsection [lindex $argv 2]
! 113: set setnumber [lindex $argv 3]
! 114: set sided [lindex $argv 4]
! 115: set printqueue [lindex $argv 5]
! 116: puts "Running class $pathname for sections $startsection:$endsection for set $setnumber on printer $printqueue, printing $sided side(s)"
! 117: } else {
! 118: if { $argc != 0 } {
! 119: puts "Usage is $argv0 pathname startsection endsection setnumber #sides printqueue"
! 120: puts " Specifying 0 sides will leave the postscript files behind and not print"
! 121: }
! 122: while { 1 } {
! 123: puts "Enter the ABSOLUTE pathname of the class:"
! 124: gets file0 pathname
! 125: puts "Enter start section:"
! 126: gets file0 startsection
! 127: puts "Enter end section:"
! 128: gets file0 endsection
! 129: puts "Enter set:"
! 130: gets file0 setnumber
! 131: puts "One sided or two sided: (1 or 2)"
! 132: gets file0 sided
! 133: if { $sided != 0 } {
! 134: puts "Enter the name of the printer:"
! 135: gets file0 printqueue
! 136: puts "Run class $pathname for sections $startsection:$endsection for set $setnumber on printer $printqueue, printing $sided side(s)? (y or n)"
! 137: } else {
! 138: puts "Run class $pathname for sections $startsection:$endsection for set $setnumber with no printing? (y or n)"
! 139: }
! 140: if { "y" == [string range [string trimleft [gets file0] ] 0 0 ] } {
! 141: break
! 142: }
! 143: }
! 144: }
! 145: set dir [pwd]
! 146:
! 147: if { [ catch { cd $pathname } ] } {
! 148: puts "Invalid class $pathname"
! 149: quit
! 150: }
! 151:
! 152: set onesided "lpr -P\$Printer_selected"
! 153: set twosided "lpspr -K2 \$PS_file | lpr -P\$Printer_selected"
! 154: parseCapaConfig
! 155:
! 156: if { $endsection == 0 } {
! 157: set endsection $startsection
! 158: }
! 159:
! 160:
! 161: for { set i $startsection } { $i <= $endsection } { incr i } {
! 162: parsesection $i $setnumber
! 163: latexsection $i $setnumber
! 164: dvisection $i $setnumber
! 165: if { $sided == 1 } {
! 166: printonesided $i $setnumber $printqueue
! 167: } elseif { $sided == 2 } {
! 168: printonesided $i $setnumber $printqueue
! 169: }
! 170: if { $sided != 0 } { cleanup $i $setnumber
! 171: } else { cleanup $i $setnumber 1
! 172: }
! 173: }
! 174:
! 175:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>