Reference and Help

Tips and Tricks

Practical tips and tricks for LaTeX users, including font handling, numbering, graphics tools, spell-checking, and more.

Always writing LaTeX in roman

If you insert the \LaTeX command in an area with a non-default font, it will be formatted accordingly. If you want to keep LaTeX written in Computer Modern roman shape, you must redefine the function. However, the naive:

\renewcommand{\LaTeX}{ {\rm \LaTeX} }

will output:

TeX capacity exceeded , sorry [ grouping levels =255].

So you need to create a temporary variable. Sadly,

\newcommand{\LaTeXtemp}{\LaTeX}
\renewcommand{\LaTeX}{ {\rm \LaTeXtemp} }

does not work either.

We must use the TeX primitive \let instead.

\let\LaTeXtemp\LaTeX
\renewcommand{\LaTeX}{ {\rm \LaTeXtemp } }

id est and exempli gratia (i.e. and e.g.)

If you simply use the forms "i.e." or "e.g.", LaTeX will treat the periods as end of sentence periods (i.e. full stop) since they are followed by a space, and add more space before the next "sentence". To prevent LaTeX from adding space after the last period, the correct syntax is either "i.e.\ " or "e.g.\ ", or else "i.e.," and "e.g.," with a comma. The comma is interpreted by LaTeX as part of a sentence, since the period is not followed by any space. In this case, "i.e.," and "e.g.," do not need any special attention. The latter style is favored, e.g., by The Chicago Manual of Style.

If the command \frenchspacing is used in the preamble, the space between sentences is always the same as that between words.

Grouping Figure/Equation Numbering by Section

For long documents the numbering can become cumbersome as the numbers reach into double and triple digits. To reset the counters at the start of each section and prefix the numbers by the section number, include the following in the preamble:

\usepackage{amsmath}
\numberwithin{equation}{section}
\numberwithin{figure}{section}

The same can be done with similar counter types and document units such as "subsection".

Graphics and Graph editors

Vector image editors with LaTeX support

It is often preferable to use the same font and font size in your images as in the document. Moreover, for scientific images, you may need mathematical formulae or special characters (such as Greek letters). Both things can be achieved easily if the image editor allows you to use LaTeX code in your image. Most vector image editors do not offer this option. There are, however, a few exceptions.

In early days, LaTeX users used Xfig for their drawings. The editor is still used by quite a few people nowadays because it has special 'export to LaTeX' features.

A newer and easier-to-use vector image editor specially tailored to LaTeX use is IPE. It allows any LaTeX command, including but not limited to mathematical formulae in the image.

A very versatile vector image editor is Inkscape. It does not support LaTeX text by itself, but you can use the plugin Textext for that. This allows you to put any block of LaTeX code in your image.

LaTeXDraw is a free and open source graphical PSTricks generator and editor. It allows you to draw basic geometric objects and save the result in a variety of formats including .jpg, .png, .eps, .bmp as well as .tex.

Another way to generate vectorgraphics is using the Asymptote language. It is a programming language which produces vector images in encapsulated postscript format and supports LaTeX syntax in any text labels.

Graphs with gnuplot

A simple method to include graphs and charts in LaTeX documents is to create it within a common spreadsheet software (OpenOffice Calc or MS Office Excel etc.) and include it in the document as a cropped screenshot. However, this produces poor quality rasterized images.

An excellent method to render graphs is through gnuplot, a free and versatile plotting software, that has a special output filter directly for exporting files to LaTeX. We assume that the data is in a CSV file (comma separated text) in the first and third column. A simple gnuplot script to plot the data can look like this:

set format "$%g$"
set title "Graph 3: Dependence of $V_p$ on $R_0$"
set xlabel "Resistance $R_0$ \[$\Omega$\]"
set ylabel "Voltage $V_p$ \[V\]"
set border 3
set xtics nomirror
set ytics nomirror
set terminal epslatex
set output "graph1.eps"
plot "graph1.csv" using 1:3   #Plot the data

Now gnuplot produces two files: the graph drawing in graph1.eps and the text in graph1.tex. The second includes the EPS image, so that we only need to include the file graph1.tex in our document:

\input{graph1.tex}

The above steps can be automated by the package gnuplottex. By placing gnuplot commands inside \begin{gnuplot}...\end{gnuplot}, and compiling with latex -shell-escape, the graphs are created and added into your document.

When you are using gnuplottex it is also possible to directly pass the terminal settings as an argument to the environment:

\begin{gnuplot}[terminal=epslatex, terminaloptions=color, scale=0.9, linewidth=2]
 ...
\end{gnuplot}

When using pdfLaTeX instead of simple LaTeX, we must convert the EPS image to PDF. If we are working with a Unix-like shell:

eps2pdf graph1.eps
sed -i s/".eps"/".pdf"/g graph1.tex

Instead of calling eps2pdf directly, we can also include the epstopdf package that automates the process. If we include a graphics now and leave out the file extension, epstopdf will automatically transform the .eps-file to PDF and insert it in the text.

\includegraphics{graph1}

Generate png screenshots

See Export To Other Formats.

Spell-checking and Word Counting

If you want to spell-check your document, you can use the command-line aspell, hunspell (preferably), or ispell programs.

ispell yourfile.tex
aspell --mode=tex -c yourfile.tex
hunspell -l -t -i utf-8 yourfile.tex

All three understand LaTeX and will skip LaTeX commands. You can also use a LaTeX editor with built-in spell checking, such as LyX, Kile, or Emacs. Another option is to convert LaTeX source to plain text and open resulting file in a word processor like OpenOffice.org or KOffice.

If you want to count words you can, again, use LyX or convert your LaTeX source to plain text and use, for example, UNIX wc command:

detex yourfile | wc

An alternative to the detex command is the pdftotext command which extracts an ASCII text file from PDF:

pdflatex yourfile.tex
pdftotext yourfile.pdf
wc yourfile.txt

New even page

In the twoside-mode you have the ability to get a new odd-side page by:

\cleardoublepage

However, LaTeX doesn't give you the ability to get a new even-side page. The following method opens up this:

The following must be put in your document preamble:

\usepackage{ifthen}

\newcommand{\newevenside}{
    \ifthenelse{\isodd{\thepage} }{\newpage}{
    \newpage
        \phantom{placeholder} % doesn't appear on page
    \thispagestyle{empty} % if want no header/footer
    \newpage
    }
}

To activate the new even-side page, type the following where you want the new even-side:

\newevenside

If the given page is an odd-side page, the next new page is subsequently an even-side page, and LaTeX will do nothing more than a regular \newpage. However, if the given page is an even page, LaTeX will make a new (odd) page, put in a placeholder, and make another new (even) page. A crude but effective method.

If you want to put a sidebar with information like copyright and author, you might want to use the eso-pic package. Example:

\usepackage{eso-pic}
...
\AddToShipoutPicture{%
  \AtPageLowerLeft{%
    \rotatebox{90}{%
        \begin{minipage}{\paperheight}
          \centering\copyright~\today{} Humble me
        \end{minipage} %
      }
    } %
  }%

If you want it on one page only, use the starred version of the AddToShipoutPicture command at the page you want it. (\AddToShipoutPicture*{...})

Hide auxiliary files

If you're using pdflatex you can create a folder in which all the output files will be stored, so your top directory looks cleaner.

pdflatex -output-directory tmp

Please note that the folder tmp should exist. However if you're using a Unix-based system you can do something like this:

alias pdflatex='mkdir -p tmp; pdflatex -output-directory tmp'

Or for vim modify your .vimrc:

" use pdflatex
let g:Tex_DefaultTargetFormat='pdf'
let g:Tex_MultipleCompileFormats='pdf,dvi'
let g:Tex_CompileRule_pdf = 'mkdir -p tmp; pdflatex -output-directory tmp -interaction=nonstopmode $\*; cp tmp/*.pdf .'
Copyright © 2026