Outline of this page:
TeX -- in its various flavors, including LaTeX (explained below) -- is a typesetting language. It is used to prepare documents -- e.g., to prepare a Ph.D. thesis or other book, or an article that is submitted for publication in a research journal. If used properly, it produces beautiful documents. Originally it was used only for documents that were printed on paper, but nowadays it is also widely used to produce PDF files that can be viewed on computer screens.
Tex is the standard language used by nearly all mathematicians nowadays. It is also used extensively by scholars and writers in many other fields -- chemistry, linguistics, chess, music -- anything that requires precise spacing and/or unusual fonts and/or the convenience of automatic cross-referencing. If you are at the beginning or middle of a career involving writing of any of those kinds, you should begin to learn TeX as soon as possible. Learning all of TeX would be a lifelong task -- it has grown over the decades, as many of its users have contributed to it -- but you can learn enough to write short and simple documents within a few hours or days.
Some of the basic terminology is confusing, because some of the basic terms are often used interchangeably. Out of laziness, people tend to just use the term "tex" for whichever of the following flavors is their favorite.
\usepackage{amscls,amsmath}
then you get most of the capabilities and commands introduced
in AMS-tex and AMS-Latex.
Thus, in recent years, Latex has become the standard. The other flavors are still used by some old-timers who haven't bothered to learn a new system, but I believe their numbers are diminishing faster than they are being replaced by new users. I would not recommend that you learn any of the other flavors, except possibly if you need to study some old documents or work with one of those old-timers. Throughout the rest of this document the term "tex" will mean Latex.
TeX is for typesetting, but how does it work? It is a markup language, like HTML -- as opposed to a plain text document or a formatted word-processor document. Those terms are explained below.
very plain, ordinary text,
like this
They can be edited with text editors such as
Emacs, VI, Windows Notepad, MS-DOS Edit, Pico, etc.
Plain text files are sometimes known as ASCII files. (That
stands for
"American Standard Code for Information Interchange.")
For example, on Windows computers, look for the
file
"C:\WINDOWS\SYSTEM32\EULA.TXT". If you
double-click on it, it will start up Notepad.
(Your Windows computer also contains many text files
with the file ending "INI", but you should not edit those
unless you really know what you are doing -- those are
program initialization files, and if you mess them up
your programs, (or even your operating system, won't work.
If you want to look at those in Notepad, why don't you make duplicate
copies and look at the duplicates instead.)
italics, boldface, underlining, changes of font size or font face, changes of color,and other fancy formatting features. These features are built into the document file using special "invisible" characters that are seen by the program but not by the user of the program. For instance, the file may contain a special character or string of characters that means "begin boldface here," and another string that means "end boldface here". The "invisible" characters can sometimes be revealed (for instance, in Wordperfect, use the "reveal codes" command). But most of the time, all you see is the consequences of those invisible characters; you can't see what's actually in your file.
The "invisible characters" can cause problems when you're using a formatted word-processor. For instance, if you delete all the letters between a "begin boldface" marker and an "end boldface" marker, those markers might still remain in your file, and they may cause subsequently added text to malfunction. The invisible characters can cause even bigger problems in a file that is supposed to be just plain text.
Word-processors are also known as WYSIWYG's ("What You See Is What You Get") because the display on the computer screen is essentially the same as what the resulting printout will look like. Thus, the effect of your changes is seen instantly when you change your file; there is no waiting to see whether you're getting the desired effect. This makes word-processors the preferred tool of secretaries and perhaps administrators, but such WYSIWYG programs can only achieve second-rate typesetting of long and/or mathematical documents.
tex | html | |
source code | mybook.tex (as shown in
text editor, such as Notepad):
|
mywebpage.htm (as
shown in text editor, such as Notepad):
|
tex file compiled to dvi pdf, or ps file | htm or html file is interpreted; no additional document file needed | |
output display | mybook.dvi, mybook.pdf, or
mybook.ps (as shown in viewer, such as Yap, Acrobat Reader, or Gsview):
|
mywebpage.htm
(as shown in browser, such as Netscape):
This example shows how to do boldface,
italics,
different
colors,
and mathematical expressions such as
|
Of course, latex includes many other commands that are not available in HTML -- for square roots, fractions, matrices, and many more symbols.
Markup languages such as TeX serve the needs of mathematicians far better than do WYSIWYG documents such as Word or Wordperfect. That's because the control is entirely conscious, instead of hidden away in some unrevealed codes. You can read about the advantages of markup languages in this rant by Allin Cottrell.
By the way, you should NOT use a word-processor (such as Word or Wordperfect) to edit a markup language source file (such as mybook.tex or mywebpage.htm). If you do use one, it may leave behind some "invisible characters" that will cause the compiler or interpreter to malfunction. You must use a plain text editor such as Notepad -- or better yet, a souped-up plain text editor, such as one of the shell programs discussed below.
If you want to make any changes in a markup document, you don't edit the finished image. Rather, you go back and edit the plain text source code. Then you send it through the compiler or interpreter again. You repeat this process as many times as necessary.
The diagram at right is intended to emphasize the separateness of editing the source and looking at the output. The separateness was even greater in the early days of tex, when previewers were not available, and the only way to see the output was to print it out on paper. Moreover, the computer was slow, so running the compiler took many seconds -- perhaps even minutes, if the document was large. Going to fetch your output took additional time, if the only suitable printer was in a different room or perhaps even a different building. Thus, each cycle took a substantial amount of time. Using the printer may have been expensive, so you were encouraged to do as much as possible in each cycle. You tried to keep the writing process down to just a few cycles; perhaps your first rough draft would even be written by hand in pencil.
But faster computers and the availability of previewers have greatly accelerated the cycle. Typically you may display the editor and the previewer simultaneously on different parts of the same computer screen. You look at the output while editing the source file. Each run of the compiler and update of the previewer takes less than a second (or only a few seconds, for long documents), and it costs nothing. The different parts of the process seem to be happening almost simultaneously. Typically, you may repeat this cycle hundreds or thousands of times while writing a document.
Speaking, this arrangement still is not WYSIWYG. If you have editor and previewer showing simultaneously on different parts of the computer screen, they are not really showing the same document. The previewer is still showing what was the output from the last time that you updated it. If you've typed anything into the editor since then, it is not reflected in the previewer; those changes won't show in the previewer until the next time you click "save" and run the compiler. Still, you can update frequently and quickly, so this arrangement gives you nearly the same convenience as a WYSIWYG word-processor.
A tip about cross-references.
You should never, ever, ever type
into your text something like
"see section 7.3". Instead, you should
always use automatic sectioning commands.
Immediately after the beginning of section 7.3,
you should type something like
"\label{intro.crossed.alephs}
".
That won't show up in the output (i.e., in
the dvi or pdf file). But then later you
can type "see section \ref{intro.crossed.alephs}
", and
it will print "see section 7.3" in your
output (dvi or pdf file).
The advantage of this system, of course, is
that later if you rearrange the order
of material and your old
section 7.3 becomes section 7.2 or 7.4,
the cross-reference to that section is automatically
updated. It also has a further advantage: It
gets a link when you use hyperref (discussed a few
paragraphs later from here).
To work this, you have to run latex twice. That's because each time you run latex, it copies all sorts of information into a new "aux" file, including things like the fact that {intro.crossed.alephs} currently means 7.3. On the other hand, latex uses information from the old aux file (if there is one). When you run latex an extra time, the old and new aux files are the same, and the cross-referencing works properly. If you only run latex once, your output will say something like "see section ??" -- it will actually display two questionmarks.
If you want an automatic table of contents in your book, put
A tip about screen size.
A page of your document probably is taller than your monitor.
You'd like to display, if not an entire page, then at least a large
portion of it at one time. You can gain a little vertical space by
these tactics:
\tableofcontents
where you want it to appear. Again, this takes an extra run of latex
to get the files synchronized.
This is a specialized feature, available only in some software, but it's such a big help in the editing cycle that I want to mention it here. If you have a suitable dvi previewer (such as Yap) and a suitable shell/editor program (such as TeXnicCenter) both properly configured, then you will have these two capabilities during the editing cycle:
When using Latex, we must distinguish between the source files and output documents.
The basic source file is a text file written in markup language and edited with a text editor, as explained earlier. Typically it is named "myfile.tex" or "alephs.tex" or "thesis.tex" or something like that. Actually, there could be several files involved, named something like this:
Then there are a number of different things you can do with the source file, to get output files:
(Caution: The three routes to "myfile.pdf" do not necessarily produce identical pdf files. The different programs involved may handle the illustrations a little differently. You should experiment to see which route to the pdf works best for you.)
So, we have three main kinds of output files: dvi, ps, and pdf. Which of these three do you actually want?
In addition to the compilers, converters, and viewers shown in the diagram above, you probably will also want a few other programs -- for instance, a shell/editor program and a tex-compatible graphics editor, both discussed later on this page, or various other tex-related programs.
Strictly speaking, you do not need to have a shell program. You could just type all your tex commands into a Dox box, as shown in the picture at right. That's the procedure still followed by some old tex users, who learned tex before shells became available. In fact, that might be the best procedure for beginners to follow initially, so that they can understand the basic idea of tex before they start learning a shell. But I recommend that you switch to a shell program before long. Learning to use a shell may take a tiny bit of time and trouble, but over the span of your career it will save you a tremendous amount of tedium.
(If you really want to continue using Dos boxes, I suggest that you at least install the "Command Prompt Here" program from the Windows Powertoys collection.)
A shell program, also known as a front end or as
a GUI (graphical user interface) for tex, is a text editor
with other features added that make tex-related activities easier.
Following are descriptions of some of those features.
Pictured at right is TeXnicCenter (with the picture edited
to fit better on this web page); it has all the features listed
below.
Many recent shell programs have syntax coloring/highlighting. This means that different parts of your file are automatically displayed in different colors. For instance, in TeXnicCenter the default color scheme is normal text in black, keywords in blue, comments in gray, operators in red, verbatim in magenta, text in math mode in green, keywords in math mode in darker blue. These colors make the editing easier. For instance, if you forget to close a math formula with a second dollar sign, you'll have many lines in one color on the screen; that makes it easy to spot such errors. The colors are only in the editing display, not in the text file that you actually save and use.
Most shell programs have
macro buttons for frequently typed
tex commands.
For instance, there may be a button
with a picture of the Greek letter
gamma. If you click on that button, the program will
automatically insert "\gamma
"
into your text, at the
current location of your text cursor. A shell program
may have many buttons like that, for all the Greek letters and
most of the mathematical symbols that tex knows.
Some shell programs also have macro buttons for creating
arrays and other complicated displays.
Also important are execute buttons. For instance, you certainly want a button labeled "tex" or "latex". Clicking on that button should launch the tex or latex program, applying it to the tex file that is currently displayed in the editor section of your shell program; perhaps it will even save the file before launching the tex program. Likewise, you may have buttons for "make pdf file", "make ps file", "update index", etc. Of course, with many shell programs the buttons are labeled with icon pictures instead of text labels.
A good shell program should be compatible with Yap's
forward and inverse search feature. This is a luxury to
which I have become addicted; I would prefer not to latex
without it.
For programs that do not
have this feature specifically built in, what it
requires is that
yap -1 -s
[linenumber of cursor's current position in current file in shell
program] [filename of current file] [filename of current project,
minus the 'tex'].dvi
"
A few recent shell programs have features built in to automatically facilitate error handling. For instance, in TeXnicCenter, after you've compiled your latest version of your source file, click on the "go to next error" button. The error message produced by latex will be displayed in the output panel at the bottom of the window, and the cursor in the editing panel will be moved to the location where the error occurred in the source file. If you're still not sure what the error is, click on the "view latest build output" button, and (if you have forward search configured correctly) up will pop a display of your output dvi file, showing approximately where the error occurs. Now go to the editing panel and make whatever you think is the correction to your error. After you've done that, you can compile again -- or, if you want to look at several errors per compilation run, click again on the "go to next error" button.
The picture at right shows the "latex toolbar" in TeXnic Center. (The red explanations were added to the picture by me, and do not actually show up in TeXnic Center, though a similar "tooltip" shows up if you hold the mouse cursor fixed over one button for a few seconds.) The pull-down menu at left indicates whether the output will be DVI, PDF, PS, or some other arrangement; you can add more options to that list. You can choose whether to execute latex on just one file or an entire project -- the project system is recommended when you have several files (e.g., one per chapter), because the project system works well with forward search even for multifile documents. The last 6 buttons in the toolbar are for different kinds of interactive error handling.
Some shell programs don't have all the buttons you'd like, but some shell programs enable you to add your own buttons without too much difficulty. For instance, in TeXnicCenter, you can add commands of your own choosing to a pull-down "tools" menu. (Adding graphical icons to the items on that menu is possible but in some cases difficult.)
Also, if you prefer a shell program that lacks tex macro buttons, you can use it together with the "Tex Macros" program; it can add some (but not all) of the buttons described above.
Here is an extremely short example of a latex source file:
\documentclass[12pt]{book}
\usepackage{color}
\begin{document}
This sentences uses {\color{red}red}
and {\color{blue}blue}.
\end{document}
Every Latex document must begin with a \documentclass{ }
specification.
The section between there and the \begin{document}
is commonly called the preamble; in that section you can put package calls,
define macros, etc.
The most common, standard, "official" classes are book, report, article, letter, and proc (for proceedings). But individual users of Latex have devised their own document classes, many of which can be downloaded for free from the internet. For instance,
A document class can be modified by various styles and options. For instance, in the little example above,
\usepackage
command in your source file.
Again, there are some standard packages installed in any distribution of latex, and
there are additional packages that you can download and install yourself.
Be cautioned
that the installing of a package can be complicated -- there may be many files that need to
be put in various different directories, and then you also have to refresh the database that
latex looks at when it is trying to find where its files are. Some distributions can automate
this procedure for you.
That's one of the features that I particularly like about Miktex, the distribution that I use. All I have to do is (for instance) put "\usepackage{color}" into my document's preamble (i.e., the section between documentclass and begindocument), and then run latex. If color isn't already installed, Miktex automatically will look on the internet, find the appropriate files, download them, install them, refresh my database, and then resume the tex processing. This is called "on-the-fly installation".Here is a list of a few packages and other free add-ons. This list includes both some that are widely used, and some that are my own personal favorites:
\usepackage{makeidx}\makeindex
in your preamble.
\printindex
at the place where you want the index to appear
(customarily at the end of the book).
Both fonts and graphics can be classified into these two main types:
How can you get just scalable illustrations? I know of two main methods. (You can use either or both methods in your document.)
Getting scalable graphics by the "included graphics files" method | Getting scalable graphics by the "direct latex use of picture environment" method |
Most mathematicians nowadays prefer this method
-- perhaps partly because they don't know about the software available
for the other method.
And this is certainly the only method available if you want to
use graphics generated by some external program such as
Mathematica.
For this method, include the line
\usepackage{graphics}
or \usepackage{graphicx}
in the preamble of your source file. Then, at the place where
you want your image file "xalephs.eps" (for instance) to appear,
you include a line like
\includegraphics{xalephs.eps}
in your source file. With a longer command you can also do scaling
and/or clipping. Documentation for these packages can be found
in the directory "C:\texmf\doc\latex\graphics "
if you're using Miktex. --- Actually, other filetypes besides
EPS can be used in these commands, but I wouldn't recommend
it. A plain old PS file may cause problems with your publisher because
it must be accompanied by a "bb" (bounding box) file to
give size/position information. And bitmapped graphics files such
as JPG will lose quality when rescaled.
|
This method may be slightly harder
to use, but has the slight advantage that it avoids most
problems with incompatibility (see the cautionary
note above).
Here is a very simple example of this method:
Basic commands such as "\vector" and "\circle" are already built
into latex. If you add to your preamble a line such as
\usepackage{epic,eepic}
or \usepackage{pstricks}
you'll get additional commands available, such as "\path",
"\ellipse", "\dashline." Documentation for eepic is in
"C:\texmf\doc\latex\eepic "; documentation
for pstricks doesn't seem to be all in one place.
|
Software for each of these methods can be found in our free software collection.
Don't rush out to buy a book about tex. You may want one after a while, but first take a look at some of the extensive documentation available for free on the internet. (Some of the documents listed below are also copied onto our department's CD-ROM and website, for the benefit of graduate students with slow or no internet connection.)
\documentclass{nameofclasshere}
"
instead of "\documenttype{nameoftypehere}
".
This tells the latex program that you're going to use the new system,
and so it permits you to use the newer packages (many of which
won't work under the old system).