LaTeX/Tips and Tricks

LaTeX

Getting Started

Common Elements

Mechanics

Technical Texts

Special Pages

Special Documents

Creating Graphics

Programming

Miscellaneous

Help and Recommendations

1. FAQ
2. Tips and Tricks

Appendices

edit this boxedit the TOC

Always writing LaTeX in romanEdit

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.

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


does not work as well.

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.)Edit

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.\ ".

Depending on style (e.g., The Chicago Manual of Style), a comma can be used afterwards, which 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.

If the command \frenchspacing is used in the preamble, the space between sentences is always consistent.

Grouping Figure/Equation Numbering by SectionEdit

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".

As explained in the previous sections, a LaTeX source can be used to generate both a DVI and a PDF file. For very basic documents the source is the same but, if the documents gets more complicated, it could be necessary to make some changes in the source so that it will work for a format but it will not for the other. For example, all that is related to graphics has to be adapted according to the final format. As discussed in the section about floating objects, even if you should use different pictures according to the final format, you can override this limit putting in the same folder pictures in different formats (e.g., EPS and PNG) with the same name and link them without writing the extension. There is a simple way to solve this problem:

\usepackage{ifpdf}


or, if you don't have this package, you can add the following text just after \documentclass[...]{...} :

\newif\ifpdf
\ifx\pdfoutput\undefined
\pdffalse
\else
\ifnum\pdfoutput=1
\pdftrue
\else
\pdffalse
\fi
\fi


this is plain TeX code. The ifpdf package and this code, both define a new if-else you can use to change your code according to the compiler you are using. After you have used this code, you can use whenever you want in your document the following syntax:

\ifpdf
% we are running pdflatex
\else
% we are running latex
\fi


place after \ifpdf the code you want to insert if you are compiling with pdflatex, place after \else the code you want to insert if you are compiling with latex. For example, you can use this syntax to load different packages or different graphic file formats according to the compiler.

Graphics and Graph editorsEdit

Vector image editors with LaTeX supportEdit

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. It also gives you some very basic ways of encapsulating LaTeX text and math in the image (setting the text's 'special flag' to 'special' instead of 'normal'). When exporting, all LaTeX text will be put in a .tex-file, separately from the rest of the image (which is put in a .ps file).

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. The program saves its files as editable .eps or .pdf files, which eliminates the need of exporting your image each time you have edited it.

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. Additionally since version 0.48 you can export to vectorgraphics with texts separated in a .tex file. Using this way text is rendered by the latex compiler itself.

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. In the last case the saved file contains PSTricks/LaTeX code only. Owing to that you can include any possible LaTeX code in the picture, since the file is rendered by your LaTeX environment directly.

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 textlabels.

Graphs with gnuplotEdit

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. Calc also allows you to copy-paste the charts into OpenOffice Draw and save them as PDF files.

Using Microsoft Excel 2010, charts can be copied directly to Microsoft Expression Design 4, where they can be saved as PDF files. These PDF files can be included in LaTeX. This method produces high quality vectorized 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:

gnuplot can plot various numerical data, functions, error distribution as well as 3D graphs and surfaces
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 graph.eps and the text in graph.tex. The second includes the EPS image, so that we only need to include the file graph.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.

Failure to access gnuplot from latex for Windows can be solved by making file title only in one word. Don't type my report.tex for your title file, but do myreport.tex .

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}


Using gnuplottex can cause fraudulent text-highlighting in some editors when using algebraic functions on imported data, such as:

 (2*($1)):2  Some editors will think of all following text as part of a formula and highlight it as such (because of the '$' that is interpreted as part of the latex code). This can be avoided by ending with: