LaTeX/Tips and Tricks

From Wikibooks, the open-content textbooks collection

< LaTeX
Jump to: navigation, search

Contents

[edit] 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.\".

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.

[edit] 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".

[edit] Generic header

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 according to the compiler.

[edit] Graphics and Graph editors

[edit] 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 some 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 of .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.

[edit] 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:

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.

When using pdfLaTeX instead of simple LaTeX, we must convert the EPS image to PDF and to substitute the name in the graph1.tex file. If we are working with a Unix-like shell, it is simply done using:

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

With the included tex file we can work as with an ordinary image.

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}

This way, if we choose to output to PS or DVI, the EPS version is used and if we output to PDF directly, the converted PDF graphics is used. Please note that usage of epstopdf requires compiling with latex -shell-escape.

Note: Emacs AucTex users might want to check out Gnuplot-mode.

[edit] Spell-checking and Word Counting

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

ispell yourfile.tex
aspell -c yourfile.tex

Both understand LaTeX and will skip LaTeX commands. You can also use LyX — graphical LaTeX editor with built-in spell checking. Last 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:

1. pdflatex yourfile.tex
2. pdftotext yourfile.pdf
3. wc yourfile.txt

[edit] 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}
\usepackage{color}
 
\newcommand{\newevenside}{
	\ifthenelse{\isodd{\thepage}}{\newpage}{
	\newpage
	\textcolor{white}{placeholder} 
	\thispagestyle{empty}
	\newpage
	}
}

To active 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.



Previous: Collaborative Writing of LaTeX Documents Index Next: General Guidelines