Professional Documents
Culture Documents
version 1.0.10
Guido Gonzato, Ph.D.
guido.gonzato@gmail.com
January 8, 2015
Abstract
Text processing with LATEX offers several advantages over word processing. However, beginners may find it hard to figure out how to perform common tasks and
obtain certain features. This manual attempts to ease the transition by drawing comparisons between word processing and LATEX typesetting. The main word processor
capabilities are listed, along with their equivalent LATEX commands. Many examples
are provided.
Contents
1 Introduction
1.1
1.2
Preliminaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1
Editor-Supported Features
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.2
Adding Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
5
2.1
File/New . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2
File/Save As. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3
File/Save As Template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4
File/Import
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5
File/Page Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.1
2.6
File/Printer Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.7
File/Print Preview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.8
File/Print . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.9
File/Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Edit/Autotext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
9
Insert/Breaks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2
Insert/Enumerated List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
4.3
Insert/Special Character . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
The A
C Sign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
4.3.1
4.4
Insert/Formula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5
Insert/Footnote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
4.5.1
14
13
4.6
Insert/Indices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
4.7
15
4.8
Insert/Tabs
15
4.9
Insert/Cross Reference
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
16
16
4.12 Insert/Figure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
19
4.13 Insert/Shapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
4.14 Insert/Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
4.15 Insert/Hyperlink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
4.16 Insert/Comment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
22
5.1
Format/Line Spacing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
5.2
Format/Character . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
5.2.1
23
5.2.2
Underline styles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
5.2.3
Format/Character Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
5.2.4
Format/Character Font . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
5.2.5
Format/Character Colour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
5.3
Format/Paragraph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
5.3.1
Paragraph/Horizontal Alignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
5.3.2
Paragraph/Vertical Alignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
5.3.3
Paragraph/Margins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
5.3.4
Paragraph/Indentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
5.3.5
29
5.3.6
Paragraph/Colour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
5.3.7
Format/Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
31
6.1
Table/Line Spacing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
6.2
Table/Rule Width . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
6.3
Table/Aligning Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
6.4
Using slashbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
6.5
34
35
7.1
Tools/Mail Merges
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
7.2
Tools/Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
7.3
Tools/Default Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
7.4
Tools/Hyphenation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
7.5
Tools/Spell Check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
39
9 The End
39
ii
A Document Templates
40
List of Tables
1
Useful key bindings for Emacs, Vim, and Jed in IDE mode. . . . . . . . . . . . . . . . . . .
12
Font attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
Font sizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
24
26
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
A sample table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
List of Figures
1
17
A Gnuplot graph. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
19
20
Book template. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
Report template. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
Letter template.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
42
43
Introduction
First of all, let me state that this is not a LATEX primer! If youre reading this document, I
assume that you have at least a basic understanding of LATEX and of its basic commands.
In this guide, Ill explain how to replace a word processor effectively using LATEX.
Word processors are the killer app in modern office automation. Theyre perceived to be
easier than LATEX as they have a friendly WYSIWYG interface, and the average secretary
will learn to use them in a relatively short time. The problem is, these beasts keep growing
slow, bloated,1 buggy, crash-prone, expensive, virus ridden, and incompatible with each
other. Not to talk about their default output quality.
LATEX is an excellent alternative (in some cases, it is the only viable alternative); but its
not much intuitive for those accustomed to WYSIWYG.
To sum up, sometimes you may want to use word processor-like featuresbut using LATEX.
It would be nice to know how to obtain some effects with LATEX when you know how to
get them with your once-favourite :-) word processor.
Thats why I wrote this quick reference. As I said, it assumes some basic LATEX knowledge; if its not the case, I suggest that you go to http://www.ctan.org/starter.html
and download The (Not So) Short Introduction to LATEX2e. Another good primer is
http://en.wikibooks.org/wiki/LaTeX/.
1
once upon a time, I wrote my thesis on a 128k RAM, Z80-based home computer. The word processor
WordStar and my thesis fit on a single CP/M-bootable 720K floppy, with lots of room to spare!
In the following sections, we shall navigate through the menus and menu items of an
imaginary word processor, finding out the corresponding LATEX way of doing the same
work.
1.1
Preliminaries
Many word processor features are implemented by the editor; others by standard LATEX
commands; others still are obtained using packages. These are sets of macros that extend
LATEX providing new commands and environments. There are lots of packages around:
the only problem is knowing where they are, what they do, and how to install them. More
about packages in Section 1.1.2.
Packages and other TEX-related material are available at many sites that constitute the
CTAN: the Comprehensive TeX Archive Network. I already mentioned http://www.ctan.
org; this site has a wide list of mirrors. From now on, CTAN: means your favourite CTAN
mirror here, starting from the TEX directory. For instance, you can get LATEX for your
platform from CTAN://systems (e.g., http://www.tex.ac.uk/tex-archive/systems/).
To write your documents, you will need a good text editor. A better choice for beginners
is a LATEX IDE : an editor dedicated to writing LATEX source, with preview and many
facilities.
I suggest that you install one of the programs listed below; all of them are Free/Open
Source software.
Texmaker (multiplatform):
http://www.xm1math.net/texmaker/index.html
TeXstudio (multiplatform):
http://texstudio.sourceforge.net/
TeXworks (multiplatform):
http://tug.org/texworks/
TeXShop (Mac OS X):
http://www.uoregon.edu/koch/texshop/
TeXnicCenter (Windows):
http://www.texniccenter.org/
Information about LATEX on the Mac can be found at http://www.esm.psu.edu/mac-tex/.
1.1.1
Editor-Supported Features
LATEX is just a formatter: things like cut and paste, search and replace etc. are delegated
to the editor. Table 1 summarises the main commands of popular editors for geeks: GNU
emacs and vim with their native key bindings, and jed configured for Borland IDE key
bindings.
1.1.2
Adding Packages
The following information applies to TeX Live, which ships with most GNU/Linux distributions. It may also work on MacTeX, but I have no first-hand experience. Instructions
for MiKTEX (probably the most popular implementation for Windows) will follow below.
2
Action
command mode
insert mode
line editor mode
open file
insert file
save file
save as
close file
change buffer
undo
redo
exit
word left
word right
start of line
end of line
page up
page down
start of buffer
end of buffer
line n.
character left
character right
word left
word right
end of line
line
search
replace
start selection
cut
copy
paste
Emacs
Vim
Alt-X
ESC
n/a
i a o O
n/a
:
file operations
Ctrl-X Ctrl-F
:e
Ctrl-Xi
:r
Ctrl-X Ctrl-S
:w
Ctrl-X Ctrl-W name
:w name
Ctrl-XK
:q
Ctrl-XB
bN
Ctrl-XU
u
Ctrl-^
Ctrl-R
Ctrl-X Ctrl-C
:qa!
moving around
Alt-B
b
Alt-F
w
Ctrl-A
0
Ctrl-E
$
Alt-V
Ctrl-U
Ctrl-V
Ctrl-D
Alt-<
1G
Alt->
G
Alt-G n.
n.G
deleting
Ctrl-H
X
Ctrl-D
x
Alt-DEL
db
Alt-D
dw
Ctrl-K
d$
Ctrl-A Ctrl-K
dd
search & replace
Ctrl-S text
/text
Alt-%
:s/old/new/g
blocks
Ctrl-SPACE
v
Ctrl-W
D
Alt-W
Y
Ctrl-Y
P
Jed
Alt-X
n/a
n/a
Ctrl-KE
Ctrl-KR
Ctrl-KD
Ctrl-KS
Ctrl-KQ
Ctrl-KN
Ctrl-U
Ctrl-G Ctrl-U
Ctrl-KX
Ctrl-A
Ctrl-F
Ctrl-QS
Ctrl-QD
Ctrl-R
Ctrl-C
Ctrl-QR
Ctrl-QC
Ctrl-QI
BS
Alt-G
Alt-BS
Ctrl-T
Ctrl-QY
Ctrl-Y
Ctrl-QS
Ctrl-QA
Ctrl-KB
Ctrl-KY
Ctrl-KH
Ctrl-KC
Table 1: Useful key bindings for Emacs, Vim, and Jed in IDE mode.
A large collection of LATEX packages is natively supported; for instance, Ubuntu provides
lots of texlive-* packages. Please note the ambiguity: were talking of .deb packages
containing LATEX packages.
If you need to install an unsupported package, do the following.
1. create this directory structure:
$ mkdir -p ~/texmf/tex/latex
4. If no .sty file exists, run the command latex foo.ins or latex foo.dtx to create
it;
5. run the command texhash ~/texmf.
To add a package to MiKTEX, create the directory \latex\newpackage under C:\localtexmf\
tex\ and put the relevant files in there. Proceed as above, then run MiKTeX Options
and click on the Refresh now button. Alternatively, issue the command initexmf -u.
Thats it!
Once a package is installed, you make it available in your documents adding a line under
the documentclass declaration:
\usepackage{foo}
1.1.3
Man and Info pages are command-line sources of documentation for software, widely
employed in Unix and Linux systems. If your LATEX distributions lacks the latex2e.info
info page, do the following:
1. download it from http://tug.ctan.org/info/latex2e-help-texinfo/latex2e.info;
2. run these commands:
$ sudo cp latex2e.info /usr/share/info/
$ sudo ginstall-info latex2e.info dir
1.2
Obviously, some entries of this menu have nothing to do with LATEX: File/Open, File/Save,
File/Close depend on the editor.
2.1
File/New
As documents written in LATEX are inherently structured, this is a more realistic example:
\documentclass[a4paper,12pt]{article}
\begin{document}
\title{My Document}
\author{John Smith}
\date{London, \today}
\maketitle
\begin{abstract}
This is a very short article.
\end{abstract}
\tableofcontents
\listoftables
\listoffigures
\section{First Section}
\label{sec:start}
This is the text of the section. See \cite{Gonzato} for details.
\section{End}
\label{sec:end}
This is the end of the document. Please go to Section
\ref{sec:start} to read it again.
\begin{thebibliography}{99}
\bibitem{Gonzato} Gonzato G. \textit{\LaTeX{} for Word Processor
Users}. CTAN, 2001--2015.
\end{thebibliography}
\end{document}
2.2
File/Save As. . .
The following tools are handy if you want to convert LATEX to other formats:
TEX4ht is probably the best LATEX to HTML converter:
http://tug.org/tex4ht
latex2html, another converter to HTML:
http://saftsack.fs.uni-bayreuth.de/latex2ht/,
CTAN://support/latex2html
latex2rtf, a converter to Rich Text Format:
CTAN://support/latex2rtf
detex (a command line converter) removes all LATEX tags and outputs plain text:
http://www.cs.purdue.edu/homes/trinkle/detex/,
CTAN://support/detex/
See also Section 2.7 for details on PDF creation.
2.3
File/Save As Template
Saving a LATEX template would mean, as I see it, create a new LATEX package. This is
complex matter that goes beyond the scopes of this guide.
2.4
File/Import
2.5
File/Page Setup
The normal method for setting paper size, orientation, and margins, is to use parameters in \documentclass. Paper size can be a4paper, a5paper, b5paper, letterpaper,
legalpaper, executivepaper; orientation is portrait by default, or optionally landscape.
For example,
\documentclass[a5paper,landscape,12pt]{article}
Document-wide margins are set with the \setlength command, which is used to change
the value of variables and counters:
\setlength{\leftmargin}{2cm}
\setlength{\rightmargin}{2cm}
\setlength{\oddsidemargin}{2cm}
\setlength{\evensidemargin}{2cm}
\setlength{\topmargin}{-1cm}
\setlength{\textwidth}{18cm}
\setlength{\textheight}{25cm}
The geometry package allows for complete control of parameters such as paper size, margins
width, and so on. geometry has far too many options to list them all, and youre invited
to read its documentation. A fairly complete example of its usage is shown below. In this
example, some parameters are not compatible with each other, and are there for purpose
of argument only.
\usepackage{geometry} % top of document
...
\geometry{paperwidth=25cm}
\geometry{paperheight=35cm}
% or: \geometry{papersize={25cm,35cm}}
\geometry{width=20cm} % total width
\geometry{heigth=30cm} % total heigth
% or: \geometry{total={20cm,30cm}}
\geometry{textwidth=18cm} % width - marginpar
\geometry{textheight=25cm} % heigth - header - footer
% or: \geometry{body={18cm,25cm}}
\geometry{left=3cm}
% left margin
\geometry{right=1.5cm} % right margin
% or: \geometry{hmargin={3cm,2cm}}
\geometry{top=2cm}
% top margin
\geometry{bottom=3cm} % bottom margin
% or: \geometry{vmargin={2cm,3cm}}
\geometry{marginparwidth=2cm}
\geometry{head=1cm}
% header space
2.5.1
The fancyhdr package provides the new command \pagestyle{fancy}. This will create
a header reporting the current section (chapter in book.cls) and subsection, and a
footer with the page number: pretty fancy indeed. Headers and footers can obviously be
customised. They are made of three parts: a left-aligned part, a centre-aligned part, and
a right-aligned part. To set those, use the commands like in this example:
\usepackage{fancyhdr}
...
\lhead{} % empty
\chead{Hello, world!}
\rhead{Page \thepage} % page number
\lfoot{}
\cfoot{\textbf{Hello!}}
\rfoot{}
2.6
File/Printer Setup
This is highly OS-dependent, and definitely outside of the scopes of LATEX. Assuming that
youre using a Unix-like system, these tips may come in handy:
lpr -P printername prints to the specified printer;
lpr -# 10 prints 10 copies;
lpr -r removes the file after printing it
See below for more tips.
2.7
File/Print Preview
When the LATEX input file is ready, you have several options:
convert it to .dvi (latex file.tex) and previewing it with xdvi, yap or other DVI
previewer;
convert the .dvi to PostScript with dvips, then use some variant of Ghostview;
producing a .pdf file with dvipdf or directly with pdflatex.
In my opinion, producing a .pdf file is the best option, as it makes for widest portability.
While dvipdf is just a script that converts the .dvi to .ps then to .pdf, using pdflatex
is more interesting. In fact, some packages like hyperref and url make the resulting .pdf file
browseable; see Section 4.15. However, using pdflatex you might experience problems
with other packages. More details in Section 4.12.
2.8
File/Print
Simply use lpr file.ps from the command line, or via the File/Print menu entry of your
previewer.
8
2.9
File/Versions
Although the version package provides basic facilities for versioning LATEX sources, using
external tools is usually a better choice.
There are lots of programs for revision control and collaborative writing. While old-style
geeks may want to use a single-user tool like RCS (I do), more powerful and multi-user
tools like Subversion, Git, Mercurial etc. may be preferable. Some of them are integrated
with the editor.
An introduction to LATEX and Subversion is here:
http://tug.org/pracjourn/2007-3/kalderon-svnmulti/.
This menu has more to do with the editor than LATEX features. To begin with, refer
to Table 1 that shows the key bindings for the entries Edit/Cut, Edit/Copy, Edit/Paste,
Edit/Find, and Edit/Replace of some common editors.
Selecting text is not only performed for subsequent cut and paste, but also for applying
styles to the selected text. The equivalent action in LATEX is to enclose the text either
between braces, or in an environment. For example, to apply the bold attribute to a
portion of text you will use one of the following:
this is \textbf{bold text;}\\
this is also
{\bfseries bold text;}\\
\begin{bfseries}
this is bold text, too!
\end{bfseries}
3.1
Edit/Autotext
We call autotext the feature that makes you type, say, PS to have the word PostScript
automatically expanded. This is an editor feature, but theres a rough LATEX equivalent:
\def\PS
{\textsc{PostScript}}
which will insert the equivalent of \textsc{PostScript} whenever you type \PS. Beware,
case is important.
4.1
Insert/Breaks
I
am
But I am not.
Ok, now you get it.
stretched!
Besides, \clearpage differs from \newpage in that it prints all pending floats, that is
figures and tables. Floats will be explained in Section 4.12.
4.2
Insert/Enumerated List
Bulleted and enumerated lists correspond to the itemize and enumerate environments.
To customise the bullet in a list environment, you can specify it as an argument to \item:
* with an asterisk;
\begin{itemize}
\item[*] with an asterisk;
\item[-] with a dash;
\item[.] with a dot.
\end{itemize}
- with a dash;
. with a dot.
Another way is to redefine the style of the counters 2 hat refer to the digits in the firstto fourth-level lists. These counters are \labelitemi, \labelitemii, \labelitemiii
and \labelitemiv for itemised lists; \labelenumi, \labelenumii, \labelenumiii and
\labelenumiv for enumerated lists.
There are several styles: \arabic for normal numbers, \roman for lower-case roman
numerals (e.g., viii is 8), \Roman for upper-case roman numerals, \alph and \Alph for
lower- and upper-case letters, and \fnsymbol that I will not explain for now:
\begin{itemize}
\renewcommand{\labelitemi}{*}
\renewcommand{\labelitemii}{-}
\item first level, item 1
\item first level, item 2
\begin{itemize}
\item second level, item 1
\item second level, item 2
\end{itemize}
\item first level, item 3
\end{itemize}
2
each text element numbered by LATEX (sections, lists, figures, etc.) has a counter associated with it.
10
To use, say, roman numbers and uppercase letters in enumerated lists, do this:
\begin{enumerate}
\renewcommand{\labelenumi}
{\Alph{enumi}}
\renewcommand{\labelenumii}
{\roman{enumii}}
\item first level, item 1
\item first level, item 2
\begin{enumerate}
\item second level, item 1
\item second level, item 2
\end{enumerate}
\item first level, item 3
\end{enumerate}
Alternatively, use the enumerate package. It redefines the enumerate environment with
the ability to specify an optional argument. Any occurrence of one of the characters A a
I i 1 will produce the value of the counter, using (respectively) \Alph, \alph, \Roman,
\roman, or \arabic. To include some text, enclose it in braces:
\begin{enumerate}[{Example} I.]
\item First example.\label{item:first}
\item Second example.
\item Last example.
Go to Item~\ref{item:first}.
\end{enumerate}
3. Example 3.
4. Example 4.
6. Example 6.
Lists within paragraphs are implemented by the paralist package, which provides the
inparaenum environment:
Ill throw in a list of items:
\begin{inparaenum}
\item apples,
\item pears, and
\item oranges.
Ill throw in a list of items: 1. apples,
\end{inparaenum}
2. pears, and 3. oranges. The same list
The same list can be labelled
can be labelled with letters: a) apples,
with letters:
b) pears, and c) oranges. The first item is
\begin{inparaenum}
a.
[\itshape a) \upshape]
\item apples, \label{first}
\item pears, and
\item oranges. The first item is \ref{first}.
\end{inparaenum}
As seen above, the characters A a I i 1 can be used to modify the counter. paralist can
do much more, and I suggest that you read its documentation.
11
Character
$
&
%
{
}
<
>
\
|
R
TM
a
o
LATEX Sequence
\$ or \textdollar
\&
\%
\_ or \textunderscore
\{ or \textbraceleft
\} or \textbraceright
$<$ or \textless
$>$ or \textgreater
\textbackslash
\textbar
\textbullet
\textdaggerdbl
\textdagger
\textparagraph
\textsection
\textcopyright
\textasciicircum
\textasciitilde or \~{}
$\sim$
\textregistered
\texttrademark
\textordfeminine
\textordmasculine
4.3
Insert/Special Character
First of all, lets remind that some characters have a special meaning in LATEX. They must
be entered either with a leading \, or using them in math mode, or even writing special
commands: see Table 2.
Another way to enter special characters is using their ASCII code and the \char command.
For example, you could insert the characters $&^~ entering \char36 \char38 \char94
\char126.
There are packages that provide thousands of unusual characters and symbols. For instance, pifont provides the commands \ding, \dingfill, \dingline, and \dinglist. The
first command produces the Dingbat character of the specified code. The other commands
are equivalent to the \fill, \line, and \list commands and environment, but use the
Dingbat code given as parameter:
+ one
\begin{dinglist}{43}
\item one
\item two
\item three
\end{dinglist}
+ two
+ three
12
\begin{dingautolist}{172}
\item one
\item two
\item three
\end{dingautolist}
two
three
There are far too many symbols to mention them all in this guide. Rather, Ill point you
to The Comprehensive LATEX Symbol List at CTAN://info/symbols/comprehensive.
4.3.1
The A
C Sign
The official Euro sign is provided by the eurosym package, which can be used in two ways:
\usepackage[gen]{eurosym}
\usepackage[official]{eurosym}
Both provide the \euro command, which produces A
C. The actual shape of the symbol
depends on the declaration: the [gen] option provides a symbol that works with all font
styles; the second declaration produces e. Please note the difference. The latter shape
can always be obtained with \officialeuro.
Another package that provides the Euro sign is marvosym, which also provides many more
fine characters. You get A
C with \EUR.
4.4
Insert/Formula
LATEX is particularly strong at typesetting math. To insert math symbols in the main
text, you must enclose them between $:
I like math: $x^n + y^n \neq
z^n \forall n \neq 2$
is my favourite theorem.
I like math: xn + y n 6= z n n 6= 2 is my
favourite theorem.
The environments displaymath and equation typeset formulae aside from the text. The
latter adds an equation number for later reference:
Fermats Last Theorem is
defined as:
\begin{equation}
x^n + y^n \neq z^n
\forall n \neq 2
\label{eq:fermat}
\end{equation}
Can you prove
Eq.~\ref{eq:fermat}?
4.5
(1)
Insert/Footnote
The command \footnote[n]{footnote text} is all you need; the optional parameter [n]
modifies the footnote number. The \footnote command should be placed after commas,
full stops, and other punctuation signs that follow the word.
13
To use a symbol or arbitrary text instead of a number, redefine the counter associated
with \footnote:
\renewcommand{\thefootnote}{read me!}
This footnote\footnote
{I mean this one.}
says it all.
Using this method, you can get footnote numbers in roman numerals, or replaced by nice
symbols:
\renewcommand{\thefootnote}
{\Roman{footnote}}
This\footnote{The first.}
is the first footnote,
and this\footnote{The second.}
is the second.
\renewcommand{\thefootnote}
{\fnsymbol{footnote}}
The end.\footnote[8]{At last!}
The first.
The second.
At last!
II
Note the \fnsymbol{footnote} thing. It uses 9 symbols associated with the values 1. . . 9
of the footnote counter: k .
To make several references to the same footnote, dont write its number explicitly. Rather,
do this:
This\footnote{the first.}
\newcounter{\myfootnote}
\setcounter{\myfootnote}
{\value{footnote}}
and that\footnote{the second.}
are footnotes: please read note
\footnotemark
[\value{\myfootnote}] again.
the first.
the second.
The endnotes package lets you move all footnotes at the end of the document. Youll have
to add this line to the preamble:
\let\footnote=\endnote
14
4.6
Insert/Indices
Generating and inserting a table of contents, list of tables, and list of figures is a trivial
task in LATEX. All you have to do is insert these lines before the first \section or \chapter
of your document:
\tableofcontents
\listoffigures
\listoftables
4.7
This entry doesnt actually exist in any word processor I am aware of. This is in fact a
limitation that LATEX fills in a very elegant way.
Space filling is used to center text horizontally, vertically, or both; this is a difficult task to
perform with any word processor, and requires a lot of trial end error. Use a combination
of \null or ~ to set fixed marks, followed by \vfill and \hfill like in this example:
one \hfill two\\
\vfill
~ \hfill three \hfill ~\\
\vfill
four \hfill five
\null
one
two
three
four
five
Normally, LATEX wont let you insert blank spaces at your will: two or more are considered
a single space. However, if you do want to make your document look messy, use ~ to make
a non-breakable space.
Also, use the command \hspace like in this example:
This is a \hspace{2cm}
2-cm-wide hole.
4.8
This is a
2-cm-wide hole.
Insert/Tabs
The tabbing environment provides a rough equivalent to the action of the TAB key, and
its used to align text in columns. These are the most commonly used commands:
Command
\=
\>
\+
\\\
\pushtabs
\poptabs
Action
Sets a tab stop
Advances to the next tab stop
Sets the left margin one tab stop to the right
Sets the left margin one tab stop to the left
Ends a line
Saves all tab stop positions
Restores previously saved tab stop positions
15
Zero
Zero
One
Two
One
Zero
Two
Zero
One
Two
new tab 1. . . new tab 2
new
tab
Zero
One
Two
Three
Three
Three
Three
4.9
Insert/Cross Reference
The commands \label, \ref, and \pageref are all you need to insert labels in the text
and do cross referencing. The standard format of labels is the prefix:suffix form, where
prefix is one of the following: cha for chapters, eq for equations, fig for figures, sec for
(sub)sections, and tab for tables.
References to a page (section, table, figure, etc.) number can be obtained using \label
and \ref as in this example:
\paragraph{Example.}
\label{par:example}
This paragraph appears
in Section~\ref{par:example}
on page~\pageref{par:example}.
Of course, you may use your own prefixes. For example, take this enumerated list:
\begin{enumerate}
\item{first step: skip to
\ref{item:end} \label{item:start}}
\item{another step (unreferenced)}
\item{end: go back to
\ref{item:start} \label{item:end}}
\end{enumerate}
4.10
Insert/Margin Notes
4.11
Insert/Text Frame
A text frame is used to define a part of text that does not break across pages. To place
a text frame on a fixed position on the page, use the textpos package, as shown in the
example listed in fig. 9 (see Appendix A).
16
4.12
Insert/Figure
(The reference guide for graphic inclusion in LATEX is Using Imported Graphics in LATEX2e,
a.k.a. epslatex.ps.)
A figure can be not only a picture, but also a portion of text, a table, etc. that you put
in a figure environment. This is an example:
\begin{figure}[htbp]
% [htbp] specifies the
% preferred placement: here, top,
% bottom, or separate page.
\begin{center}
\texttt{=8-)}
\end{center}
\caption{A smiley representing
the author of this guide.}
\label{fig:mysmiley}
\end{figure}
=8-)
Figure 1: A smiley representing
the author of this guide.
Please note that figures are not guaranteed to appear exactly where you write the code! In
fact, the main difference with word processors is that figures dont have a fixed placement;
they float to the optimal position that LATEX finds for them. So, the text shouldnt refer
to a figure like the figure below or the figure above; use see fig.~\ref{fig:label}
instead.
Owing to this property, figures and tables are called floats. If you do need to position
a float exactly, use the here package that provides an optional placement argument H
(meaning, right HERE!).
Given a picture in Encapsulated PostScript (.eps) format, you insert it in a LATEX
source file using the graphicx package and commands like those shown in fig. 2.
When you typeset your document with \latex then dvips, graphic inclusion only works
with EPS files; pdflatex accepts JPG, PNG, and of course PDF files. The latter choice
might be preferable for most users.
17
Gnuplot 3D graph
\begin{figure}
\begin{center}
\fbox{\includegraphics
[width=0.5\textwidth, angle=-90]
{gnuplot.ps}}
\caption{A Gnuplot graph.}
\label{fig:gnuplot}
\end{center}
\end{figure}
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
4
3
2
-4
1
-3
-2
0
-1
X
-1
0
-2
2
-3
4 -4
If you have more than 18 figures without text between them, youll get the Too many
unprocessed floats LATEX error. The quickest way to solve this problem is to put
\clearpage after three or four figures.
18
4.12.1
Wrapping Floats
=8-)
The parameters are the number of lines to be narrowed, the figure placement, the overhang,
and the figure width.
4.13
Insert/Shapes
LATEX provides a picture environment whithin which you use commands like \circle,
\oval and so on. In my opinion, drawing pictures without a graphical environment is
just too hard, and picture has several limitations too. Its much better to use a couple
of great programs, both free and open source: the vector drawing program Inkscape,
https://inkscape.org/, along with Pstoedit, http://www.pstoedit.net/.
Start Inkscape and draw any shape you wish using its tools. To insert text rendered by
LATEX, select Extensions/Render/LaTeX formula..., insert your text as in fig. 3, then click
on Apply.
20
4.14
Insert/Line
Another interesting line is that made of dots (\dotfill), often used to relate things.
This is how its done:
Total price \dotfill \euro~10
4.15
Total price . . . . . . . . . . . . . . . . . . . . . . . . . . A
C 10
Insert/Hyperlink
The hyperref package lets you write URLs and other external references. When used
together with dvipdf or pdflatex, hyperref lets you make browseable .pdf documents!
For instance, this document uses this declaration:
\usepackage[colorlinks,
urlcolor=blue,
filecolor=magenta,
linkcolor=darkred,
hyperfootnotes=false]{hyperref}
Click \hyperlink{ctan}{here} to go
back to the top.
As you can see, the \url command typesets its contents using a monospace font. To use
the same font as the remaining text, use the command:
\urlstyle{same}
after the \hyperref declaration.
The \hypertarget and \hyperlink commands provide internal links, just like HTML;
\href creates links to URLs or external files. Note the run: parameter: you can run
external programs like multimedia players, office applications, whatever. As far as I know,
this feature only works in Adobe Reader, Okular, and Evince.
On Linux and possibly other Unix variants, youll have to instruct your favourite PDF
reader what to run when an external file is referenced. Insert lines like the following in
your .mailcap or /etc/mailcap:
21
audio/midi;/usr/bin/timidity %s
audio/*; xmms %s
video/*; xine -pfhq %s
Please read hyperrefs documentation for further examples and possibilities.
4.16
Insert/Comment
This is done inserting % before each line, or by using the package comment that provides
the environment of the same name.
In general, the main format properties of a document are set with parameters in \documentclass: default font size (10, 11, or 12pt), paper (a4paper, a5paper, b5paper, letterpaper,
legalpaper, executivepaper), and orientation (portrait, landscape). For example,
\documentclass[a5paper,landscape,12pt]{article}
5.1
Format/Line Spacing
The package setspace provide the environments singlespace, onehalfspace, and doublespace. In addition, the environment/command \spacing{amount} will set the spacing
to the specified amount:
\begin{spacing}{2.5}
These two lines \\
are crazily spaced!
\end{spacing}
\begin{spacing}{1}
Much better, these lines\\
have a pretty space.
\end{spacing}
To apply line spacing to the whole document, use the \linespread{factor} command in
the preamble. Default value of factor is 1; larger values give larger line spacing (1.6 is
roughly double line spacing).
5.2
Format/Character
Standard character properties are listed in Table 3, font sizes in Table 4. Please note that
actual font size depends on the default size defined in documentclass (10, 11, or 12 pt);
see Table 5.
Please note the difference between italics and emphasised text. For example, this portion
of text is typeset in italics, and these words are emphasised in upright. As you can see,
\emph is a logical rather than typographic command.
22
Text attribute
\textnormal
\textrm
\textit
\emph
\textmd
\textbf
\textup
\textsl
\textsf
\textsc
\texttt
\underline
\textsuperscript
\mathrm
\mathbf
\mathsf
\mathtt
\mathit
\mathnormal
\mathcal
Environment form
textnormal
rmfamily
itshape
n/a
mdseries
bfseries
upshape
slshape
sffamily
scshape
ttfamily
underline
n/a
n/a
n/a
n/a
n/a
n/a
n/a
n/a
Example
main document font
roman
italics
emphasis
medium weight (default)
boldface
upright (default)
slanted
sans serif
small caps
typewriter
underline
this is superscript
xn + yn 6= zn n 6= 2
xn + yn 6= zn n 6= 2
xn + yn 6= zn n 6= 2
xn + yn 6= zn n 6= 2
x n + y n 6= z n n 6= 2
xn + y n 6= z n n 6=
\ + \ 6= \ \ =
6
Also, please note that subscript is normally used in math mode only. The trick to use it
in normal text is:
this is
$_{\mbox{\footnotesize{subscript}}}$
5.2.1
this is subscript
Most chemical formulae could be entered as math formulae, using ^ and _ to obtain
superscript and subscript. The mhchem package provides a simpler command, though.
Digits are printed as subscripts by default, as superscript when preceded by ^. Formulae
must be enclosed in the \ce command:
\ce{H2O + CO2 -> H2CO3}\\
\ce{CaCO3 -> Ca^2+ + CO3^2-}\\
\ce{CO3^2- + H2CO3 -> 2 HCO3^-}\\
\ce{CaCO3 + H2CO3 -> Ca^2+ + 2HCO3^-}
5.2.2
H2 O + CO2 H2 CO3
CaCO3 Ca2+ + CO32
CO32 + H2 CO3 2HCO3
CaCO3 + H2 CO3 Ca2+ + 2 HCO3
Underline styles
Normally, underline is not used. Its just a relic of the old teletype era, and it doesnt
look really good. If you still want to use underline, the ulem package provides some fancy
23
Font size
tiny
scriptsize
footnotesize
small
normalsize
large
Large
LARGE
Example
sample text
sample text
sample text
sample text
sample text
sample text
sample text
sample text
huge
sample text
Huge
sample text
Table 4: Font sizes
10pt
5
7
8
9
10
12
14.4
17.2
20.7
24.8
11pt
6
8
9
10
10.95
12
14.4
17.28
20.74
24.88
12pt
6
8
10
10.95
12
14.4
17.28
20.74
24.88
24.88
styles:
\uline{important}
\uuline{urgent}
\uwave{boat}
\sout{wrong}
\xout{removed}
Beware: ulem redefines the \emph command, which will be replaced by underline. To avoid
this behaviour, use this declaration:
\usepackage[normalem]{ulem}
5.2.3
Format/Character Size
If the standard font sizes arent enough for you, the package extsizes may be handy. It
provides extended versions of the standard document classes, with support for sizes 812,
14, 17, and 20 pt.
For example, lets suppose you want to typeset an article using a 17 pt font. Youll use
this document preamble:
24
\documentclass[17pt]{extarticle}
Another way to get big fonts is to use the package type1cm, which provides commands
like the following:
\fontsize{72pt}{72pt}\selectfont
No Smoking
1-cm tall
ropped capitals at the start of a paragraph can be obtained using the lettrine package,
D which provides a fully customisable \lettrine command. This paragraph uses the
default behaviour:
\lettrine{D}{ropped} capitals at the start...
5.2.4
Format/Character Font
LATEX uses its own fonts (Computer Modern), automatically generated when needed by the
METAFONT subsystem. This ensures portability and yields very good results. However,
many of us are accustomed to other fonts: Times, Helvetica, Sans Serif. . .
Fortunately, LATEX can use PostScript fonts. Try using one of the following packages:
avant, avangar, bookman, chancery, charter, courier, helvet, helvetic, ncntrsbk, newcent,
palatcm, palatino, pifont, times, utopia, zapfchan. Insert \usepackage{times} and enjoy
the results. The only caveat is that LATEX handles maths at its best only with Computer
Modern fonts: using PostScript fonts might render your formulas slightly less appealing.
The packages above set the font for the whole document. To use a PostScript font for a
region of text only, specify the font family as in the example below. Common font families
are listed in Table 6.
Yet another possibility is replacing a standard LATEX font with a PostScript one: for
example, you may want to use Avantgarde whenever Computer Modern Sans Serif would
appear. These commands can be renewed as in the example below:
\rmdefault (roman)
\sfdefault (sans serif)
\ttdefault (typewriter)
25
Family
cmr
cmss
cmtt
pag
pbk
phv
pnc
ppl
ptm
pcr
Name
Computer Modern Roman
Computer Modern Sans Serif
Computer Modern Typewriter
Avantgarde
Bookman
Helvetica
New Century Schoolbook
Palatino
Times
Courier
\bfdefault (boldface)
\mddefault (medium)
\itdefault (italics)
\sldefault (slanted)
\scdefault (small caps)
\updefault (upright)
% Avantgarde replaces sans serif
\renewcommand{\sfdefault}{pag}
5.2.5
Format/Character Colour
You can colour words using the package color and appropriate commands. Predefined
colours are black, white, red, green, blue, cyan, magenta, and yellow; you can also define
your own.
\textcolor{red}{This is red.}\\
\color{blue}
This text is blue!\\
So is this. Lets change.\\
\definecolor{mygreen}
{rgb}{0.1,1,0.1}
\color{mygreen}
This is my shade of green!\\
\color{black}
\colorbox{cyan}{A cyan box}\\
\fcolorbox{blue}{green}
{A green box in a blue frame}
This is red.
This text is blue!
So is this. Lets change.
This is my shade of green!
A cyan box
A green box in a blue frame
26
5.3
Format/Paragraph
Lets remind what a paragraph is according to LATEX: a portion of text that either ends
with \\, or is followed by a blank line.
Environments are LATEXs way of specifying properties like text alignment or font selection
for a given portion of text. Its like selecting text with the mouse, then choosing the
property you wish from a menu or clicking on a button. Another way is to enclose the
text between brackets.
Environments have this general form:
\begin{environment}
...text goes here...
\end{environment}
For example, if you want to center a paragraph youll use the center environment:
\begin{center}
this text is centered
\end{center}
Standard environments are listed in Table 7. In the following sections, Ill show you what
to use and when.
5.3.1
Paragraph/Horizontal Alignment
By default, the text is justified. To get leftaligned, rightaligned or centered text, use
the flushleft, flushright and center environments. The commands \raggedright,
\raggedleft, and \centering are equivalent to their correspondent environments, but
they do not start a new paragraph.
5.3.2
Paragraph/Vertical Alignment
The way paragraphs are separated is often puzzling to word processor users. Empty lines
and multiple spaces are treated like a single empty line or space. This means that you
cant get more space between paragraphs inserting more empty lines. The commands
\smallskip, \medskip, and \bigskip provide some space between paragraphs.
If you need more space, use the command \vskip{parameter } as in this example:
Environment
abstract
array
center
description
displaymath
document
enumerate
eqnarray
equation
figure
flushleft
flushright
itemize
letter
list
math
minipage
picture
quotation
quote
tabbing
table
tabular
thebibliography
theorem
titlepage
verbatim
verse
Purpose
abstract
Math arrays
Centered lines
Labelled lists
Formulas on their own line
Encloses the whole document
Numbered lists
Sequence of aligned equations
Displayed equation
Floating figures
Flushed left lines
Flushed right lines
Bulleted lists
Letters
Generic list environment
In-line math
Miniature page
Picture with text, arrows, lines and circles
Indented environment with paragraph indentation
Indented environment with no paragraph indentation
Align text arbitrarily
Floating tables
Align text in columns
Bibliography or reference list
Theorems, lemmas, etc
For hand crafted title pages
Simulating typed input
For poetry and other things
28
Finally, the command \vfill is used to add empty lines between two paragraphs so that
the second paragraph goes exactly to the bottom of the page. For example,
This appears at the top of
the page{\ldots}
\vfill
{\ldots}and this at the bottom.
5.3.3
Paragraph/Margins
Normally, the margins are set for the whole document as seen in Section 2.5. Redefining
them for a section of text will not work: if you want to set a paragraphs margins, youll
have to create a new environment like in the following example:
\newenvironment{margins}[2]
{
\begin{list}{} {
\setlength{\leftmargin}{#1}
\setlength{\rightmargin}{#2}
} \item }
{\end{list}}
5.3.4
Paragraph/Indentation
To set the amount of indentation of the first line of a paragraph, we redefine the value of
the \parindent counter. In the following example, we set a 1-cm indentation:
\setlength{\parindent}{1cm}
The commands \indent and \noindent allow/disallow indentation on the following paragraph. Finally, the distance between paragraphs is set by the \parskip counter:
\setlength{\parskip}{3pt}
5.3.5
To get framed (bordered) paragraphs or words, you have the choice of using the framed
package or the \parbox command. The package calc is required in the latter case.
This is the simplest method, using framed:
29
\setlength{\FrameRule}{2pt}
\setlength{\FrameSep}{5pt}
\begin{framed}
this is a framed paragraph!
\end{framed}
\definecolor{shadecolor}{rgb}
{0.9,0.8,1}
\begin{shaded}
this is a shaded paragraph,
do you like it?
\end{shaded}
Equivalently, use the boxedminipage package and the equally named environment. For
those who want to know more: the commands
\framebox{
\begin{minipage}[c]{\linewidth}
text to be framed
\end{minipage}
}
this is another
framed word
Note that the second optional parameter specifies the alignment (to the right in this
example).
5.3.6
Paragraph/Colour
Now that you have a bordered paragraph, youll want to set its colour too. Do this:
\colorbox{yellow}{
\begin{minipage}
{0.8\linewidth}
I am a minipage, my colour
is yellow!
\end{minipage}
}
Just as an example, we set the minipage colour for only the 80% of its width. More about
colours in Section 5.2.5.
30
5.3.7
Format/Columns
The commands \twocolumn and \onecolumn start a new page and set the number of
columns; they can also be used as parameters in \documentclass. If this is not enough
for you, the package multicols provides an environment of the same name. I could have
set this section in two columns with these commands:
\columnseprule=1pt
\begin{multicols}{2}[\subsection{\entry{Format}{Columns}}]
The commands \cmd{twocolumn} ...
\end{multicols}
The space between columns is controlled by the parameter \columnsep, and the thickness
of the rule between columns by \columnseprule. The text given as optional parameter
in brackets is excluded from the environment.
Quite a complex subject. . . A table is a float (as explained in Section 4.12) that must fit
on one page. It usually contains a tabular environment, even though other possibilities
exist. By default, a table adjusts its width to match the width of its contents.
Let me stress that the table environment is a float, but tabular is not. Keep this in
mind if you want to write informal tabular material, i.e. without label and caption.
This is the general format of a table:
\begin{table}[htbp] % placement: here, top, bottom, separate page
% \begin{small}
% sets the table font
\begin{center}
% optional
% 4-column table; alignment is left, centered, right, fixed width
\begin{tabular}{|l|c|rp{4cm}|}
\hline
% horizontal line
\textbf{Left} & \textbf{Centre} & \textbf{Right} & \textbf{4 cm}\\
\hline
row 1, col 1 & row 1, col 2 & row 1, col 3 & row 1, col 4\\
\cline{1-2}
% horizontal line spanning columns 1-2
row 2, col 1 & row 2, col 2 & row 2, col 3 & row 2, col 4\\
\cline{1-2}
\multicolumn{2}{|c|}{spanning two columns} & row 3, col 3 &
row 3, col 4\\
\cline{1-3}
row 4, col 1 & row 4, col 2 & row 4, col 3 & ~ \hfill right\\
% force a space with "\ "
row 5, col 1 & row 5, col 2 & row 5, col 3 & left \hfill ~\\
row 5, col 1 & row 5, col 2 & row 5, col 3 &
~ \hfill centre \hfill ~\\
\hline
\end{tabular}
\caption{A sample table.}
% labels are used for cross references;
% for example, "see Table~\ref{tab:sampletab}"
\label{tab:sampletab}
\end{center}
% \end{small}
\end{table}
31
Left
Centre
row 1, col 1 row 1, col
row 2, col 1 row 2, col
spanning two columns
row 4, col 1 row 4, col
row 5, col 1 row 5, col
row 5, col 1 row 5, col
2
2
2
2
2
row
row
row
row
row
row
Right
1, col 3
2, col 3
3, col 3
4, col 3
5, col 3
5, col 3
4 cm
row 1, col 4
row 2, col 4
row 3, col 4
right
left
centre
Im
d!
ilte
normal
normal
tilted
\begin{sidewaystable}
\begin{tabularx}{7.5cm}{|l|X|X|}
\hline
\textbf{normal} & \textbf{tilted} &
\textbf{wider}\\
\hline
normal & \rotatebox{30}{Im tilted!} &
Im wider\\
\hline
\end{tabularx}
\end{sidewaystable}
wider
wider
Heres an example:
The standard tabular environment cannot span more than one page! There are some
packages that overcome this limitation: you will want to try out longtable, supertabular,
and xtab.
To enable colours in tables, you use the colortbl package:
Colour by row:\\\vskip 2mm
\begin{tabular}{|l|c|r|}
\hline
\rowcolor{cyan}
one & two & three\\
\rowcolor{green}
one & two & three\\
\rowcolor{yellow}
one & two & three\\
\hline
\end{tabular}
Colour by row:
one
one
one
32
two
two
two
three
three
three
Colour by column:
one
one
one
two
two
two
three
three
three
To conclude the subject, a neat little trick. If you think that writing LATEX tables is too
complicated, you could be relieved by OpenOffice Calc and Calc2LaTeX. The former is the
well-known free spreadsheet, while the latter is a plugin that that lets you turn a cell range
into a LATEX table. Links: http://www.openoffice.org/, http://calc2latex.sourceforge.net/.
6.1
Table/Line Spacing
A line adjusts itself to the height of the text it contains. To add some space before a line,
the trick is to start it with a \rule of 0 length and specified height. To add space after a
line, use \\ followed by optional space. Here is an example:
\begin{tabular}{lll}
one & two & three\\
0.3 centimeters & \textbf{after} &
this line\\[0.3cm]
one & two & three\\
one & two & three\\
\rule{0pt}{1.2cm}1.2 centimeters &
\textbf{before} & this line\\
\end{tabular}
6.2
two
after
three
this line
one
one
two
two
three
three
1.2 centimeters
before
this line
Table/Rule Width
\begin{tabular}{|lll|}
\hline
%\setlength{\arrayrulewidth}{5pt}
one & two & three\\
\hline
four & five & six\\
%\setlength{\arrayrulewidth}{1pt}
\hline
\end{tabular}
6.3
one
0.3 centimeters
one
four
two
five
three
six
Table/Aligning Numbers
A special case of a tabular environment is when we want to align numbers with respect
to the decimal positions.
The simplest method is using the @ column specifier, which in practice is useful in tables
33
containing only numbers. The column separator & is replaced by the decimal dot:
\begin{tabular}{r@{.}l}
3&14159\\
1&61803\\
1&41421\\
100&00000
\end{tabular}
3.14159
1.61803
1.41421
100.00000
Alternatively, use the dcolumn package, which adds the D column specifier. D has three
arguments: the separator to use in the LATEX source and in output (usually the same,
.), and the number of digits to the right of the decimal place indicator. Optionally, the
third argument can specify the number of digits to the left and to the right of the decimal
place indicator, separated by a dot. Lastly, if the third argument is -1, the material of the
column is centered around the separator.
All material in the table is typeset in math mode. To insert headings, youll have to put
the text in an \mbox.
\begin{tabular}{|D{.}{,}{4.2}|%
D{.}{.}{5}|D{.}{.}{-1}|}
\hline
\mbox{One} & \mbox{Two} &
\mbox{Three}\\
10.33 & 10.33 & 10.33\\
1000 & 1000 & 1000\\
5.1 & 5.1 & 5.1\\
3.14 & 3.14159 & 3.14159\\
\hline
\end{tabular}
6.4
One
10,33
1000
5,1
3,14
Two
10.33
1000
5.1
3.14159
Three
10.33
1000
5.1
3.14159
Using slashbox
6.5
PP
PP
Date
P
Lesson PPP
P
Stratigraphy
Chemistry
Physics
Monday
Tuesday
room A
room B
room C
room A
Lab
Lab
For many people, data files are the bread and butter of everydays work. Most data files
are simply ASCII text with columns of numbers, but some people use spreadsheets. Nearly
all spreadsheet applications can export sheets in the ASCII-based .csv file format; values
are usually separated by the ; character.
Converting a data file into a LATEX table is quite a tedious process. The following script
for Unix will convert a datafile with an arbitrary number of columns to a table. It will
also work on .csv files.
34
#!/bin/sh
# dat2tex.sh: converts tabular data to a tabular environment
if [ $# != 1 ]; then
echo "Usage: $0 <datafile>"
exit 1
fi
# is this a csv file?
grep ";" $1 > /dev/null
if [ $? = 0 ]; then
AWK="awk -F;"
else
AWK=awk
fi
# ok awk, make my day
$AWK {if (1 == FNR) { \
printf "\\begin{tabular}{"; \
for (i = 1; i <= NF; i++) {printf "l"}; \
printf "}\n"
}
for (i = 1; i < NF; i++) \
{printf $i" & "} printf $NF"\\\\ \n"} \
END {printf "\\end{tabular}\n"} $1
# end of dat2tex
7
7.1
This useful and time-saving tool is implemented in LATEX by the textmerg package. Lets
consider a simple document, in which the name, surname, and title of people were writing
to may vary. The remaining text does not change.
Well define three fields, which are the variable part of the text: \Name, \Surname, and
\Title. Their values will be gathered from an external file, data.dat.
\documentclass{article}
\usepackage{textmerg}
\begin{document}
% lets declare the variable fields:
% \Void is for empty lines
\Fields{\Name\Surname\Title-\Void}
\Merge{data.dat}{%
Dear \Title{} \Surname,\\
may I call you \Name?\\
Yours,\\
\hspace{3cm}Guido\clearpage}
\end{document}
The fourth field, \Void, isnt really necessary and its there for illustration. Its preceded
35
by a minus sign, which indicates that it can be empty in the data file. Simply put, we
want to separate the records using empty lines.
The file data.dat reads:
Guido
Gonzato
Dr.
Francesco
Mulargia
Prof.
Marie
Curie
Mme
Thats it: the resulting output will contain the merged text, one page for each recipient.
7.2
Tools/Labels
If making mail merges was easy, making labels is even trivial. Lets suppose you want to
make 20 equal labels on a 38 peeloff label sheet. The package to use, predictably, is
called labels. In this example, well make 10 plain labels and 10 boxed labels:
\documentclass[a4paper,12pt]{article}
\usepackage{labels}
\LabelCols=3
% n. of columns of labels
\LabelRows=8
% n. of rows of labels
\LeftBorder=8mm
% borders of each label
\RightBorder=8mm
\TopBorder=5mm
\BottomBorder=5mm
\LabelGridtrue
% show the grid
\numberoflabels=10 % number of labels of each type to print
% the text of the label is specified by
% the \addresslabel[]{} macro:
\begin{document}
\addresslabel[\large] % optional arguments
{\textbf{Guido Gonzato}, Ph.D.\\
\textsl{Linux system manager}}
% now on to the boxed labels
\boxedaddresslabel[\fboxsep=4mm\fboxrule=1mm]
{\textbf{Guido Gonzato}, Ph.D.\\
\textsl{Linux system manager}}
\end{document}
To make labels containing different addresses, you may use either an external file or insert
the addresses in the main file:
\documentclass[a4paper,12pt]{article}
\usepackage{labels}
\LabelCols=3
36
\LabelRows=8
\LeftBorder=3mm
\RightBorder=3mm
\TopBorder=8mm
\BottomBorder=8mm
\LabelGridtrue
\begin{document}
% use either this environment:
\begin{labels}
1$^{st}$ name
1$^{st}$ address
1$^{st}$ city, state, zipcode
2$^{nd}$ name
2$^{nd}$ address
2$^{nd}$ city, state, zipcode
3$^{rd}$ name
3$^{rd}$ address
3$^{rd}$ city, state, zipcode
\end{labels}
% or an external file containing exactly the same text:
% \labelfile{addresses.dat}
\end{document}
7.3
Tools/Default Language
LATEX default language is English, but other languages are supported. By language support
I mean the translation of terms like Chapter or Index, correct hyphenation, and the
possibility of inserting characters like c or e directly via your keyboard. (The normal
way being typing \c c and \e.)
Your LATEX distribution contains a file called language.dat (usually $TEXMF/tex/generic/
config/language.dat that contains a list of languages. Editing this file you choose the
languages for which you want hyphenation patterns.
If you are not a native English speaker, youll want to use the package babel as in the
following example:
\usepackage[italian,english]{babel}
babel alters the way some characters behave in a language-dependent way. If you
experience odd problems, insert the offending characters using the \charXX syntax.
In addition, to type accented letters and in general non-standard ASCII characters3 you
may want to use the packages inputenc and fontenc. In most cases, UTF-8 is the right
choice: remember to enable it in your editor too!
3
in computer jargon, standard ASCII characters are the characters whose code is included between 32
(space) and 126 (tilde).
37
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
A different way of inserting accented letters is configuring your editor to type those for
you. For example, I set up my editor of choice (jed) to have it insert \e whenever I type
e. I included this in my .jedrc:
define latex_mode_hook ()
{
set_abbrev_mode (1);
if ( () = abbrev_table_p ("LaTeX") )
use_abbrev_table ("LaTeX");
#ifdef WIN32
% prevent clash with movement keys
undefinekey ("`
a`
a", "LaTeX-Mode");
definekey (" \\a", "`
a`
a", "LaTeX-Mode");
#else
local_setkey (" \\a",
"`
a");
#endif
local_setkey (" \\e",
"
e");
local_setkey (" \\e",
"`
e");
local_setkey (" \\\\i{}", "`
");
local_setkey (" \\o",
"`
o");
local_setkey (" \\u",
"`
u");
}
7.4
Tools/Hyphenation
Although LATEX usually does a good job at hyphenating words, sometimes manual intervention may yield better results. Manual hyphens are specified inserting \- where we want
the word to be broken. A better way is to declare hyphenation rules:
\hyphenation{ge-o-phy-sics ge-o-lo-gy earth}
The above declaration instructs LATEX not to hyphen the word earth. Another way to
prevent a word to be hyphenated is to put it in \mbox:
Do not hyphen \mbox{internationalisation}, please. Im a masochistic.
7.5
Tools/Spell Check
LATEX is not aware of spell spelling. This task is done using external tools like ispell,
aspell or others. Under Unix, you can use ispell this way:
shell> ispell -t mydocument.tex
The -t switch instructs ispell to ignore TEX and LATEX commands. If your language is
not English, specify the appropriate dictionary with the -d switch:
shell> ispell -d italiano -t mydocument.tex
38
There are many ways of getting help with LATEX, both online and offline. The best place
to start is the CTAN site, http://www.ctan.org/tex-archive/info/.
info latex (Unix systems) gives a concise but very complete on-line summary of
commands and concepts;
http://www.ctan.org/tex-archive/info/LatexHelpBook/ is a very nice help system
for LATEX, fully integrated with Windows.
dont forget the http://groups.google.com/group/comp.text.tex/topics newsgroup:
its an invaluable source of help.
As of 2015, most GNU/Linux distributions ship with TeXLive, probably the most complete
TEX/LATEX systems. A lot of documentation is provided; on my Ubuntu machine, its
found in /usr/share/doc/texlive-doc/.
The End
39
Document Templates
A template for the class article was presented in Section 2.1. More examples are shown
in the following figures.
\documentclass[twoside,11pt]{book}
\begin{document}
\frontmatter
\begin{titlepage}
\title{The Book of Mine}
\end{titlepage}
\author{John B. Smith}
\maketitle
\tableofcontents
\mainmatter
\part{The Beginning}
\chapter{Introduction}
\section{Lets Start}
The book starts here.
\part{The End}
\backmatter
Thank you for reading this book.
\end{document}
40
\documentclass[twoside,12pt]{report}
% tables and figures at the end:
\usepackage{endfloat}
\begin{document}
\title{Final Report}
\author{John B. Smith}
\date{London, \today}
\maketitle
\begin{abstract}
This is the final report.
\end{abstract}
\tableofcontents
\listoftables
\listoffigures
\part{Start}
\chapter{Begin}
\section{Introduction}
The report starts here.
\end{document}
\documentclass[12pt]{letter}
\begin{document}
\address{My address}
\signature{Guido}
\begin{letter}{Johns address}
\opening{Dear John,}
Thank you for being my friend.
\closing{Hope to see you soon,}
\ps{P.S. Say hello to granny!}
\encl{My sons photographs!}
\end{letter}
\end{document}
41
\documentclass[a4paper]{article}
\usepackage{type1cm}
\usepackage{times}
\usepackage{color}
\usepackage{rotating}
\pagestyle{empty}
\begin{document}
\begin{sidewaysfigure}
\fontsize{2.5cm}{2.5cm}\selectfont
\centerline{\textcolor{blue}{\textbf{Please:}}}
\vskip 1cm
\fontsize{4cm}{3cm}\selectfont
\centerline{\textcolor{red}{DO NOT}}
\centerline{\textcolor{red}{SMOKE}}
\centerline{\textcolor{red}{HERE!}}
\vskip 1cm
\fontsize{2cm}{2cm}\selectfont
\centerline{\textcolor{magenta}{If you do,}}
\centerline{\textcolor{magenta}{youll be \emph{deboned!}}}
\end{sidewaysfigure}
\end{document}
42
\documentclass{article}
\usepackage[absolute,showboxes]{textpos}
\usepackage{color}
\usepackage{framed}
\usepackage{graphicx}
\setlength{\TPHorizModule}{10mm} % standard unit of length
\setlength{\TPVertModule}{\TPHorizModule}
\setlength{\TPboxrulesize}{1pt} % box line width
% start everything near the top-left corner
\textblockorigin{0mm}{0mm}
\begin{document}
\setlength{\parindent}{0pt}
\definecolor{shadecolor}{rgb}{0.9,1,1}
\begin{textblock}{5}(0,0)
% this block is 5 modules wide; height is
% automatically determined
\begin{center}
\begin{minipage}[c]{0.8 \linewidth}
\begin{shaded}
This block is placed with its top left corner at the origin
on the page, which has been set to (0mm,0mm). The internal
margin and the shading are provided by the \texttt{minipage}
and \texttt{shaded} environments.
\end{shaded}
\end{minipage}
\end{center}
\end{textblock}
\begin{textblock}{6}(10,1)
\includegraphics[width=6cm,angle=-90]{gnuplot.ps}
This picture is at (10,1). Note that rotating it
by -90 makes it overflow the margin.
\end{textblock}
\begin{textblock}{5}[0.5,0.5](2.5,8)
This block is at position (2.5,8), but because the optional
argument [0.5,0.5] has been given, it is the centre of the block
which is located at that point, rather than the top-left corner.
\end{textblock}
\begin{textblock}{3,4}(6,4)
The dimensions of this block are 3$\times$4 cm.
Its origin is position (6,4) on the page. Note that the text
overflows the margin in some cases; youll want to
use the \texttt{minipage} environment to prevent that.
\end{textblock}
\end{document}
43