Here are six packages that, while they are perhaps not among the best known, I have found to be very useful. All of them are probably available in your
distribution, but in case they are not I give links to the packages on CTAN (the Comprehensive TeX Archive Network). A PDF file containing a demonstration of the examples below is available here.
Mathtools
Mathtools extends the amsmath package with various additions, particularly for fine-tuning the typesetting of equations, and it also fixes a few problems with amsmath. To give just one example, the standard amsmath bmatrix environment centres its columns:
A = \begin{bmatrix} 12 & 3 & 0 \\ 0 & 10 &-1 \end{bmatrix}
For matrices with negative elements, such as this one, the columns can look better right justified. The bmatrix* environment provided by mathtools allows a column alignment parameter to be given, so we can right justify the columns as follows:
A = \begin{bmatrix*}[r] 12 & 3 & 0 \\ 0 & 10 &-1 \end{bmatrix*}
Unfortunately, only one alignment parameter can be given, so this command does not allow different columns to have different alignments (to achieve this, we can use the array environment instead).
The mathtools package is regularly updated.
Url
The url package provides the \url
command, which acts like \verb
except that it allows line breaks to be made when the argument is typeset. I use url whenever I need to typeset a URL or a path, in particular in my BibTeX bib files. I call the package with the hyphens option, so that line breaks will be allowed at hyphens. Example:
\usepackage[hyphens]{url} ... \footnote{\url{https://icl.bitbucket.io/hpl-ai/}} \url{http://blogs.mathworks.com/cleve/2013/01/07/george-forsythe/}
An advantage over the \verb
command is that \url
(or, if necessary, \urldef
) can be used inside another command, such as \footnote
, as in this example.
Upref
By loading the upref package you ensure that every \ref
or \eqref
reference is set in an upright font. This is normal typesetting practice, but it is not enforced by all classes. It is enforced by the SIAM class, for example.
Siunitx
The siunitx package typesets SI units according to the official rules, with just the right spacing between the number and the unit. For example, you can type
\si{kg.m/s^2}
instead of
$\mathrm{kg}\,\mathrm{m}/\mathrm{s}^2$
Even if you do not need to type SI units, you might find useful the package’s ability to round and format numbers.
Upquote
The upquote package forces left and right quotes to be typed as straight (vertical) quotes in \verb
and verbatim environments. This is usually what is required in program listings. We used upquote in MATLAB Guide.
Fancyvrb
The fancyvrb package provides a more powerful replacement for the verbatim environment, allowing the font to be specified, the environment to be boxed, an external file to be inclued in a verbatim environment, and much more. Here is example that formats the contents of the environment in blue and boldface:
\begin{Verbatim}[fontsize=\small,formatcom=\color{blue}] >> syms x, int(1/(1-x^4)) ans = atan(x)/2 + atanh(x)/2 \end{Verbatim}
The second example includes an external file, numbers the lines, and puts horizontal lines before and after the code:
\renewcommand{\theFancyVerbLine}% {\textcolor{red}{\small\arabic{FancyVerbLine}}} \VerbatimInput[frame=lines,numbers=left,fontsize=\small]% {d:/matlab/gen/gf.m}
Other packages
I have previously written about the enumitem and booktabs packages, which I also strongly recommend.