@c This is part of the AUCTeX Manual.
@c Copyright (C) 2003-2007, 2009, 2018, 2021
@c   Free Software Foundation, Inc.
@c See the file auctex.texi for copying conditions.
@ifset rawfile
@include macros.texi
@end ifset

@subheading In a Nutshell

The following are brief installation instructions for the impatient.  In
case you don't understand some of this, run into trouble of some sort,
or need more elaborate information, refer to the detailed instructions
further below.

@enumerate
@item
Install the prerequisites, i.e.@: GNU Emacs, MSYS or Cygwin, a @TeX{}
system, and Ghostscript.

@item
Open the MSYS shell or a Cygwin shell and change to the directory
containing the unzipped file contents.

@item
Configure @AUCTeX{}:

For Emacs: Many people like to install @AUCTeX{} into the pseudo file
system hierarchy set up by the Emacs installation.  Assuming Emacs is
installed in @file{C:/Program Files/Emacs} and the directory for local
additions of your @TeX{} system, e.g.@: MiK@TeX{}, is
@file{C:/localtexmf}, you can do this by typing the following statement
at the shell prompt:

@example
./configure --prefix='C:/Program Files/Emacs' \
  --infodir='C:/Program Files/Emacs/info' \
  --with-texmf-dir='C:/localtexmf'
@end example

The commands above is example for common usage.  More on configuration
options can be found in the detailed installation instructions below.

If the configuration script failed to find all required programs, make
sure that these programs are in your system path and add directories
containing the programs to the @env{PATH} environment variable if
necessary.  Here is how to do that in W2000/XP:

@enumerate
@cindex Adding to @env{PATH} in Windows
@cindex @env{PATH} in Windows
@item
On the desktop, right click ``My Computer'' and select properties.
@item
Click on ``Advanced'' in the ``System Properties'' window.
@item
Select ``Environment Variables''.
@item
Select ``path'' in ``System Variables'' and click ``edit''.  Move to the
front in the line (this might require scrolling) and add the missing
path including drive letter, ended with a semicolon.
@end enumerate

@item
If there were no further error messages, type

@example
make
@end example

In case there were, please refer to the detailed description below.

@item
Finish the installation by typing

@example
make install
@end example
@end enumerate

@subheading Detailed Installation Instructions

Installation of @AUCTeX{} under Windows is in itself not more
complicated than on other platforms.  However, meeting the prerequisites
might require more work than on some other platforms, and feel less
natural.

If you are experiencing any problems, even if you think they are of your
own making, be sure to report them to @email{auctex-devel@@gnu.org} so
that we can explain things better in future.

Windows is a problematic platform for installation scripts.  The main
problem is that the installation procedure requires consistent file
names in order to find its way in the directory hierarchy, and Windows
path names are a mess.

The installation procedure tries finding stuff in system search paths
and in Emacs paths.  For that to succeed, you have to use the same
syntax and spelling and case of paths everywhere: in your system search
paths, in Emacs' @code{load-path} variable, as argument to the scripts.
If your path names contain spaces or other `shell-unfriendly'
characters, most notably backslashes for directory separators, place the
whole path in @samp{"double quote marks"} whenever you specify it on a
command line.

Avoid `helpful' magic file names like @samp{/cygdrive/c} and
@samp{C:\PROGRA~1\} like the plague.  It is quite unlikely that the
scripts will be able to identify the actual file names involved.  Use
the full paths, making use of normal Windows drive letters like
@samp{ 'C:/Program Files/Emacs' } where required, and using the same
combination of upper- and lowercase letters as in the actual files.
File names containing shell-special characters like spaces or
backslashes (if you prefer that syntax) need to get properly quoted to
the shell: the above example used single quotes for that.

Ok, now here are the steps to perform:

@enumerate
@item
You need to unpack the @AUCTeX{} distribution (which you seemingly have
done since you are reading this).  It must be unpacked in a separate
installation directory outside of your Emacs file hierarchy: the
installation will later copy all necessary files to their final
destination, and you can ultimately remove the directory where you
unpacked the files.

Line endings are a problem under Windows.  The distribution contains
only text files, and theoretically most of the involved tools should get
along with that.  However, the files are processed by various utilities,
and it is conceivable that not all of them will use the same line ending
conventions.  If you encounter problems, it might help if you try
unpacking (or checking out) the files in binary mode, if your tools
allow that.

If you don't have a suitable unpacking tool, skip to the next step: this
should provide you with a working @samp{unzip} command.

@item
The installation of @AUCTeX{} will require the MSYS tool set from
@uref{http://www.mingw.org/} or the Cygwin tool set from
@uref{https://cygwin.com/}.  The latter is slower and larger (the download
size of the base system is about 15 MB) but comes with a package manager
that allows for updating the tool set and installing additional packages
like, for example, the spell checker @w{aspell}.

If Cygwin specific paths like @samp{/cygdrive/c} crop up in the course
of the installation, using a non-Cygwin Emacs could conceivably cause
trouble.  Using Cygwin either for everything or nothing might save
headaches, @emph{if} things don't work out.

@item
Install a current version of @w{Emacs} from
@uref{https://ftp.gnu.org/gnu/emacs/windows/}.

@item
You need a working @TeX{} installation.  One popular installation under
Windows is @uref{https://miktex.org/,MiK@TeX{}}.  Another much more
extensive system is @uref{https://www.tug.org/texlive/,@w{@TeX{} Live}}
which is rather close to its Unix cousins.

@item
A working copy of @uref{https://www.ghostscript.com/,Ghostscript} is
required for @previewlatex{} operation.  Examining the output from
@example
gswin32c -h
@end example
on a Windows command line should tell you whether your Ghostscript
supports the @code{png16m} device needed for @acronym{PNG} support.
MiK@TeX{} apparently comes with its own Ghostscript called @file{mgs.exe}.

@item
@uref{https://www.perl.org/,Perl} is needed for rebuilding the
documentation if you are working with a copy from Git or have
touched documentation source files in the @previewlatex{} part.  If the
line endings of the file @file{preview/latex/preview.dtx} don't
correspond with what Perl calls @code{\n} when reading text files,
you'll run into trouble.

@item
Now the fun stuff starts.  If you have not yet done so, unpack the
@AUCTeX{} distribution into a separate directory after rereading the
instructions for unpacking above.

@item
Ready for takeoff.  Start some shell (typically @command{bash}) capable of
running @command{configure}, change into the installation directory and
call @command{./configure} with appropriate options.

Typical options you'll want to specify will be
@table @code
@item --prefix=@var{drive:/path/to/emacs-hierarchy}
which tells @command{configure} where to perform the installation.  It may
also make @command{configure} find Emacs automatically; if this doesn't
happen, try @option{--with-emacs} as described below.  All automatic
detection of files and directories restricts itself to directories below
the @var{prefix} or in the same hierarchy as the program accessing the
files.  Usually, directories like @file{man}, @file{share} and
@file{bin} will be situated right under @var{prefix}.

This option also affects the defaults for placing the Texinfo
documentation files (see also @option{--infodir} below) and automatically
generated style hooks.

If you have a central directory hierarchy (not untypical with Cygwin)
for such stuff, you might want to specify its root here.  You stand a
good chance that this will be the only option you need to supply, as
long as your @TeX{}-related executables are in your system path, which
they better be for @AUCTeX{}'s operation, anyway.

@item --with-emacs
if you are installing for a version of Emacs.  You can use
@samp{--with-emacs=@var{drive:/path/to/emacs}} to specify the name of the
installed Emacs executable, complete with its path if necessary (if
Emacs is not within a directory specified in your @env{PATH} environment
setting).

@item --with-lispdir=@var{drive:/path/to/site-lisp}
This option tells a place in @code{load-path} below which the
files are situated.  The startup files @file{auctex.el} and
@file{preview-latex.el} will get installed here unless a subdirectory
@file{site-start.d} exists which will then be used instead.  The other
files from @AUCTeX{} will be installed in a subdirectory called
@file{auctex}.

If you think that you need a different setup, please refer to the full
installation instructions in
@ifset rawfile
the @file{INSTALL} file.
@end ifset
@ifclear rawfile
@ref{Configure}.
@end ifclear

@item --infodir=@var{drive:/path/to/info/directory}
If you are installing into an Emacs directory, info files have to be put
into the @file{info} folder below that directory.  The configuration
script will usually try to install into the folder @file{share/info}, so
you have to override this by specifying something like
@samp{--infodir='C:/Program Files/info'} for the configure call.

@item --with-auto-dir=@var{drive:/dir}
Directory containing automatically generated information.  You should
not normally need to set this, as @samp{--prefix} should take care of
this.

@item --disable-preview
Use this option if your Emacs version is unable to support image
display.

@item --with-texmf-dir=@var{drive:/dir}
This will specify the directory where your @TeX{} installation sits.  If
your @TeX{} installation does not conform to the @acronym{TDS} (@TeX{} directory
standard), you may need to specify more options to get everything in
place.
@end table

For more information about any of the above and additional options, see
@ifset rawfile
the `Configure' section in the @file{INSTALL} file.
@end ifset
@ifclear rawfile
@ref{Configure}.
@end ifclear

@c FIXME: It seems this no longer holds.
@c Calling
@c @file{./configure --help=recursive}
@c will tell about other options, but those are almost never required.

Some executables might not be found in your path.  That is not a good
idea, but you can get around by specifying environment variables to
@command{configure}:
@example
GS="@var{drive:/path/to/gswin32c.exe}" ./configure @dots{}
@end example
should work for this purpose.  @file{gswin32c.exe} is the usual name for
the required @emph{command line} executable under Windows; in contrast,
@file{gswin32.exe} is likely to fail.

As an alternative to specifying variables for the @command{configure} call
you can add directories containing the required executables to the
@env{PATH} variable of your Windows system.  This is especially a good
idea if Emacs has trouble finding the respective programs later during
normal operation.

@item
Run @command{make} in the installation directory.
	
@item
Run @code{make install} in the installation directory.

@item
With Emacs, activation of @AUCTeX{} and @previewlatex{} depends on a
working @file{site-start.d} directory or similar setup, since then the
startup files @file{auctex.el} and @file{preview-latex.el} will have
been placed there.  If this has not been done, you should be able to
load the startup files manually with
@lisp
(load "auctex.el" nil t t)
(load "preview-latex.el" nil t t)
@end lisp
in either a site-wide @file{site-start.el} or your personal startup file
(usually accessible as @file{~/.emacs} or @file{~/.emacs.d/init.el} from
within Emacs).

@cindex @file{tex-mik.el}
The default configuration of @AUCTeX{} is probably not the best fit for
Windows systems with MiK@TeX{}.  You might want to add
@lisp
(require 'tex-mik)
@end lisp
after loading @file{auctex.el} and @file{preview-latex.el} in order to
get more appropriate values for some customization options.

You can always use

@example
@kbd{M-x customize-group @key{RET} AUCTeX @key{RET}}
@end example

in order to customize more stuff, or use the @samp{Customize} menu.

@item
Load @file{circ.tex} into Emacs and see if you get the @samp{Command}
menu.  Try using it to @LaTeX{} the file.

@item
Check whether the @samp{Preview} menu is available in this file.  Use it
to generate previews for the document.

If this barfs and tells you that image type @samp{png} is not supported,
you can either add @acronym{PNG} support to your Emacs installation or
choose another image format to be used by @previewlatex{}.

Adding support for an image format usually involves the installation of
a library, e.g.@: from @uref{http://gnuwin32.sf.net/}.  If you got your
Emacs from @uref{https://www.gnu.org/} you might want to check its
@uref{https://ftp.gnu.org/gnu/emacs/windows/README,README file} for
details.

A different image format can be chosen by setting the variable
@code{preview-image-type}.  While it is recommended to keep the
@samp{dvipng} or @samp{png} setting, you can temporarily select a
different format like @samp{pnm} to check if the lack of @acronym{PNG}
support is the only problem with your Emacs installation.

Try adding the line

@lisp
(setq preview-image-type 'pnm)
@end lisp

to your init file for a quick test.  You should remove the line after
the test again, because @acronym{PNM} files take away @strong{vast}
amounts of disk space, and thus also of load/save time.
@end enumerate

Well, that about is all.  Have fun!
