%&latex
\NeedsTeXFormat{LaTeX2e} % sorry, compatibility with 2.09 is too painful
\documentclass[draft]{tdsguide}

\chead{%
    \ifTdsDraft draft \fi               % <-- space!
    \application{Web2c} for \abbr{Win32}
    }

\begin{document}

\section{\application{Web2c} under \abbr{Win32}}
\label{Web2c under Win32}

(Email \email|Fabrice.Popineau@supelec.fr| to contact the maintainer of
this implementation.)

First of all, many thanks to the following people for their patience
and good will:

\begin{itemize}
\item Karl Berry, for his work on \application{Web2c}, and for accepting my \abbr{win32} patches
\item Michael Basler and Michael C. Grant for testing the numerous
  binary beta releases,
\item Sebastian Rahtz, also for intensive tests and for integrating
  this port into the \TeX-live CD,
\item Bernd Raichle for e-\TeX{} which is in this release,
\item Joachim Schrod and Pehong Chen for \path|makeindex|, which I
  adapted to kpathsea.
\end{itemize}
  
The   description of the   \abbr{Win32}  port  of  \application{Web2c}
follows:   advocating for  \application{Web2c},   binary distribution,
installation, configuration, and compilation.

\subsection{Why using \application{Web2c} under \abbr{Win32}}
\label{Why using Web2c under Win32}

The author of this port takes on it after leaving Linux for \abbr{NT}.
\application{Web2c} is  the most used  \TeX{} distribution in the Unix
world. \application{Web2c} takes you to a high level of {\TeX}nicity :
latest versions of   \TeX, \MF,  \MP,  use  of the   high speed search
kpathsea  library to  name only some  features. \application{Web2c} is
highly configurable  and  should satisfy  the  most  demanding users.  
Moreover, its wide use makes it is well tested.

\application{Web2c} has been  already ported to  a wide  variety of OS
apart  from  Unixes:  \abbr{VMS},   \abbr{MVS},   Amiga,  \abbr{OS/2},
\abbr{DOS}.  \abbr{Win32} has everything  of a high-tech OS, so  there
was no reason for \application{Web2c} not to be ported to it. It would
make life easier for administrators who have \abbr{Unix}, Windows (and
maybe others) \TeX{} distributions  to maintain. So,  the main goal of
the port  was compatibility   with the reference  platforms  (Unixes):
administration of TeX sites should be similar.  For further details on
the \abbr{Win32} adaptation, take  look at Section~\ref{How to compile
  Web2c under Win32}.

\subsection{What's in this port}
\label{What's in this port}

The following programs are given in the binary distribution:

\begin{verbatim}
 Directory of j:\TeX\bin\win32

[.]                 [..]                afm2tfm.exe         bibtex.exe
dmp.exe             dvicopy.exe         dvihp               dvilj.exe
dvilj2p.exe         dvilj4.exe          dvilj4l.exe         dvips.exe
dvitomp.exe         dvitype.exe         etex.exe            gftodvi.exe
gftopk.exe          gftype.exe          gsftopk.exe         inimf.exe
inimpost.exe        initex.exe          kpathsea.dll        kpsewhich.exe
latex.exe           makeindex.exe       makempx.exe         MakeTeXls-R.exe
MakeTeXmkdir.exe    MakeTeXnames.exe    MakeTeXpk.exe       MakeTeXupdate.exe
mf.exe              mft.exe             mltex.exe           mpost.exe
mpto.exe            msvcirt.dll         msvcrt.dll          MSVCRT10.DLL
msvcrt20.dll        msvcrt40.dll        newer.exe           patgen.exe
pktogf.exe          pktype.exe          pltotf.exe          pooltype.exe
tangle.exe          tex.exe             tftopl.exe          vftovp.exe
virmf.exe           virmpost.exe        virtex.exe          vptovf.exe
weave.exe
              57 File(s)      4 929 084 bytes
\end{verbatim}

There are some DLLs : the ones that begin with msvc are the Microsoft C
library targeted   for multi-threaded  applications  and  the kpathsea
dynamic-linked  library. The Microsoft  files  may  be removed  if you
already have them in your system directory.

There lacks exactly:
\begin{verbatim}
MakeTeXTFM.exe, MakeTeXMF.exe, dvihp.exe, xdvi.exe
\end{verbatim}
from the complete distribution.

The first two will be available very soon.  They are easy to write now
and they are needed to use the Sauter fonts.

I   will not  write  \path|dvihp.exe|.    If someone volunteers    a
\path|dvihp.c| to replace the shell script, I will be glad to add it
to the \abbr{Win32} specific tree.

I am working on \path|xdvi.exe|, which is my highest priority now.

You   will    find    \application{e\TeX}  and    an    adaptation  of
\application{Makeindex} in addition to the standard \application{Web2c}
distribution.

\subsection{Binary distribution}
\label{Binary distribution}

A precompiled distribution should be found on CTAN archives in the
following directory:
\CTAN:\path|systems/win32/web2c|

My ftp site is at the following address
\url|ftp://ftp.ese-metz.fr/pub/TeX/win32|, but is quite slow.

Get   the binary   package  \path|web2c-7.0-win32.tar.gz|,   without
forgetting to set binary mode.   If you do not have
Winzip, get also \path|tar.exe| and \path|gzip.exe|.

Choose a directory \replaceable{prefix} (e.g.: \path|c:\TeX|) and
do as follows, assuming that you have downloaded everything in
\replaceable{tmpdir}: 
\begin{verbatim}
cd <prefix>
gzip -dc <tmpdir>/web2c-win32-7.0.tar.gz | tar xf -
\end{verbatim}
If you do not have a TDS conformant texmf tree (there is one in teTeX for
Unix),  get  the  minimal one in:
\CTAN:\path|systems/web2c/texmflib-7.0.tar.gz|
 and unpack it with a similar command.

All implementation-dependent \TeX{} system files (\path|.pool|,
\path|.fmt|, \path|.base|, \path|.mem|) are stored by default directly
in \path|texmf/web2c|.  The configuration file \path|texmf.cnf| is
also stored there. All the binaries are in \path|.../bin/win32| for
compatibility with other distributions.

Given a root directory \replaceable{prefix}
(\path|j:\TeX| was my compile-time default), we have default locations
as follows:

\begin{tdsSummary}
  <prefix>/         installation root (\path|j:/TeX| compile-time default)
  . bin/win32       executables
  . man/            man pages
  . info/           info files
  . lib/            libraries (\path|libkpathsea.*|)
  . share/          architecture-independent files
  . . texmf/        \abbr{TDS} root
  . . . web2c/      implementation-dependent files (\path|.pool|, \path|.fmt|, \path|texmf.cnf|, etc.)
\end{tdsSummary}

This disposition is almost identical to the standard one for
\application{Web2c} under Unix.

\section{Specific \abbr{Win32} Configuration}
\label{Configuration}

I didn't make any configuration program. The only things to configure
are:
\begin{itemize}
\item add the \path|...\TeX\win32\bin| directory to your PATH
\item if the command \path|kpsewhich cmr10.tfm| gives you the
  location of \path|cmr10.tfm|, there are chances  that it is finished. 
\item if \path|kpsewhich| failed, or if you have multiple trees, set
  \path|TEXMF| to anything relevant (I assume you do not use the
  standard and single \path|...\TeX\share\texmf| tree), by example you
  can do: 
\begin{verbatim}
set TEXMF={j:\TeX\share\texmf_fr,j:\TeX\share\texmf}
\end{verbatim}
if you want to use two texmf trees.
\item if \path|kpsewhich| is not able to locate your favorite files,
  play with the \path|debug| option and feel free to report any
  misbehaviour. 
\end{itemize}

You can play with all variables in \path|$TEXMF/web2c/texmf.cnf|, but only
after a careful reading of the kpathsea manual.

The configuration through MakeTeX.site is supported. The following
variables may be changed in this file :

\begin{tabular}{ll}
\path|MODE| & \path|ljfour|\\
\texttt{ps\_to\_pk} & \path|gsftopk|\\
\path|ecfontdir| & \path|$TEXMF/fonts/source/jknappen/ec|\\
\path|tcfontdir| & \path|$TEXMF/fonts/source/jknappen/tc|\\
\path|sauterfontdir| & \path|$TEXMF/fonts/source/public/sauter|\\
\end{tabular}

Only MakeTeX.site is supported, and not MakeTeXnames.cnf.
Permissions on \abbr{Win32} do not have the same meaning as on Unix and I
didn't think on a way to mimic them.

There is a  difference between \abbr{Win32} \path|MakeTeXpk.exe| and
the  standard one. \abbr{Win32} \path|MakeTeXpk| will  try to put pk
files in their  right texmf trees  if you have more  than one. This is
guessed by finding where the tfm file needed lies.

Another  difference   is about   MakeTeXls-R.  Under \abbr{Win32},  it
accepts 0 or 1 argument. No argument stands for  generating ls-R db in all
the texmf trees, and 1 argument stands for  doing it only in the specified
texmf tree.

MakeTeX* programs may have  too long  filenames  for the partition  on
which  they are  run.   In this  case, you   can rename  any  of these
\path|.exe| files, with the following equivalences:
\begin{center}
\begin{tabular}{ll}
\path|MakeTeXls-R.exe| & \path|makelsr.exe|\\
\path|MakeTeXmkdir.exe| & \path|makemd.exe|\\
\path|MakeTeXnames.exe| & \path|makename.exe|\\
\path|MakeTeXpk.exe| & \path|makepk.exe|\\
\path|MakeTeXupdate| & \path|makeupd.exe|
\end{tabular}
\end{center}

If doing this, you need to set:
\begin{verbatim}
set DVIPSMAKEPK=makepk.exe
\end{verbatim}
in your environment variables otherwise \path|dvips| won't be
  able to call the right program to generate pk files.

\section{Filesystems considerations}
\label{Filesystems considerations}

\abbr{Win32} supports multiple filesystems:
\begin{itemize}
\item DOS FAT, 8.3 and uppercase filenames
\item Protected mode Fat, long filenames, but case-insensitive
\item NTFS, long filenames and case-sensitive
\item ISO9660 CDROM, 8.3 and uppercase filenames
\end{itemize}

Moreover,  \abbr{Win32}  calls      which refer  to     filenames  are
case-insensitive.  There are   several  other features  in   NTFS that
\abbr{Win32} can't use for the moment.   Another dimension is the
use of  different directory separators: \path|/|  or \path|\|, but
\abbr{Win32} calls accept both.

So what difficulties may arise ? 

Most likely, you will have some style files with long filenames. If you
are running on a filesystem which supports them, there is no problem and you have nothing to do. Otherwise, you will need to use the alias feature of
kpathsea (See it in the kpathsea manual). Say for example you are trying
to install texmf on a FAT partition and you have the style file named
longtable.sty in you tree. The filename will be truncated to its 8.3
form : longtabl.sty. In this case, you will need to create a file named
aliases along to the ls-R file in you texmf tree. This file should
contain the following line:
\begin{verbatim}
longtabl.sty longtable.sty
\end{verbatim}
There is an example of aliases file in \texttt{\$TEXMF/aliases}.
All references to longtable.sty will be redirected to longtabl.sty as
long as the long filename is not found.

Otherwise, if you think you have trouble with filenames, consider doing the
following: 
\begin{itemize}
\item pathes in config files and environment variables are preferred
  written with \path|/| rather than \path|\|;
\item ls-R databases should be in lower case, even if you are running on
FAT or CD-ROM;
\item use the debug feature of \path|kpathsea| and
  \path|kpsewhich| to demonstrate you problem and email me the
  results of your investigations. 
\end{itemize}

\section{How to compile \application{Web2c} under \abbr{Win32}}
\label{How to compile Web2c under Win32}

If  you  feel    adventurous,   you can try    to    get  the  package
\path|web2c-7.0-win32-src.tar.gz|   and unzip    it.  Edit the   files
\path|texk-7.0/win32/nt.make| and \path|texk-7.0/win32/paths.make|  to
set the    hardwired pathes. Then  the  following  incantation should
compile and install all the stuff:

\begin{verbatim}
cd texk-7.0
nmake -f win32/Makefile.root config.status
nmake all
nmake install
\end{verbatim}

You  need VC++4.x  and a  working  copy  of cat.exe, tr.exe,  sed.exe,
flex.exe,  bison.exe. And I  may have  forgotten  some (like diff.exe,
grep.exe, makeinfo.exe) that are not used in the build itself. See the
\path|Makefiles| and \path|texk-7.0/win32/*.make| files for more
information.

Generally speaking, I will not support this stuff at the source level.
Unix  uses \path|autoconf| and has  only \path|Makefile.in|. I have to
tweak these \path|Makefile.in| by hand to  get them working. And I had
to compile lot of  \abbr{GNU} stuff to make  this running.  I will put
up a Web page about \abbr{GNU}  tools useful under \abbr{NT}.  But not
yet.  I have \path|xdvi.exe| to finish before.

\end{document}

