diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-09 00:45:48 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-09 00:45:48 +0000 |
commit | 5dc602d16c5be2fd035b254ca23484a90aebd6dc (patch) | |
tree | 72efb15fba318cc2096a8cc6999ed3fa0bff317d /Master/texmf-dist/doc/texsis/base/letr | |
parent | b4fc5f639874db951177ec539299d20908adb654 (diff) |
doc 5
git-svn-id: svn://tug.org/texlive/trunk@81 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/texsis/base/letr')
-rwxr-xr-x | Master/texmf-dist/doc/texsis/base/letr | 230 |
1 files changed, 230 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/texsis/base/letr b/Master/texmf-dist/doc/texsis/base/letr new file mode 100755 index 00000000000..ad4697fc80e --- /dev/null +++ b/Master/texmf-dist/doc/texsis/base/letr @@ -0,0 +1,230 @@ +#!/bin/sh +# +# letr - a Unix shell script for printing a letter with an addressed +# envelope, using TeXsis (the TeX macros for physicists). The syntax is: +# +# letr [ -q ][ -Pprinter ] [ dvips flags ] [ filename ] +# +# where "filename" is the name for your TeX job. The TeX instructions +# for creating your letter will be put in the file filename.tex, while +# the instructions for creating the printed envelope will be in the +# file filename.env. If no name is given the default is "TeXletter". +# +# You first edit your letter with your default EDITOR, then it is run +# through TeXsis. You can preview the letter, and then choose whether +# or not to print it, and whether or not to print the addressed envelope. +# +# Use the -q flag to bypass the editor, and -P to specify an alternate +# printer. All other flags are passed to dvips. So, for example, if +# you give the -m flag it will go to dvips and the letter (not just the +# envelope) will be printed in manual feed mode, so you can put your own +# paper in the printer for it. +# +# To get the envelope to print in landscape mode and with manual feed +# we call dvips explicitly. If you need to, change the DVIPS command +# and ENVFLAGS below to match your local site configuration. +# +# Eric Myers <myers@umich.edu> - 27 January 1996 +# Department of Physics, University of Michigan, Ann Arbor +# @(#) $Id: letr,v 1.7 2000/06/01 20:02:30 myers Exp $ +###################################################################### +# Local Customization: + +EDITOR=${EDITOR-"emacs"} # editor (default to emacs) +DVIVIEW=${DVIVIEW-"xdvi"} # dvi file viewer (dviview is more general) +DVIPS=${DVIPS-"dvips -q"} # general dvips command +ENVLFLAGS="-m -t landscape" # dvips flags for the envelope + +#====================(end of customization)====================* + +## Parse command line arguments. Unrecognized ones are saved for dvips + +FNAME=${FNAME-"TeXletter"} # name of file to process +FLAGS=" " # flags to pass on to dvips +NOEDIT="" + +while [ $# != 0 ] +do case "$1" in + -P*) PRINTER=`echo $1 | tail +3c` # strip off the -P + LPDEST=$PRINTER ;; + -q) NOEDIT="NOEDIT" ;; + -*) FLAGS="$FLAGS $1" ;; + *) FNAME="$1" ;; + esac + shift +done + +PROG=`basename $0` + +############### +# Determine which printer we shall use, and how. In NeXTStep the lpr +# command ignores the $PRINTER variable, so we will correct for that +# here by always using `lpr -P$PRINTER`, with "Local_Printer" as the +# default. For other Unix change default printer to 'lp'. For SYSV +# we need to use "lp -d$LPDEST" instead. + +if [ -x /usr/ucb/lpr ]; then + if [ -x /sdmach ]; then # NeXTStep + PRINTER=${PRINTER-"Local_Printer"} + else # other BSD + PRINTER=${PRINTER-"lp"} + fi + # The -h option suppresses the banner page + LPR="/usr/ucb/lpr -h -P$PRINTER" +fi + +if [ -x /usr/bin/lpr ]; then # BSD (Linux, Solaris) + PRINTER=${PRINTER-"lp"} + # The -h option suppresses the banner page + LPR="/usr/bin/lpr -h -P$PRINTER" +fi + +if [ -x /usr/bin/lp ]; then # SYSV (eg. HP-UX) + LPDEST=${LPDEST-"lp"} + # The -onb option suppresses the banner page on HP LaserJet3/4 (and 5?) + LPR="/usr/bin/lp -onb -d${LPDEST} " +fi + +if [ ! $?LPR ]; then + echo "Cannot determine lpr/lp command." + exit 2 +fi + +## Figure out line end suppression for BSD or SYSV + +if [ "`echo 'EC\c'; echo HO`" = "ECHO" ]; then + SYSVNL="\c"; BSDNL="" # System V line control +else + BSDNL="-n"; SYSVNL="" # BSD line control +fi + +## the function `ask_def default text` asks a question and returns +## the user's answer, using the default if just <cr> is pressed. + +ask_def () { + DEFAULT=$1 ; shift + echo ${BSDNL} "$* [${DEFAULT}] ${SYSVNL}" + read ANS + if [ -z "$ANS" ]; then ANS=$DEFAULT ; fi + export ANS; } + + +## Strip off .tex from the filename, if it is included. +## Any trailing . is also removed (helps for tcsh filename completion). + +FNAME=`basename $FNAME .tex` # get just the file name, strip .tex +FNAME=`basename $FNAME .` # get just the file name, strip "." + +## If the named TeX file does not exist, create it with a simple +## TeXsis \letter template + +if [ ! -f ${FNAME}.tex ]; then +cat >${FNAME}.tex <<End-of-Text +\\texsis +\\letter +\\withEnvelope % if you also want to print an envelope +\\def\\Email{}% <-- set e-mail address if you want it in the letterhead +\\letterhead{}% <-- phone number or extension goes here +\\address +NAME OF ADDRESSEE HERE +ADDRESS GOES HERE +AS MANY LINES AS YOU NEED + +\\body +Dear WHOEVER, + +BODY OF LETTER GOES HERE. + +AS MANY PARAGRAPHS AS YOU WANT. + +\\closing +Sincerely, +YOUR NAME HERE + +\bye +End-of-Text +fi + + +## Edit the file with EDITOR, unless -q flag was given + +if [ -z "$NOEDIT" ]; then + if $EDITOR ${FNAME}.tex + then echo " " + else + echo "${PROG}: ${EDITOR} editing error ($?). Bailing out..." + exit 1 + fi +fi + +if [ ! -f ${FNAME}.tex ]; then exit 0 ; fi + +## Process through TeXsis + +if [ -z "$NOEDIT" ]; then + ask_def yes "Process file ${FNAME}.tex through TeXsis? " +else + ANS="yes" +fi + +case $ANS in + yes|Y|y|YES|Yes) + if texsis ${FNAME}.tex + then + echo " " + else + echo "${PROG}: TeXsis error ($?). Bailing out..." + exit 1 + fi ;; + *) exit 0 +esac + + +## Preview the .dvi file, if desired + +if [ -f ${FNAME}.dvi ]; then + + ask_def yes "Do you want to preview the letter? " + case $ANS in + yes|Y|y|YES|Yes) echo " " + $DVIVIEW ${FNAME} #>/dev/null 2>&1 + sleep 1 ;; + esac + + echo " " + echo "Default printer is '${PRINTER}'." + ask_def yes "Do you want to print this now? " + case $ANS in + yes|Y|y|YES|Yes) + ${DVIPS} ${FLAGS} ${FNAME}.dvi # >/dev/null 2>&1 + echo "Printing the letter..." + ${LPR} ${FNAME}.ps ;; + *);; + esac + +fi + + +## Process envelope, if desired and it exists + +if [ -f ${FNAME}.env ]; then + + ask_def yes "Do you want to print the envelope? " + case $ANS in + yes|Y|y|YES|Yes) + /bin/rm -rf ${FNAME}.dvi ${FNAME}.ps + texsis ${FNAME}.env + $DVIPS ${FLAGS} ${ENVLFLAGS} ${FNAME}.dvi ## >/dev/null 2>&1 + echo "Printing the envelope... Please feed the printer. " + ${LPR} ${FNAME}.ps + esac + +else + echo "No envelope file ${FNAME}.env was found." +fi + +# Clean up: remove .dvi file, .ps file, and .log file (but keep .env file). + +/bin/rm -f ${FNAME}.dvi ${FNAME}.log ${FNAME}.ps + +exit 0 |