[Tex/LaTex] Which packages should I recommend to postgraduates in different academic disciplines

best practicespackages

I'm preparing a list of package recommendations for an intermediate workshop on LaTeX. I avoided providing such a list at the introductory workshop as the tendency is to then add packages without really understanding why, but it seems appropriate to provide such a list to users who have a little bit of experience with LaTeX under their belts. Participants in the workshop will primarily be postgraduate students in a variety of academic disciplines.

One side of the handout will list general package recommendations, mostly in conditional form. For example, 'enumitem for custom lists'. The other side will list more specialised packages according to academic discipline. This question concerns only the second side of the handout.

My current rather lopsided list is given below. I am trying to adhere to 2 constraints:

  • packages should be available from CTAN, preferably as part of TeX Live and MiKTeX;
  • packages should be compatible with both the LaTeX format and the pdfTeX engine.

What should I add, delete or amend?

Changes to the existing subject lists or suggestions for listings for additional subjects are equally welcome.

Subject specific listings:

packages by subject

[Obviously, the current lopsidedness consists in the length of the list for logic, linguistics and the humanities. That it is not lopsided entirely in favour of logic is thanks to responses in comments on this question!]

Note that mathtools, amssymb and ntheorem are listed under Mathematics on the first, general side of the handout as these are not really specific to mathematicians. Similarly, tikz and pgfplots are listed there under Diagrams. Obviously there are grey areas here and I'm aware that my categories are rather arbitrary. I'm more interested in making sure that key packages are on the list and that I'm not listing things which are best avoided.

Here is the general list for reference:

general packages

Code for handout (2015-05-02)

\documentclass[a4paper,welsh,british,twocolumn]{article}
\usepackage{babel}
\usepackage[utf8]{inputenc}
\usepackage[tt=lining]{cfr-lm}
\usepackage{enumitem,geometry,url}
\usepackage{csquotes}
   \MakeAutoQuote{‘}{’}
   \MakeAutoQuote*{“}{”}
\geometry{scale=.9}
\setlength{\columnseprule}{0.4pt}
\urlstyle{sf}
\title{\LaTeX{} Package Recommendations}
\author{cfr}
\date{}
\pagestyle{empty}
\begin{document}
\pdfinfo{%
  /Title    (LaTeX Package Recommendations)
  /Subject  (LaTeX)
  /Keywords (LaTeX, package)}
\maketitle\thispagestyle{empty}
\newlist{pkgdescription}{description}{1}
\setlist[pkgdescription]{font=\bfseries\ttfamily}
\newcommand*\lpack[1]{\texttt{\bfseries #1}}
\section{General}
You should almost always use:
\begin{pkgdescription}
  \item[babel] Pass \verb|welsh,british| to your class.
  \item[inputenc] Load with option \verb|utf8|; \verb|\input{ix-utf8enc.dfu}|.
  \item[fontenc] Load with option \verb|T1|.
  \item[textcomp]
  \item[microtype]
\end{pkgdescription}
\section{Document Layout}
If you are using a standard class (e.g.\ \lpack{article}, \lpack{book} or \lpack{report}):
\begin{pkgdescription}
  \item[geometry] to change page dimensions.
  \item[fancyhdr] for custom headers/footers.
  \item[titling] to use document metadata after \verb|\maketitle|.
\end{pkgdescription}
\section{Mathematics}
\begin{pkgdescription}
  \item[mathtools] for enhanced \lpack{amsmath}.
  \item[amssymb] for more symbols, scripts.
  \item[ntheorem] for enhanced theorem environments.
\end{pkgdescription}
\section{Quotes \& Quoting}
\begin{pkgdescription}
  \item[csquotes] for context- and language-sensitive quotations and quotation marks. Recommended if using \lpack{biblatex}.
\end{pkgdescription}
\section{Citations \& Bibliographies}
\begin{pkgdescription}
  \item[biblatex] Load with option \verb|backend=biber|.
\end{pkgdescription}
\section{Cross-Referencing}
\begin{pkgdescription}
  \item[fancyref] for enhanced cross-references.
  \item[cleverref] for enhanced cross-references.
\end{pkgdescription}
\section{Lists}
\begin{pkgdescription}
  \item[enumitem] for custom lists.
  \item[glossaries] for glossaries and lists of acronyms.
\end{pkgdescription}
\section{Tables}
\begin{pkgdescription}
  \item[array] for enhanced tabular environments.
  \item[booktabs] for professional quality tables.
  \item[longtable] for multi-page tables.
  \item[tabularx] for tables with specified width.
  \item[threeparttable] for tables with notes.
  \item[multirow] for cells spanning multiple rows.
\end{pkgdescription}
\section{Floats}
\begin{pkgdescription}
  \item to customise captions.
  \item[float] more options for floats.
  \item[subcaption] for sub-figures, sub-tables and sub-captions.
  \item[floatrow] for aligned sub-figures.
  \item[rotating] to rotate floats.
\end{pkgdescription}
\section{Hyperlinks}
\begin{pkgdescription}
  \item[hyperref] for hyperlinks.
  \item[bookmark] for enhanced bookmarks.
\end{pkgdescription}
\section{Images \& Colour}
\begin{pkgdescription}
  \item[graphicx] to load external images.
  \item[xcolor] for colour.
\end{pkgdescription}
\section{Diagrams}
\begin{pkgdescription}
  \item[tikz] for diagrams.
  \item[pgfplots] for plots of all kinds.
\end{pkgdescription}
\section{External Data}
\begin{pkgdescription}
  \item[datatool] for data manipulation.
  \item[textmerg] for merging text.
\end{pkgdescription}
\section{Version Control}
\begin{pkgdescription}
  \item[svn-multi] for use with \verb|subversion|.
  \item[gitinfo2] for use with \verb|git|.
\end{pkgdescription}
\appendix
\section{Biology}
\begin{pkgdescription}
  \item[texshade] for nucleotide and peptide alignments.
  Can process alignments in \textsc{msf}, \textsc{aln} and \textsc{fasta} formats.
\end{pkgdescription}
\section{Chemistry}
% Ref.: \url{}
\begin{pkgdescription}
  \item[chemformula] for formulae and reactions.
  \item[modiagram] for \lpack{tikz}-based molecular orbital diagrams.
  \item[mychemistry] for reaction schemes.
  The package depends on \lpack{chemfig} for \lpack{tikz}-based molecules.
  \item[tikzorbital] for \lpack{tikz}-based molecular orbitals, inc.\ s, p and d.
  \item[siunitx] for SI units.
\end{pkgdescription}
\section{Computer Science}
% Ref.: \url{}
\begin{pkgdescription}
  \item[algorithms] for pseudo-code.
  \item[algorithm2e] for floating pseudo-code.
  \item[listings] for source code.
  \item[minted] for highlighted source code.
\end{pkgdescription}
\section{Engineering}
% Ref.: \url{}
\begin{pkgdescription}
  \item[bloques] for simple \lpack{tikz}-based control diagrams.
  \item[circuitikz] for \lpack{tikz}-based electrical and electronic circuits.
  \item[siunitx] for SI units.
\end{pkgdescription}
\section{Humanities}
% Ref.: \url{}
\begin{pkgdescription}
  \item[bibleref] for referencing and indexing Bible verses.
  \item[classics] to cite classic works sensibly.
  \item[eledmac] for critical editions and \lpack{eledpar} for parallel texts.
  \item[ednotes] for critical editions of handwritten manuscripts.
  \item[edfnotes] for critical editions of printed texts with footnotes.
  \item[handout] for handouts consisting of textual excerpts.
  \item[poemscol] for critical editions of poetry.
  \item[schemata] for topical schemata of the kind sometimes used to illustrate conceptual structure e.g.~in Scholastic thought.
  \item[verse] for verse without annotations.
\end{pkgdescription}
\section{Linguistics}
% Ref.: \url{www.essex.ac.uk/linguistics/external/clmt/latex4ling}
\begin{pkgdescription}
  \item[gb4e] for examples, glosses etc.
  \item[expex] for enhanced examples, glosses etc.
  \item[leipzig] for standard and custom glossing abbreviations.
  \item[ot-tableau] for optimality-theoretic tableaux.
  \item[qtree] for syntactic trees without \lpack{tikz}.
  \item[forest] for enhanced \lpack{tikz}-based syntactic trees.
  \item[stmaryrd] for semantics brackets.
  \item[tikz-dependency] for \lpack{tikz}-based dependency graphs.
  \item[tipa] for IPA fonts.
\end{pkgdescription}
\section{Logic}
Ref.: \url{www.latexforlogicians.net}
\begin{pkgdescription}
  \item[algorithms] for algorithms.
  \item[gene-logic] for better spacing of maths symbols.
  \item[bussproofs] for natural deduction/Gentzen sequent proofs.
  \item[prftree] a newer alternative to \lpack{bussproofs}.
  \item[lplfitch] for ‘Fitch’-style proofs.
  \item[logicproof] for ‘Fitch’-style proofs with boxed sub-proofs.
  \item[natded] for Jaśkowski-/Kalish-Montague-style proofs.
  \item[qtree] for tree proofs without \lpack{tikz}.
  \item[forest] for enhanced \lpack{tikz}-based tree proofs.
  \item[tikz-cd] for \lpack{tikz}-based commutative diagrams.
  \item[turnstile] for turnstiles of all kinds.
\end{pkgdescription}
\section{Physics}
% Ref.: \url{}
\begin{pkgdescription}
  \item[feyn] for inline Feynman diagrams.
  \item[feynmp] or \lpack{feynmf} for Feynman diagrams.
  \item[siunitx] for SI units.
\end{pkgdescription}
\section{}
% Ref.: \url{}
\begin{pkgdescription}
  \item[]
\end{pkgdescription}
\end{document}

Best Answer

Here is the final version, updated July 2016:

\pdfminorversion=7
\documentclass[a4paper,welsh,british,twocolumn]{article}
\usepackage{babel}
\usepackage[utf8]{inputenc}
\usepackage[tt=lining]{cfr-lm}
\usepackage{enumitem,geometry,url,fancyref}
\usepackage{csquotes}
   \MakeAutoQuote{‘}{’}
   \MakeAutoQuote*{“}{”}
\geometry{scale=.9}
\setlength{\columnseprule}{0.4pt}
\urlstyle{sf}
\title{\LaTeX{} Package Recommendations}
\author{cfr}
\date{}
\usepackage{fancyhdr}
\fancyhf{}
\renewcommand*\headrulewidth{0pt}
\fancyhf[cf]{%
  Find packages in the Comprehensive \TeX{} Archive Network (CTAN) at \url{ctan.org}.
  Browse by topic at \url{ctan.org/topic}.}
\pagestyle{fancy}
\begin{document}
\pdfinfo{%
  /Title    (LaTeX Package Recommendations)
  /Subject  (LaTeX)
  /Keywords (LaTeX, package)}
\pdfcatalog{%
  /URL      ()
  /PageMode /UseOutlines}   % other values: /UseNone, /UseOutlines, /UseThumbs, /FullScreen
%[openaction <actionspec>]
\maketitle\thispagestyle{fancy}
\newlist{pkgdescription}{description}{1}
\setlist[pkgdescription]{font=\bfseries\ttfamily}
\newcommand*\lpack[1]{\texttt{\bfseries #1}}
\section{General}
You should almost always use:
\begin{pkgdescription}
  \item[babel] Pass \verb|welsh,british| to your class.
  \item[inputenc] Load with option \verb|utf8|.
  \item[fontenc] Load with option \verb|T1|.
  \item[textcomp]
  \item[microtype]
\end{pkgdescription}
\section{Document Layout}
If you are using a standard class (e.g.\ \lpack{article}, \lpack{book} or \lpack{report}):
\begin{pkgdescription}
  \item[geometry] to change page dimensions.
  \item[fancyhdr] for custom headers/footers.
  \item[footmisc] for customised footnotes.
  \item[titling] to customise title and use document metadata after \verb|\maketitle|.
  \item[titlesec] for custom sectioning and \lpack{titleps} for headers/footers.
\end{pkgdescription}
\section{Mathematics}
\begin{pkgdescription}
  \item[mathtools] for enhanced \lpack{amsmath}.
  \item[amssymb] for more symbols, scripts.
  \item[ntheorem] for enhanced theorem environments.
\end{pkgdescription}
\section{Quotes \& Quoting}
\begin{pkgdescription}
  \item[csquotes] for context- and language-sensitive quotations and quotation marks. Recommended if using \lpack{biblatex}.
\end{pkgdescription}
\section{Citations \& Bibliographies}
\begin{pkgdescription}
  \item[biblatex] Load with option \verb|backend=biber|.
\end{pkgdescription}
\section{Cross-Referencing}
\begin{pkgdescription}
  \item[fancyref] for enhanced cross-references.
  \item[cleverref] for enhanced cross-references.
\end{pkgdescription}
\section{Lists}
\begin{pkgdescription}
  \item[enumitem] for custom lists.
  \item[glossaries] for glossaries and lists of acronyms.
\end{pkgdescription}
\section{Tables}
\begin{pkgdescription}
  \item[array] for enhanced tabular environments.
  \item[booktabs] for professional quality tables.
  \item[longtable] for multi-page tables.
  \item[tabularx] for tables with specified width.
  \item[threeparttablex] for tables with notes.
  \item[multirow] for cells spanning multiple rows.
\end{pkgdescription}
\section{Floats}
\begin{pkgdescription}
  \item[caption] to customise captions.
  \item[float] more options for floats.
  \item[placeins] to control float placement.
  \item[subcaption] for sub-figures, sub-tables and sub-captions.
  \item[floatrow] for aligned sub-figures.
  \item[rotating] to rotate floats.
\end{pkgdescription}
\section{Hyperlinks}
\begin{pkgdescription}
  \item[hyperref] for hyperlinks.
  \item[bookmark] for enhanced bookmarks.
\end{pkgdescription}
\section{Images \& Colour}
\begin{pkgdescription}
  \item[graphicx] to load external images.
  \item[xcolor] for colour.
\end{pkgdescription}
\section{Diagrams}
\begin{pkgdescription}
  \item[tikz] for diagrams.
  \emph{Many} specialised extensions available.
  \item[pgfplots] for plots.
  Includes \lpack{pgfplotstable} for data tables.
\end{pkgdescription}
\section{External Data}
\begin{pkgdescription}
  \item[datatool] for data manipulation.
  \item[textmerg] for merging text.
\end{pkgdescription}
\section{Version Control}
\begin{pkgdescription}
  \item[svn-multi] for use with \verb|subversion|.
  \item[gitinfo2] for use with \verb|git|.
\end{pkgdescription}
\appendix
\newcommand*\seesci{\emph{See also \fref{sec:sci}.}}
\section{Biology}
\seesci
\begin{pkgdescription}
  \item[bracketkey] for bracketed identification keys.
  \item[dichokey] for dichotomous identification keys.
  \item[shipunov] for identification keys, classification lists and more.
  \item[texshade] for nucleotide and peptide alignments.
  Can process alignments in \textsc{msf}, \textsc{aln} and \textsc{fasta} formats.
  \item[textopo] for shaded membrane protein topology plots.
\end{pkgdescription}
\section{Chemistry}
\seesci
% Ref.: \url{}
\begin{pkgdescription}
  \item[chemfig] for reaction schemes and \lpack{tikz}-based molecules.
  \lpack{chemformula} and \lpack{mhchem} are alternatives.
  \item[chemformula] for formulae and reactions.
  \item[mhchem] for formulae and equations.
  Includes \lpack{hpstatement} (H and P Statements) and \lpack{rsphrase} (R and S Phrases).
  \item[modiagram] for \lpack{tikz}-based molecular orbital diagrams.
  \item[tikzorbital] for \lpack{tikz}-based molecular orbitals, inc.\ s, p and d.
\end{pkgdescription}
\section{Computer Science}
\emph{See also sections \ref{sec:logic} and \ref{sec:sci}.}
% Ref.: \url{}
\begin{pkgdescription}
  \item[algorithms] for pseudo-code.
  \item[algorithm2e] for floating pseudo-code.
  \item[listings] for source code.
  \item[minted] for highlighted source code.
  \item[pgf-umlcd] and \lpack{pgf-umlsd} for \lpack{tikz}-based UML diagrams.
  \item[sa-tikz] for \lpack{tikz}-based switching architectures.
\end{pkgdescription}
\section{Engineering}\label{sec:eng}
\emph{See also sections \ref{sec:phys} and \ref{sec:sci}.}
% Ref.: \url{}
\begin{pkgdescription}
  \item[bloques] for simple \lpack{tikz}-based control diagrams.
  \item[circuitikz] for \lpack{tikz}-based electrical and electronic circuits.
\end{pkgdescription}
\section{Humanities}
% Ref.: \url{}
\begin{pkgdescription}
  \item[bibleref] for referencing and indexing Bible verses.
  \item[classics] to cite classic works sensibly.
  \item[reledmac] for critical editions and \lpack{reledpar} for parallel texts.
  \item[ednotes] for critical editions of handwritten manuscripts.
  \item[edfnotes] for critical editions of printed texts with footnotes.
  \item[handout] for handouts consisting of textual excerpts.
  \item[poemscol] for critical editions of poetry.
  \item[schemata] for topical schemata of the kind sometimes used to illustrate conceptual structure e.g.~in Scholastic thought.
  \item[verse] for verse without annotations.
\end{pkgdescription}
\section{Linguistics}
% Ref.: \url{www.essex.ac.uk/linguistics/external/clmt/latex4ling}
\begin{pkgdescription}
  \item[gb4e] for examples, glosses etc.
  \item[expex] for enhanced examples, glosses etc.
  \item[leipzig] for standard and custom glossing abbreviations.
  \item[ot-tableau] for optimality-theoretic tableaux.
  \item[qtree] for syntactic trees without \lpack{tikz}.
  \item[forest] for enhanced \lpack{tikz}-based syntactic trees.
  \item[stmaryrd] for semantics brackets.
  \item[tikz-dependency] for \lpack{tikz}-based dependency graphs.
  \item[tipa] for IPA fonts. But consider Xe\LaTeX{} or Lua\LaTeX.
\end{pkgdescription}
\section{Logic}\label{sec:logic}
Ref.: \url{www.latexforlogicians.net}
\begin{pkgdescription}
  \item[algorithms] for algorithms.
  \item[gene-logic] for better spacing of maths symbols.
  \item[bussproofs] for natural deduction/Gentzen sequent proofs.
  \item[prftree] a newer alternative to \lpack{bussproofs}.
  \item[lplfitch] for ‘Fitch’-style proofs.
  \item[logicproof] for ‘Fitch’-style proofs with boxed sub-proofs.
  \item[natded] for Jaśkowski-/Kalish-Montague-style proofs.
  \item[qtree] for proof trees without \lpack{tikz}.
  \item[prooftrees] for enhanced \lpack{forest}/\lpack{tikz}-based proof trees.
  \item[tikz-cd] for \lpack{tikz}-based commutative diagrams.
  \item[tikz-inet] for \lpack{tikz}-based interaction nets.
  \item[turnstile] for turnstiles of all kinds.
\end{pkgdescription}
\section{Physics}\label{sec:phys}
\emph{See also sections \ref{sec:eng} and \ref{sec:sci}.}
% Ref.: \url{}
\begin{pkgdescription}
  \item[feyn] for inline Feynman diagrams.
  \item[feynmp] or \lpack{feynmf} for Feynman diagrams.
\end{pkgdescription}
\section{Sciences}\label{sec:sci}
% Ref.: \url{}
\begin{pkgdescription}
  \item[miller] for Miller indices.
  \item[siunitx] for SI units.
\end{pkgdescription}
\section*{Additional Symbols}\label{sec:symbols}
\begin{pkgdescription}
  \item[comprehensive] provides a more-or-less comprehensive list.
  \item[adforn,adfarrows,adfbullets] for ADF symbol fonts.
  \item[dictsym] for dictionary symbols.
  \item[marvosym] for assorted symbols.
  \item[pifont] for Zapf Dingbats.
  \item[wasysym] for the symbol font \texttt{wasy}.
\end{pkgdescription}
\end{document}

final version of package recommendations

In addition, I have a handout listing font packages and a double-sided font sampler which I created to illustrate many of the available fonts. And I've just updated David Carlisle's list of maths symbols although the legality of my version may be questionable since David has not specified a licence according to CTAN's database.