%&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 gzip -dc /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} / 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}