�PNG
IHDR��;���IDATx��ܻn�0���K��
�)(�pA������7�LeG{�� �§㻢|��ذaÆ
6lذaÆ
6lذaÆ
6lom��$^�y���ذag�5bÆ
6lذaÆ
6lذa{����
6lذaÆ
�`����}H�Fkm�,�m����Ӫ���ô�ô!��x�|'ܢ˟;�E:���9�&ᶒ�}�{�v]�n&�6�
�h��_��t�ڠ͵-ҫ���Z;��Z$�.�P���k�ž)�!��o���>}l�eQfJ�T��u і���چ��\��X=8��Rن4`Vw�l�>����n�G�^��i�s��"ms�$�u��i��?w�bs[m�6�K4���O���.�4��%����/����b�C%��t��M�ז� �-l�G6�mrz2���s�%�9��s@���-�k�9�=���)������k�B5����\��+͂�Zsٲ��Rn��~G���R���C������wIcI��n7jJ���hۛNCS|���j0��8y�iHKֶۛ�k�Ɉ+;Sz������L/��F�*\��Ԕ�#"5��m�2��[S��������=�g��n�a�P�e�ғ�L��
lذaÆ
6l�^k��̱aÆ
6lذaÆ
6lذa;����
�_��ذaÆ
6lذaÆ
6lذaÆ
���R���IEND�B`
#!/bin/sh
# TeXConfig version 3.0
# Originally written by Thomas Esser. Public domain.
# Now maintained as part of TeX Live; correspondence to tex-live@tug.org.
# invoke the right shell:
test -f /bin/ksh && test -z "$RUNNING_KSH" \
&& { UNAMES=`uname -s`; test "x$UNAMES" = xULTRIX; } 2>/dev/null \
&& { RUNNING_KSH=true; export RUNNING_KSH; exec /bin/ksh $0 ${1+"$@"}; }
unset RUNNING_KSH
test -f /bin/bsh && test -z "$RUNNING_BSH" \
&& { UNAMES=`uname -s`; test "x$UNAMES" = xAIX; } 2>/dev/null \
&& { RUNNING_BSH=true; export RUNNING_BSH; exec /bin/bsh $0 ${1+"$@"}; }
unset RUNNING_BSH
export PATH
# hack around a bug in zsh:
test -n "${ZSH_VERSION+set}" && alias -g '${1+"$@"}'='"$@"'
# initializations...
progname=texconfig
# the version string
version='$Id$'
envVars="
AFMFONTS BIBINPUTS BSTINPUTS CMAPFONTS CWEBINPUTS ENCFONTS GFFONTS
GLYPHFONTS INDEXSTYLE LIGFONTS MFBASES MFINPUTS MFPOOL MFTINPUTS
MISCFONTS MPINPUTS MPMEMS MPPOOL MPSUPPORT OCPINPUTS OFMFONTS
OPENTYPEFONTS OPLFONTS OTPINPUTS OVFFONTS OVPFONTS PDFTEXCONFIG PKFONTS
PSHEADERS SFDFONTS T1FONTS T1INPUTS T42FONTS TEXBIB TEXCONFIG TEXDOCS
TEXFONTMAPS TEXFONTS TEXFORMATS TEXINDEXSTYLE TEXINPUTS TEXMFCNF
TEXMFDBS TEXMFINI TEXMFSCRIPTS TEXPICTS TEXPKS TEXPOOL TEXPSHEADERS
TEXSOURCES TFMFONTS TRFONTS TTFONTS VFFONTS WEB2C WEBINPUTS
"
tmpdir=${TMPDIR-${TEMP-${TMP-/tmp}}}/tctmp.$$
needsCleanup=false
lastUpdatedFile=
#
###############################################################################
# setupFMT(void) - find a suitable version of fmt / adjust
#
setupFMT()
{
case $FMT in
"")
FMT=fmt
test ! -x /bin/fmt && test ! -f /usr/bin/fmt &&
{ test -x /bin/adjust || test -x /usr/bin/adjust; } && FMT=adjust
;;
*)
return
;;
esac
}
###############################################################################
# myFmt(args) - run $FMT
#
myFmt()
{
setupFMT
$FMT ${1+"$@"}
}
###############################################################################
# echoShowVariable(args ...)
# show environment variables which names are as args and their values
#
echoShowVariable()
{
for esv
do
var=$esv
eval val=\"\${$var+=}\${$var- is unset}\"
echo "$var$val"
done | grep -v 'is unset$'
}
###############################################################################
# echoShowKpseVariable(args ...)
# show kpathsea variables which names are as args and their values
#
echoShowKpseVariable()
{
for eskv
do
var=$eskv
val=`kpsewhich -var-value="$eskv"`
echo "$var=$val"
done
}
###############################################################################
# echoLocateBinary(args ...) - show where programs actually exist
#
echoLocateBinary()
{
for elb
do
elbLoc=`checkForBinary "$elb"`
if test -n "$ELB_PATH_ONLY"; then
test -n "$elbLoc" && echo "$elbLoc"
else
case $elbLoc in
"") echo "$elb: not found";;
*) echo "$elb: $elbLoc";;
esac
fi
done
}
###############################################################################
# echoLocateCfgfile(args ...) - show where files actually exist
#
echoLocateCfgfile()
{
for elc
do
case $elc in
texmf.cnf) elcLoc=`kpsewhich $elc`;;
*) elcLoc=`tcfmgr --cmd find --file "$elc"`;;
esac
case $elcLoc in
"") echo "$elc: not found";;
*) echo "$elcLoc";;
esac
done
}
###############################################################################
# checkForBinary(prog) - echo full path of prog
#
checkForBinary()
{
cfbBinary=$1
OLDIFS=$IFS
IFS=:
set x `echo "$PATH" | sed 's/^:/.:/; s/:$/:./; s/::/:.:/g'`; shift
found=false
for pathElem
do
case $pathElem in
"") continue;;
*) test -f "$pathElem/$cfbBinary" && { echo "$pathElem/$cfbBinary"; found=true; break; }
esac
done
IFS=$OLDIFS
case $found in
true) (exit 0); return 0;;
false) (exit 1); return 1;;
esac
}
###############################################################################
# cleanup() - clean up the temp area and exit with proper exit status
#
cleanup()
{
rc=$1
$needsCleanup && test -n "$tmpdir" && test -d "$tmpdir" \
&& { cd / && rm -rf "$tmpdir"; }
(exit $rc); exit $rc
}
###############################################################################
# setupTmpDir() - set up a temp directory and a trap to remove it
#
setupTmpDir()
{
case $needsCleanup in
true) return;;
esac
trap 'cleanup 1' 1 2 3 7 13 15
needsCleanup=true
(umask 077; mkdir "$tmpdir") \
|| abort "could not create directory \`$tmpdir'"
}
###############################################################################
# setupTexmfmain() - get value for MT_TEXMFMAIN (with caching)
#
setupTexmfmain()
{
case $MT_TEXMFMAIN in
"") MT_TEXMFMAIN=`kpsewhich -var-value=TEXMFMAIN`;;
*) return;;
esac
}
###############################################################################
# setupTexmfmain() - get value for MT_TEXMFDIST (with caching)
#
setupTexmfdist()
{
case $MT_TEXMFDIST in
"") MT_TEXMFDIST=`kpsewhich -var-value=TEXMFDIST`;;
*) return;;
esac
}
###############################################################################
# setupTexmfvar() - get value for MT_TEXMFVAR (with caching)
#
setupTexmfvar()
{
case $MT_TEXMVAR in
"") MT_TEXMVAR=`kpsewhich -var-value=TEXMFVAR`;;
*) return;;
esac
}
###############################################################################
# setupSystexmf() - get value for MT_SYSTEXMF (with caching)
#
setupSystexmf()
{
case $MT_SYSTEXMF in
"") MT_SYSTEXMF=`kpsewhich -var-value=SYSTEXMF`;;
*) return;;
esac
}
###############################################################################
# abort(errmsg)
# print `errmsg' to stderr and exit with error code 1
#
abort()
{
echo "$progname: $1." >&2
cleanup 1
}
###############################################################################
# mktexdir(args)
# call mktexdir script, disable all features (to prevent sticky directories)
#
mktexdir()
{
setupTexmfmain
MT_FEATURES=none "$MT_TEXMFMAIN/web2c/mktexdir" "$@" >&2
}
###############################################################################
# tcfmgr(args) - call tcfmgr script
#
tcfmgr()
{
setupTexmfmain
"$MT_TEXMFMAIN/texconfig/tcfmgr" "$@"
}
###############################################################################
# mktexupd(args) - call mktexupd script
#
mktexupd()
{
setupTexmfmain
"$MT_TEXMFMAIN/web2c/mktexupd" "$@"
}
###############################################################################
# getRelDir(file)
# matches file against SYSTEXMF. Returns relative directory of file within
# a texmf tree in variable relPart.
#
getRelDir()
{
file=$1
relPart=
setupSystexmf
OLDIFS=$IFS
IFS='
'
set x `echo "$MT_SYSTEXMF" | tr : '
'`; shift
IFS=$OLDIFS
# now loop over all components of SYSTEXMF
for dir
do
test -n "$dir" || continue
case "$file" in
$dir/*)
relPart=`echo "$file" | sed "s%$dir/*%%"`
break
;;
esac
done
# now check for success / failure
case $relPart in
""|$file)
# empty or full filename -> getRelDir failed!
(exit 1); return 1
;;
*)
# relPart should just have the "dirname" part:
relPart=`echo "$relPart" | sed 's%/*[^/]*$%%'`
(exit 0); return 0
;;
esac
}
###############################################################################
# configReplace(file pattern line)
# The first line in file that matches pattern gets replaced by line.
# line will be added at the end of the file if pattern does not match.
#
configReplace()
{
configReplaceFile=$1; configReplacePat=$2; configReplaceLine=$3
if grep "$configReplacePat" "$configReplaceFile" >/dev/null; then
ed "$configReplaceFile" >/dev/null 2>&1 <<-eof
/$configReplacePat/c
$configReplaceLine
.
w
q
eof
else
echo "$configReplaceLine" >> $configReplaceFile
fi
}
###############################################################################
# fmgrConfigReplace (file regex value)
# replaces line matching regex by value in file
#
fmgrConfigReplace()
{
fmgrConfigReplaceChanged=false
moreArgs=""
while
case $1 in
--*) moreArgs="$moreArgs $1 $2";;
*) break;;
esac
do shift; shift; done
fmgrConfigReplaceFile=$1
fmgrConfigReplaceRegex=$2
fmgrConfigReplaceValue=$3
setupTmpDir
co=`tcfmgr $moreArgs --tmp $tmpdir --cmd co --file $fmgrConfigReplaceFile`
if test $? != 0; then
echo "$progname: fmgrConfigReplace co failed for \`$fmgrConfigReplaceFile'" >&2
(exit 1); return 1
fi
set x $co; shift
fmgrConfigReplaceID=$1; fmgrConfigReplaceCfgFile=$3; fmgrConfigReplaceOrigFile=$4
configReplace "$fmgrConfigReplaceCfgFile" "$fmgrConfigReplaceRegex" "$fmgrConfigReplaceValue"
ci=`tcfmgr --tmp $tmpdir --cmd ci --id "$fmgrConfigReplaceID"`
if test $? != 0; then
echo "$progname: fmgrConfigReplace ci failed for \`$fmgrConfigReplaceFile'" >&2
(exit 1); return 1
fi
case $ci in
"") :;;
$lastUpdatedFile)
fmgrConfigReplaceChanged=true;;
*) echo "$progname: updated configuration saved as file \`$ci'" >&2
fmgrConfigReplaceChanged=true
lastUpdatedFile=$ci;;
esac
(exit 0); return 0
}
###############################################################################
# setupDvipsPaper(paper)
# rearranges config.ps to make paper the first paper definition
#
setupDvipsPaper()
{
setupDvipsPaperChanged=false
setupDvipsPaperFile=config.ps
setupDvipsPaperDftPaper=$1
setupTmpDir
co=`tcfmgr --tmp $tmpdir --cmd co --file $setupDvipsPaperFile`
if test $? != 0; then
echo "$progname: setupDvipsPaper co failed for \`$setupDvipsPaperFile'" >&2
(exit 1); return 1
fi
set x $co; shift
setupDvipsPaperID=$1; setupDvipsPaperCfgFile=$3; setupDvipsPaperOrigFile=$4
ed "$setupDvipsPaperCfgFile" > /dev/null 2>&1 <<-eof
/@ /ka
\$a
@
.
/@ $setupDvipsPaperDftPaper /;/@ /-1m'a-1
\$d
w
q
eof
ci=`tcfmgr --tmp $tmpdir --cmd ci --id "$setupDvipsPaperID"`
if test $? != 0; then
echo "$progname: setupDvipsPaper ci failed for \`$setupDvipsPaperFile'" >&2
(exit 1); return 1
fi
case $ci in
"") :;;
$lastUpdatedFile)
setupDvipsPaperChanged=true;;
*) echo "$progname: updated configuration saved as file \`$ci'" >&2
setupDvipsPaperChanged=true
lastUpdatedFile=$ci;;
esac
(exit 0); return 0
}
###############################################################################
# setupModesMfFile(void) - find modes.mf file (with caching)
#
setupModesMfFile()
{
case $modesMfFile in
"")
modesMfFile=`tcfmgr --cmd find --file modes.mf`
;;
*)
return
;;
esac
}
###############################################################################
# locateConfigPsFile(void) - find config.ps file (with caching)
#
locateConfigPsFile()
{
case $configPsFile in
"")
configPsFile=`tcfmgr --cmd find --file config.ps`
;;
*)
return
;;
esac
}
###############################################################################
# listMfModes(file) - list modes from modes.mf file
#
listMfModes()
{
grep mode_def "$modesMfFile" |
sed -e "s/mode_def //" \
-e "s/ .*%[^ ]* / '/" \
-e "s/\$/' /" |
egrep -v "^(help|%)" | sort
}
###############################################################################
# listDvipsPapers(void) - list paper definitions from config.ps
#
listDvipsPapers()
{
grep '@ ' $configPsFile | sed "s/..//;s/ / '/;s/\$/' /"
}
###############################################################################
# getFormatsForHyphen(void)
# list all formats which have customizable hyphenation
#
getFormatsForHyphen()
{
fmtutil --catcfg | awk '$3 != "-" {print $1}' | sort
}
###############################################################################
# getRes(mode) - print resolution (both X and Y axis) to metafont mode
#
getRes()
{
getResMode=$1
(
cd $tmpdir
cat >mftmp.mf <<-'eof'
let myexit = primitive_end_;
mode_setup;
string xdpi;
xdpi := decimal round pixels_per_inch;
message "XDPI = " & xdpi;
string ydpi;
ydpi := decimal round (pixels_per_inch * aspect_ratio);
message "YDPI = " & ydpi;
fontmaking := 0;
myexit;
eof
mf '\mode='"$getResMode"'; \input ./mftmp' &2; rc=1;;
*)
echo "$progname: unknown PAPER \`$3' given as argument for \`$progname dvipdfm paper'" >&2
echo "$progname: try \`$progname dvipdfm paper' for help" >&2
rc=1 ;;
esac ;;
# texconfig dvipdfm ""
"")
echo "$help" >&2; rc=1 ;;
# texconfig dvipdfm
*)
echo "$progname: unknown option \`$2' given as argument for \`$progname dvipdfm'" >&2
echo "$progname: try \`$progname dvipdfm' for help" >&2
rc=1
;;
esac
;;
# texconfig dvipdfmx
dvipdfmx)
help="Usage: $progname dvipdfmx paper PAPER
Valid PAPER settings:
letter legal ledger tabloid a4 a3"
case $2 in
# texconfig dvipdfmx paper
paper-list)
for p in letter legal ledger tabloid a4 a3; do echo $p; done
;;
paper)
case $3 in
letter|legal|ledger|tabloid|a4|a3)
fmgrConfigReplace dvipdfmx.cfg '^p' "p $3";;
"") echo "$help" >&2; rc=1;;
*)
echo "$progname: unknown PAPER \`$3' given as argument for \`$progname dvipdfmx paper'" >&2
echo "$progname: try \`$progname dvipdfmx paper' for help" >&2
rc=1 ;;
esac ;;
# texconfig dvipdfmx ""
"")
echo "$help" >&2; rc=1 ;;
# texconfig dvipdfmx
*)
echo "$progname: unknown option \`$2' given as argument for \`$progname dvipdfmx'" >&2
echo "$progname: try \`$progname dvipdfmx' for help" >&2
rc=1
;;
esac
;;
# texconfig dvips
dvips)
shift
help="Usage: $progname dvips add PRINTER
$progname dvips del PRINTER
$progname dvips paper PAPER
$progname dvips [-P PRINTER] mode MODE
$progname dvips [-P PRINTER] offset OFFSET
$progname dvips [-P PRINTER] printcmd CMD"
case $1 in
-P)
case $2 in
"")
echo "$progname: missing arg for parameter -P" >&2
rc=1; (exit $rc); return $rc
;;
*)
otherPrinter=true
otherPrinterName=$2
otherPrinterFile=`kpsewhich -format='dvips config' "config.$otherPrinterName"`
case $otherPrinterFile in
"")
echo "$progname: configuration file \`config.$otherPrinterName' for printer \`$otherPrinterName' not found" >&2
rc=1; (exit $rc); return $rc
;;
*) shift; shift;;
esac
;;
esac
;;
*)
otherPrinter=false
;;
esac
case $otherPrinter in
true)
tcBatchDvipsPrinter=$otherPrinterName
moreFmgrArgs="--reldir dvips/config --infile $otherPrinterFile"
;;
*)
tcBatchDvipsPrinter=ps
;;
esac
case $1 in
add)
case $2 in
"")
echo "Usage: $progname dvips add PRINTER" >&2
rc=1
;;
*)
printerName=$2
pFile=`kpsewhich -format='dvips config' "config.$printerName"`
case $pFile in
"")
setupTmpDir
tcfRet=`tcfmgr --emptyinfile --reldir dvips/config --cmd co --tmp $tmpdir --file "config.$printerName"`
if test $? != 0; then
echo "$progname: failed to add new configuration file \`config.$printerName'" >&2
rc=1
else
set x $tcfRet; shift
tcBatchDvipsAddID=$1; tcBatchDvipsAddFile=$3
echo "% file config.$printerName; added by texconfig" > "$tcBatchDvipsAddFile"
tcfRet=`tcfmgr --tmp $tmpdir --id "$tcBatchDvipsAddID" --cmd ci`
if test $? != 0; then
echo "$progname: failed to add new configuration file \`config.$printerName'" >&2
rc=1
else
echo "$progname: file $tcfRet added" >&2
fi
fi
;;
*)
echo "$progname: configuration file for printer \`$printerName' already exists (\`$pFile')" >&2
rc=1
;;
esac
;;
esac
;;
del)
case $2 in
"")
echo "Usage: $progname dvips del PRINTER" >&2
rc=1
;;
*)
printerName=$2
pFile=`kpsewhich -format='dvips config' "config.$printerName"`
case $pFile in
"")
echo "$progname: configuration file for printer \`$printerName' (config.$printerName) not found" >&2
rc=1
;;
*)
if rm "$pFile"; then
echo "$progname: file \`$pFile' removed" >&2
else
echo "$progname: failed to remove file \`$pFile'" >&2
rc=1
fi
;;
esac
;;
esac
;;
paper-list)
locateConfigPsFile
listDvipsPapers
;;
paper)
case $2 in
"")
echo "Usage: $progname dvips paper PAPER" >&2
echo >&2; echo "Valid PAPER settings:" >&2
locateConfigPsFile
listDvipsPapers | sed 's@ .*@@; s@^@ @' | myFmt
rc=1
;;
*)
tcBatchDvipsPaper=$2
locateConfigPsFile
case "$configPsFile" in
"")
echo "$progname: file config.ps not found" >&2; rc=1
;;
*)
if grep "@ $tcBatchDvipsPaper " $configPsFile >/dev/null 2>&1; then
setupDvipsPaper "$tcBatchDvipsPaper"
else
echo "$progname: paper \`$tcBatchDvipsPaper' not found in file \`$configPsFile'" >&2; rc=1
fi
;;
esac
;;
esac
;;
mode)
case $2 in
"")
echo "Usage: $progname dvips mode MODE
Valid MODE settings:"
setupModesMfFile
listMfModes | sed 's@ .*@@; s@^@ @' | myFmt
rc=1
;;
*)
tcBatchDvipsMode=$2
setupTmpDir
setupModesMfFile
if checkElemInList "$tcBatchDvipsMode" `listMfModes | sed 's@ .*@@'`; then
set x `getRes "$tcBatchDvipsMode"`; shift
resX=$1; resY=$2
fmgrConfigReplace $moreFmgrArgs config.$tcBatchDvipsPrinter '^M' "M $tcBatchDvipsMode"
fmgrConfigReplace $moreFmgrArgs config.$tcBatchDvipsPrinter '^D' "D $resX"
fmgrConfigReplace $moreFmgrArgs config.$tcBatchDvipsPrinter '^X' "X $resX"
fmgrConfigReplace $moreFmgrArgs config.$tcBatchDvipsPrinter '^Y' "Y $resY"
else
echo "$progname: unknown MODE \`$tcBatchDvipsMode' given as argument for \`$progname dvips mode'" >&2
echo "$progname: try \`$progname dvips mode' for help" >&2
rc=1
fi
;;
esac
;;
offset)
offset=$2
case $offset in
"")
echo "Usage: $progname dvips offset OFFSET"
rc=1
;;
*)
fmgrConfigReplace $moreFmgrArgs config.$tcBatchDvipsPrinter '^O' "O $offset"
esac
;;
printcmd)
printcmd=$2
case $printcmd in
"")
echo "Usage: $progname dvips printcmd CMD"
rc=1
;;
-)
fmgrConfigReplace $moreFmgrArgs config.$tcBatchDvipsPrinter '^o' o
;;
*)
fmgrConfigReplace $moreFmgrArgs config.$tcBatchDvipsPrinter '^o' "o |$printcmd"
;;
esac
;;
"")
echo "$help" >&2; rc=1
;;
*)
echo "$progname: unknown option \`$1' given as argument for \`$progname dvips'" >&2
echo "$progname: try \`$progname dvips' for help" >&2
rc=1
;;
esac
;;
faq)
setupTexmfmain
if test -f $MT_TEXMFMAIN/doc/tetex/teTeX-FAQ; then
<$MT_TEXMFMAIN/doc/tetex/teTeX-FAQ eval ${PAGER-more}
else
echo "$progname: faq not found (usually in \$TEXMFMAIN/doc/tetex/teTeX-FAQ)" >&2
rc=1
fi
;;
findprog)
shift
ELB_PATH_ONLY=1 echoLocateBinary "$@"
;;
# handle "texconfig font"
font)
help="Usage: $progname font vardir DIR
$progname font ro
$progname font rw
The vardir option changes the VARTEXFONTS variable in the texmf.cnf file.
The rw option makes the VARTEXFONTS directory (and subtrees pk, tfm,
source) world writable and sets the features appendonlydir:varfonts
in mktex.cnf.
The ro option makes the VARTEXFONTS directory (and subtrees pk, tfm,
source) writable for the owner only and sets the feature texmfvar in
mktex.cnf.
For more information about these \`features', consult the teTeX manual
(e.g. by running \`texdoc TETEXDOC')."
case $2 in
vardir)
case $3 in
"")
echo "$help" >&2
rc=1
;;
*)
tcBatchFontVardir=$3
tfc=`kpsewhich texmf.cnf`
if test -n "$tfc"; then
if test -w "$tfc"; then
configReplace "$tfc" '^VARTEXFONTS' "VARTEXFONTS = $tcBatchFontVardir"
else
echo "$progname: setting up vardir failed. Reason: no permission to write file \`$tfc'" >&2
rc=1
fi
else
echo "$progname: setting up vardir failed. Reason: failed to find file texmf.cnf" >&2
rc=1
fi
;;
esac
;;
rw)
MT_VARTEXFONTS=`kpsewhich -var-value VARTEXFONTS`
if test -z "$MT_VARTEXFONTS"; then
echo "$progname: failed to set \`font rw'; reason: could not determine VARTEXFONTS variable." >&2; rc=1
return
fi
test -d "$MT_VARTEXFONTS" || mktexdir "$MT_VARTEXFONTS"
if test ! -d "$MT_VARTEXFONTS"; then
echo "$progname: failed to set \`font rw'; reason: directory \`$MT_VARTEXFONTS' does not exist." >&2; rc=1
return
fi
chmod 1777 "$MT_VARTEXFONTS" || {
echo "$progname: failed to modify permissions in \`$MT_VARTEXFONTS'." >&2; rc=1
return;
}
(
cd "$MT_VARTEXFONTS" || exit
echo "$progname: modifying permissions in \`$MT_VARTEXFONTS' ..." >&2
for d in pk tfm source; do
test -d "$d" && find $d -type d -exec chmod 1777 '{}' \;
done
echo "$progname: all permissions set." >&2
)
setupTmpDir
fmgrConfigReplace mktex.cnf '^: ..MT_FEATURES=' ": \${MT_FEATURES=appendonlydir:varfonts}"
;;
ro)
MT_VARTEXFONTS=`kpsewhich -var-value VARTEXFONTS`
if test -z "$MT_VARTEXFONTS"; then
echo "$progname: failed to set \`font ro'; reason: could not determine VARTEXFONTS variable." >&2; rc=1
return
fi
test -d "$MT_VARTEXFONTS" || mktexdir "$MT_VARTEXFONTS"
if test ! -d "$MT_VARTEXFONTS"; then
echo "$progname: failed to set \`font ro'; reason: directory \`$MT_VARTEXFONTS' does not exist." >&2; rc=1
return
fi
chmod 755 "$MT_VARTEXFONTS" || {
echo "$progname: failed to modify permissions in \`$MT_VARTEXFONTS'." >&2; rc=1
return;
}
(
cd "$MT_VARTEXFONTS" || exit
echo "$progname: modifying permissions in \`$MT_VARTEXFONTS' ..." >&2
for d in pk tfm source; do
test -d "$d" && find "$d" -type d -exec chmod 755 '{}' \;
done
echo "$progname: all permissions set." >&2
)
setupTmpDir
fmgrConfigReplace mktex.cnf '^: ..MT_FEATURES=' ": \${MT_FEATURES=texmfvar}"
;;
"") echo "$help" >&2; rc=1;;
*) echo "$progname: unknown option \`$2' given as argument for \`$progname font'" >&2
echo "$progname: try \`$progname font' for help" >&2
rc=1
;;
esac
;;
formats)
cat >&2 <&2
fmtutil --catcfg > $tmpdir/pre
fmtutil --edit
echo "$progname: analyzing new configuration..." >&2
fmtutil --catcfg > $tmpdir/post
if cmp $tmpdir/pre $tmpdir/post >/dev/null 2>&1; then
echo "$progname: no new/updated formats available ..." >&2
else
echo "$progname: updating formats ..." >&2
comm -13 $tmpdir/pre $tmpdir/post > $tmpdir/addOrChange
for i in `awk '{print $1}' $tmpdir/addOrChange`; do
fmtutil --byfmt "$i" || rc=1
done
texlinks --multiplatform || rc=1
fi
;;
help|--help|-h)
echo "$help"
;;
# "hyphen FORMAT"
hyphen)
cat >&2 <&2; rc=1
;;
*)
if checkElemInList "$tcBatchHyphenFormat" $formatsForHyphen; then
tcBatchHyphenFile=`fmtutil --showhyphen "$tcBatchHyphenFormat"`
case $tcBatchHyphenFile in
"")
echo "$progname: could not find hyphen setup file for format \`$tcBatchHyphenFormat'" >&2
rc=1
return
;;
esac
getRelDir "$tcBatchHyphenFile"
case $relPart in
"")
# edit tcBatchHyphenFile directly
tcBatchHFID=
setupTmpDir
tcBatchHFEdit=$tcBatchHyphenFile
tcBatchHFOrig=$tmpdir/hforig
cp "$tcBatchHyphenFile" "$tcBatchHFOrig"
;;
*)
# use tcfmgr
tcBatchHyphenFileBasename=`echo "$tcBatchHyphenFile" | sed 's@.*/@@'`
setupTmpDir
co=`tcfmgr --tmp $tmpdir --cmd co --file "$tcBatchHyphenFileBasename" --reldir "$relPart" --infile "$tcBatchHyphenFile"`
if test $? != 0; then
echo "$progname: failed to check out file \`$tcBatchHyphenFile'" >&2
rc=1
return 1
else
set x $co; shift
tcBatchHFID=$1; tcBatchHFEdit=$3; tcBatchHFOrig=$4
fi
;;
esac
${VISUAL-${EDITOR-vi}} "$tcBatchHFEdit"
if cmp "$tcBatchHFEdit" "$tcBatchHFOrig" >/dev/null 2>&1; then
echo "$progname: configuration unchanged." >&2
else
case $tcBatchHFID in
"")
tcBatchHFOut=$tcBatchHFEdit
echo "$progname: updated configuration saved as file \`$tcBatchHFOut'" >&2
lastUpdatedFile=$ci
;;
*)
ci=`tcfmgr --tmp $tmpdir --cmd ci --id "$tcBatchHFID"`
if test $? != 0; then
echo "$progname: failed to check in file \`$tcBatchHyphenFileBasename'" >&2
rc=1
return
else
tcBatchHFOut=$ci
echo "$progname: updated configuration saved as file \`$tcBatchHFOut'" >&2
lastUpdatedFile=$ci
fi
;;
esac
fmtutil --byhyphen "$tcBatchHFOut"
fi
else
echo "$progname: invalid format \`$tcBatchHyphenFormat' specified as argument for \`$progname hyphen'" >&2
echo "$progname: for getting help, try \`$progname hyphen'" >&2
rc=1
fi
;;
esac
;;
hyphen-list)
getFormatsForHyphen
;;
init)
case $2 in
"")
if fmtutil --all \
&& texlinks --multiplatform \
&& updmap; then
:
else
rc=1
fi
;;
*)
shift 1
for i in "$@"; do
fmtutil --byfmt "$i" || rc=1
done
;;
esac
;;
mode-list)
setupModesMfFile
listMfModes
;;
mode)
case $2 in
"")
echo "Usage: $progname mode MODE
Valid MODE settings:"
setupModesMfFile
listMfModes | sed 's@ .*@@; s@^@ @' | myFmt
rc=1
;;
*)
tcBatchMode=$2
setupModesMfFile
if checkElemInList $tcBatchMode `listMfModes | sed 's@ .*@@'`; then
# modify mktex.cnf
setupTmpDir
fmgrConfigReplace mktex.cnf '^: ..MODE=' ": \${MODE=$tcBatchMode}"
set x `getRes "$tcBatchMode"`; shift
tcBatchRes=$1
fmgrConfigReplace mktex.cnf '^: ..BDPI=' ": \${BDPI=$tcBatchRes}"
if checkForBinary dvips >/dev/null && tcfmgr --cmd find --file config.ps >/dev/null 2>&1; then
tcBatch dvips mode "$tcBatchMode"
fi
if checkForBinary pdftex >/dev/null && tcfmgr --cmd find --file pdftexconfig.tex >/dev/null 2>&1; then
tcBatch pdftex mode "$tcBatchMode"
fi
else
echo "$progname: unknown mode \`$tcBatchMode' specified as argument for \`$progname mode'" >&2; rc=1
fi
;;
esac
;;
paper)
help="Usage: $progname paper PAPER
Valid PAPER settings:
letter a4"
p=$2; pXdvi=$2; pDvips=$2
case $2 in
letter)
pXdvi=us;;
a4)
pXdvi=a4;;
"") echo "$help" >&2; rc=1; return;;
*)
echo "$progname: unknown PAPER \`$2' given as argument for \`$progname paper'" >&2
echo "$progname: try \`$progname paper' for help" >&2
rc=1
return;;
esac
if checkForBinary dvips >/dev/null && tcfmgr --cmd find --file config.ps >/dev/null 2>&1; then
tcBatch dvips paper $pDvips
fi
if checkForBinary dvipdfm >/dev/null && tcfmgr --cmd find --file config >/dev/null 2>&1; then
tcBatch dvipdfm paper $p
fi
if checkForBinary dvipdfmx >/dev/null && tcfmgr --cmd find --file dvipdfmx.cfg >/dev/null 2>&1; then
tcBatch dvipdfmx paper $p
fi
if checkForBinary xdvi >/dev/null && tcfmgr --cmd find --file XDvi >/dev/null 2>&1; then
tcBatch xdvi paper $pXdvi
fi
if checkForBinary pdftex >/dev/null && tcfmgr --cmd find --file pdftexconfig.tex >/dev/null 2>&1; then
tcBatch pdftex paper $p
fi
;;
pdftex)
help="Usage: $progname pdftex paper PAPER
Valid PAPER settings:
a4 letter"
case $2 in
mode)
case $3 in
"")
echo "Usage: $progname pdftex mode MODE"
rc=1
;;
*)
tcBatchPdftexMode=$3
setupTmpDir
setupModesMfFile
if checkElemInList "$tcBatchPdftexMode" `listMfModes | sed 's@ .*@@'`; then
set x `getRes "$tcBatchPdftexMode"`; shift
fmgrConfigReplace pdftexconfig.tex 'pdfpkresolution' "\\pdfpkresolution=$1"
if $fmgrConfigReplaceChanged; then
fmtutil --refresh
fi
else
echo "$progname: unknown MODE \`$tcBatchPdftexMode' given as argument for \`$progname pdftex mode'" >&2
rc=1
fi
;;
esac
;;
paper)
case $3 in
letter)
w="8.5 true in"; h="11 true in"
setupTmpDir
fmgrConfigReplace pdftexconfig.tex pdfpagewidth '\pdfpagewidth='"$w"
wChanged=$fmgrConfigReplaceChanged
fmgrConfigReplace pdftexconfig.tex pdfpageheight '\pdfpageheight='"$h"
if $wChanged || $fmgrConfigReplaceChanged; then
fmtutil --refresh
fi
;;
a4)
w="210 true mm"; h="297 true mm"
fmgrConfigReplace pdftexconfig.tex pdfpagewidth '\pdfpagewidth='"$w"
wChanged=$fmgrConfigReplaceChanged
fmgrConfigReplace pdftexconfig.tex pdfpageheight '\pdfpageheight='"$h"
if $wChanged || $fmgrConfigReplaceChanged; then
fmtutil --refresh
fi
;;
"") echo "$help" >&2; rc=1;;
*)
echo "$progname: unknown PAPER \`$3' given as argument for \`$progname pdftex paper'" >&2
echo "$progname: try \`$progname pdftex paper' for help" >&2
rc=1 ;;
esac ;;
"")
echo "$help" >&2; rc=1;;
*)
echo "$progname: unknown option \`$2' given as argument for \`$progname pdftex'" >&2
echo "$progname: try \`$progname pdftex' for help" >&2
rc=1
;;
esac
;;
rehash)
mktexlsr
;;
#
version|--version)
echo "$progname version $version"
setupTexmfmain
setupTexmfdist
showDistVersionInfo
(exit 0); exit 0;;
# handle "xdvi paper PAPER"
xdvi)
tcBatchXdviPapers='us "8.5x11"
usr "11x8.5"
legal "8.5x14"
foolscap "13.5x17.0"
a1 "59.4x84.0cm"
a2 "42.0x59.4cm"
a3 "29.7x42.0cm"
a4 "21.0x29.7cm"
a5 "14.85x21.0cm"
a6 "10.5x14.85cm"
a7 "7.42x10.5cm"
a1r "84.0x59.4cm"
a2r "59.4x42.0cm"
a3r "42.0x29.7cm"
a4r "29.7x21.0cm"
a5r "21.0x14.85cm"
a6r "14.85x10.5cm"
a7r "10.5x7.42cm"
b1 "70.6x100.0cm"
b2 "50.0x70.6cm"
b3 "35.3x50.0cm"
b4 "25.0x35.3cm"
b5 "17.6x25.0cm"
b6 "13.5x17.6cm"
b7 "8.8x13.5cm"
b1r "100.0x70.6cm"
b2r "70.6x50.0cm"
b3r "50.0x35.3cm"
b4r "35.3x25.0cm"
b5r "25.0x17.6cm"
b6r "17.6x13.5cm"
b7r "13.5x8.8cm"
c1 "64.8x91.6cm"
c2 "45.8x64.8cm"
c3 "32.4x45.8cm"
c4 "22.9x32.4cm"
c5 "16.2x22.9cm"
c6 "11.46x16.2cm"
c7 "8.1x11.46cm"
c1r "91.6x64.8cm"
c2r "64.8x45.8cm"
c3r "45.8x32.4cm"
c4r "32.4x22.9cm"
c5r "22.9x16.2cm"
c6r "16.2x11.46cm"
c7r "11.46x8.1cm"'
help="Usage: $progname xdvi paper PAPER
Valid PAPER settings:
a1 a1r a2 a2r a3 a3r a4 a4r a5 a5r a6 a6r a7 a7r
b1 b1r b2 b2r b3 b3r b4 b4r b5 b5r b6 b6r b7 b7r
c1 c1r c2 c2r c3 c3r c4 c4r c5 c5r c6 c6r c7 c7r
foolscap legal us usr"
case $2 in
paper-list)
echo "$tcBatchXdviPapers"
;;
paper)
case $3 in
a1|a1r|a2|a2r|a3|a3r|a4|a4r|a5|a5r|a6|a6r|a7|a7r|b1|b1r|b2|b2r|b3|b3r|b4|b4r|b5|b5r|b6|b6r|b7|b7r|c1|c1r|c2|c2r|c3|c3r|c4|c4r|c5|c5r|c6|c6r|c7|c7r|foolscap|legal|us|usr)
fmgrConfigReplace XDvi paper: "*paper: $3"
;;
"") echo "$help" >&2; rc=1;;
*)
echo "$progname: unknown PAPER \`$3' given as argument for \`$progname xdvi paper'" >&2
echo "$progname: try \`$progname xdvi paper' for help" >&2
rc=1 ;;
esac ;;
"")
echo "$help" >&2; rc=1;;
*)
echo "$progname: unknown option \`$2' given as argument for \`$progname xdvi'" >&2
echo "$progname: try \`$progname xdvi' for help" >&2
rc=1
;;
esac
;;
*)
echo "$progname: unknown option \`$1' given as argument for \`$progname'" >&2
echo "$progname: try \`$progname help' for help" >&2
rc=1
esac
}
###############################################################################
# tcInteractive(void)
# handle interactive mode
###############################################################################
tcInteractive()
{
texconfig-dialog
}
###############################################################################
# main()
###############################################################################
rc=0
case $# in
0) tcInteractive;;
*) tcBatch "$@";;
esac
cleanup $rc