33

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[caption] 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}
cfr
  • 198,882
  • 1
    Some years ago, I created this small showcase for teachers as a printable gift, it might be of some help for you or it could serve as an inspiration, if you don't mind a little bit of Czech language. I can provide the codes if those should help somehow. But these pages don't cover all the key fields and packages, I selected some I like. – Malipivo Apr 06 '15 at 16:22
  • 1
    In philosophy, theology, and classics, classics is useful for avoiding references that suggest Aristotle wrote something new in 2012, and schemata is great for outlining complex texts and arguments. – Thérèse Apr 06 '15 at 17:09
  • This could start to take more than one side of a handout, but maybe you could change “Linguistics” to “Languages and Linguistics,” because there are some remarkable packages to bring to the attention of those working in particular languages (e.g., impnattypo for French). – Thérèse Apr 06 '15 at 17:37
  • For the humanities, it’s good to find out early that the verse package enhances the standard verse environment; I produced some ugly hacks until I came across that package. – Thérèse Apr 06 '15 at 18:47
  • @Thérèse Thanks for those suggestions. I was wondering about verse as I've used that myself. Just couldn't decide how key it was but if you use it too, that probably means it is of significant use. I think I'll skip impnattypo as much of it seems to depend on LuaTeX. Does classics do anything you can't do with biblatex's classical? I'll take a look at schemata - I've not come across that before. – cfr Apr 06 '15 at 18:52
  • @Thérèse I suppose I should add poemscol in that case, too... – cfr Apr 06 '15 at 18:54
  • \mathtools for math perhaps? –  Apr 06 '15 at 19:25
  • @ChristianHupfer Thanks - that's actually in my general list on the first page. Because it isn't really specific to mathematics as a discipline. As I say, I realise this is a bit arbitrary. – cfr Apr 06 '15 at 19:49
  • @cfr: As arbitrary as my question about the most useful commands ;-) (+1 anyway) –  Apr 06 '15 at 19:52
  • @ChristianHupfer There you go ;). – cfr Apr 06 '15 at 19:54
  • @cfr: Well, I had a similar question in my mind some weeks ago, but I dropped it ;-) –  Apr 06 '15 at 19:55
  • @Malipivo That's very nice. You should add it to one of the showcase questions here! Are those packages for circuits better than circuitikz? I've added texshade, chemfig and tikz-dependency. (Great to have something for biology!) – cfr Apr 06 '15 at 20:14
  • @ChristianHupfer Very sensible ;). – cfr Apr 06 '15 at 20:14
  • @cfr To circuitikz. Go ahead, I exchanged several emails with the authors of the ElTeX and M4 macros, so I wanted to emphasize their work. To mychemistry. I like both those packages. I should have added more examples about genuine math typesetting, some drawing from descriptive geometry, a preview of creation of presentations & scientific posters, a snippet from dictionary typesetting (e.g. EN<->FR or EN<->Latin), more on games (chess, bridge, sudoku, crosswords) and a set of figures consisting an animation (in a similar way how movie consists of frames)... Good luck with your workshop! – Malipivo Apr 06 '15 at 21:25
  • What is "biblatex's classical"? (Not that I'd heard of the classical package either.) – jon Apr 06 '15 at 22:01
  • @jon You can put entrysubtype with a value of classical in a bib entry and biblatex will format it differently. This is especially important for author-year styles where you otherwise end up with Kant writing the Groundwork in 2009 or something. Although, thinking about it, I think it requires a non-standard style. You can certainly do some of what classics does with biblatex and the right style, though, and some, maybe with standard styles. But classics might just be easier... – cfr Apr 06 '15 at 23:39
  • 1
    Well, I'd consider putting classics on the list given that it is not tied to a specific (set?) of bibliography styles and given the audience. (However, I think I'll stick to my own xparse-based citation commands for pre-modern texts since xparse offers more flexibility.) – jon Apr 07 '15 at 00:00
  • @jon You should share ;). I've added classics. – cfr Apr 07 '15 at 00:18
  • 1
    Ha, indeed. I have thought about tidying them up. By "flexible" what I secretly meant was I can do all kinds of ad hoc things that are neither wise nor consistent. I have toyed with macro-implementing macros, but they become pretty brittle pretty quickly (my fault, I assume). They're now mostly for medieval law / jurists, too, which is (unsurprisingly) pretty niche ... and very unstandardized/-able. It's on the "long" TODO list though. – jon Apr 07 '15 at 02:47
  • @jon But I don't have any packages for jurists, medieval or not! – cfr Apr 07 '15 at 02:50
  • 1
    Touché! Well, summer is almost here.... – jon Apr 07 '15 at 02:54
  • To descriptive geometry. I would probably introduce Metapost Zoonek. pgfplots(+tikz) package(s) helped me a lot in production. To math. I would briefly introduce AMSTeX in general. To dictionaries. You are covering the tipa package, that's a great start. Well, I would also mention the fontspec package (in relation to XeTeX & LuaTeX). I believe that my students needed BibLaTeX a lot back at my times. It's a powerful tool these days. To physics. PSTricks contain fine packages, in production I'm often in need of pst-barcode. :-) – Malipivo Apr 07 '15 at 08:04
  • 3
    And you might introduce TeX.SX as a starting point to solve almost all the TeX & friends mysteries. :-) – Malipivo Apr 07 '15 at 08:12
  • 1
    For linguistics, I would add expex as a more powerful example/glossing package (though with a steeper learning curve than gb4e). I would also discourage the use of tipa and instead encourage the use of Unicode IPA fonts with Xe/LuaLaTeX, which can be entered using an IPA keyboard layout and make moving data between (La)TeX and other Unicode linguistics applications much easier (http://tex.stackexchange.com/q/224164/42880). I'd also add leipzig for standardizing and collecting gloss abbreviations and ot-tableau for Optimality Theory tableaux. – Jason Zentz Apr 09 '15 at 15:14
  • @JasonZentz Thanks. Would you suggest starting with expex and not bothering with gb4e? I'm explicitly avoiding packages which require anything but pdfTeX as engine and LaTeX as format. I mention their existence, but I need to constrain the field somewhat. ot-tableau looks good! Will look at leipzig later. – cfr Apr 09 '15 at 16:27
  • 1
    @cfr, it's worthwhile to mention gb4e — a lot of linguists do just fine with it depending on what kind of examples they work with. If you need finer control over spacing, line breaking, formatting, etc., or need more than 3 lines in your interlinear glossing, then expex is the way to go. Alan Munn gives a nice comparison here: http://tex.stackexchange.com/a/77941/42880. Here are some questions that highlight where expex is more capable/flexible than gb4e: http://tex.stackexchange.com/q/84410/42880, http://tex.stackexchange.com/q/115591/42880, http://tex.stackexchange.com/q/49579/42880. – Jason Zentz Apr 09 '15 at 18:53
  • @JasonZentz Thanks. That's what I wanted to know. (I mention qtree as well as forest for the same reason.) I'll put expex down for 'enhanced...' ;). I have almost as much for linguistics now as I do for logic! – cfr Apr 09 '15 at 20:31
  • I am a Chemistry grad student; I don't draw a lot of organics, but I do use \usepackage[version=3]{mhchem} for typesetting reactions and siunitx as you mention. It might be worth noting that \bibliographystyle{achemso} or the achemso package are going to give the right format for bibliographies. I forget why I started adding \usepackage[sort&compress,numbers,super]{natbib}%, but I guess it helped keep achemso happy.

    https://en.wikibooks.org/wiki/LaTeX/Chemical_Graphics has some tips

    – repurposer Apr 13 '15 at 18:39
  • @repurposer Thanks! I'm covering biblatex in the session rather than bibtex. (We did the standard thebibliography last time but, predictably, nobody cared very much. Especially since it can't talk to Mendeley.) Is it useful to mention mhchem as well as mychemistry? – cfr Apr 13 '15 at 23:08
  • @cfr I don't know anything about mychemistry, but I would try about anything once. As far as bibliography, I am using BibTeX, with Zotero as a reference manager. Mendeley would, as far as I know, export a .bib file, which I call using \bibliography{library} – repurposer Apr 13 '15 at 23:34
  • @repurposer Yes, but we're covering biblatex/biber so bibtex is not going to be relevant. I asked about mychemistry because it uses mhchem, apparently, and I have been generally not listing included packages unless independently necessary. – cfr Apr 13 '15 at 23:46
  • I think biblatex should be added in humanities. It could be combined with biblatex-source-di­vi­sion, biblatex-manuscripts-philol­ogy and biblatex-anonymous if you study text of antic or medieval periods – Maïeul Apr 15 '15 at 08:37
  • @Maïeul Thanks. I'm already listing biblatex in the generic section. – cfr Apr 15 '15 at 12:22
  • ok, so just mention that there is biblatex package specific by topic. – Maïeul Apr 15 '15 at 18:13
  • @Maïeul Yes, I'm going to tell them about choosing different styles - both standard and extensions. I'm not including that detail on this handout because we have a whole section of the workshop on biblatex/biber. – cfr Apr 15 '15 at 18:31
  • ok, that is perfect. – Maïeul Apr 15 '15 at 18:34
  • oh, for people in classical philology (and maybe other domains) I thinks the handout package could be useful. – Maïeul Apr 15 '15 at 18:35
  • and bibleref is also useful for people in theology / christian history – Maïeul Apr 15 '15 at 18:35
  • @Maïeul Thanks! I've added handout and bibleref. – cfr Apr 15 '15 at 22:35
  • "package should be compatible with pdfTeX engine". As author in the field of humanities, I consider that the best engines for this topic are LuaTeX / XeTeX which are native unicode. – Maïeul Apr 16 '15 at 08:49
  • ps : for humanities, see also my french book http://geekographie.maieul.net/95 – Maïeul Apr 16 '15 at 08:49
  • @Maïeul Thanks again. I do tell students about the other engines in the first workshop and will almost certainly say something again in the second when I talk about fonts and babel. But I want to stick to packages for this list which they can use immediately with the documents they are creating during the workshop. (I can't cover everything and, to some extent, I'm told what to cover - I requested a couple of changes and got them, but the basic syllabus was already determined.) Also, your book looks nice but I think I better stick to English resources... ;). (Or Welsh, I guess.) – cfr Apr 16 '15 at 12:04
  • For humanities, sepfootnotes for those who indulge in numerous or lengthy footnotes or endnotes. – n.r. May 02 '15 at 02:06
  • @nicolai.rostov Thanks. I'm not sure that is something I should be encouraging! But I should probably add footmisc to the list for generic document layout. – cfr May 02 '15 at 02:35
  • But the package doesn't encourage that at all. It's simply useful to keep one's code cleaner. Many \footnote commands may disrupt reading LaTeX code. – n.r. May 02 '15 at 14:33
  • @nicolai.rostov My point was just that you should not have many or lengthy footnotes. At least, so I've been taught. – cfr May 02 '15 at 16:35
  • I find xparse very useful for creating custom commands fitting my needs in physics. Additionally, cleveref for referencing. – riddleculous Mar 28 '16 at 12:02
  • You could also add some important things such as: bigfoot, tabu, xindy, polyglossia and siunitx. And even memoir and Koma – skan Nov 19 '16 at 13:06
  • @skan I've never used bigfoot so don't know if it is useful or not. What does it do? siunitx is included. polyglossia doesn't work with pdfTeX (which is assumed here). I would never, ever recommend tabu and would tell any student who asked to avoid it like the plague. xindy isn't a package. Neither is memoir and Koma includes packages, but usually I'd recommend using the class if people want to use it significantly. (Classes are covered earlier in the workshop.) – cfr Nov 19 '16 at 13:45
  • @Malipivo Author says don't recommend mychemistry, by the way, so maybe you should look at alternatives. – cfr May 30 '17 at 00:24
  • @cfr Thank you for letting me know! – Malipivo May 15 '19 at 16:08

3 Answers3

9

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.

cfr
  • 198,882
  • 3
    Please don't recommend the mychemistry package! It is obsolete and everything it does is completely covered by chemfig. – cgnieder Jun 13 '15 at 09:10
  • 1
    Also you could give a note that chemformula and mhchem are alternatives for the same kind of application. I explained this in German in detail in a blog post series (which I'm planning to translate into English some time…) – cgnieder Jun 13 '15 at 09:14
  • @clemens It is too late for this year, but I will make a note of this for next time. I basically am entirely in the hands of what people told me in comments or what I gleaned from CTAN as chemistry is not something I have ever typeset myself. I'm sorry I didn't realise the status of the package a few days ago, but hopefully people will find out for themselves if it is relevant to them. Thanks very much for letting me know. – cfr Jun 13 '15 at 16:52
  • @clemens Please see 2016 version above, incorporating your suggestions. Thanks again! – cfr Jul 18 '16 at 16:54
  • @cfr I would reiterate Jason Zentz's comment about TIPA. Given the existence of XeLaTeX and LuaLaTeX it's bordering on bad advice to tell linguists to use pdfLaTeX + TIPA for phonetics. I understand your desire to stick to one engine, but ideally it would be better to steer people away from TIPA in my opinion. I also find not recommending titlesec leaves people with no reasonable interface to modify section headings. (I know you don't like titleps, but there is no good alternative to titlesec that I know of. – Alan Munn Jul 18 '16 at 17:30
  • @AlanMunn I'm not unsympathetic to the tipa point. But I don't feel I can recommend LuaTeX given it is beta. And I don't feel comfortable recommending something which I myself dare not leave to run unattended, which is the case for XeTeX. I could just omit the suggestion, but I'm not clear how helpful that would be. Maybe it would be better to suggest nothing than something sub-optimal, though. As for titlesec: it isn't that I dislike it so much as that I find it impossible to use. Perhaps there simply is no reasonable interface for modifying section headings. – cfr Jul 18 '16 at 20:23
  • @cfr Well I certainly wouldn't leave it out altogether. I'm not sure about your comment about leaving XeTeX unattended, though or, frankly about titlesec which I use all the time without much trouble. I know this is supposed to be as compact as possible, but perhaps it would be help to have a section on XeLaTeX? (Personally I use LuaLaTeX for everything these days, with XeLaTeX as a fallback.) – Alan Munn Jul 18 '16 at 20:29
  • @AlanMunn Well, I do tell them about XeLaTeX. It just isn't a package so it isn't on this sheet. XeLaTeX has a tendency to go into infinite loops often. When it does that, it drives my CPUs more and more frenetically until I kill the process. Admittedly, my computer would probably shut down if the temperature became critical and perhaps the OS would do something even before that, but I'd rather not count on this. So I'll leave pdfTeX or luaTeX to compile and do something elsewhere, but not XeTeX. – cfr Jul 18 '16 at 21:33
  • Weird. Anyway what I meant about a section on XeLaTeX was a section about packages that would be relevant to those engines especially fobtspec vs font/inputenc. – Alan Munn Jul 18 '16 at 22:27
  • @AlanMunn I see your point. I don't see any good way to integrate that without confusing most of the class in order to possibly benefit it minority. (And probably benefit nobody given that I don't think anybody in linguistics is at all likely to be using LaTeX.) – cfr Jul 18 '16 at 22:35
  • @AlanMunn OK. I give in. Partly anyway. I'm not going to get into packages for Xe/LuaTeX, but I've added titlesec. (Also, I've added a note for the tipa case which suggests the Xe/Lua route.) – cfr Jul 19 '16 at 15:26
  • In sec. E (or F?) you may like to add my metrix package and menukeys in C :-) and how about publishing you code at GitHub (and/or CTAN)? – Tobi Jul 19 '16 at 15:28
  • @Tobi Thanks. Too late for this year, I'm afraid. But I will bear the suggestions in mind for next year. Although it is getting a bit tricky to fit more on the page. I'll have to think about reducing the spacing, I think. I guess there is a question mark in my mind about how specialised metrix is. Really specialised stuff I think people will need to find on their own. I'm trying to list a few core packages or generally useful packages for each disciplinary area to give people a sense of what's available, really. – cfr Jul 19 '16 at 18:05
  • I would recommend adding chemmacros under Chemistry, it had a lot of useful features, and accompanies chemformula quite weill. – PTNobel Jul 19 '16 at 18:47
  • @PTNobel I've been following the author's recommendations regarding the listing of packages for chemistry. – cfr Jul 19 '16 at 21:27
  • 1
    @clemens Should I list chemmacros as well as/instead of chemformula? Too late for this year.... – cfr Jul 19 '16 at 21:27
  • Well metrix is quite specialized I guess … it’s up to you to decide wether it’s too specialized ;-) – Tobi Jul 20 '16 at 14:31
  • @cfr chemmacros is not an alternative to chemformula :) chemmacros provides support for many needs chemists may have so I guess it would be a good fit. About chemistry packages: https://www.tug.org/members/TUGboat/tb36-3/tb114niederberger.pdf – cgnieder Jul 21 '16 at 10:09
  • Nice list. I think you missed some important things: bigfoot, tabu, xindy, polyglossia and siunitx. And even memoir and Koma. It would be great to hear what is the best combination of all of them. – skan Nov 19 '16 at 13:02
  • What of this packages are not needed anymore if we use memoir or KOMA? (because they are automatically included or even replaced by better options) – skan Nov 19 '16 at 13:19
  • @skan See my comment above regarding those packages and classes. The packages on document layout explicitly say if using a standard class. Are any others unnecessary with Memoir and Koma? There simply is no best combination as it depends entirely what you need. However, avoiding tabu is a safe recommendation regardless! – cfr Nov 19 '16 at 13:49
  • Why do we have to avoid tabu?. I thought it had the combined functionalities of many other. – skan Nov 19 '16 at 23:35
  • @skan It will be updated at some point and there will be no backwards compatibility, because the author doesn't care about it. In the meantime, the author refuses to correct serious bugs in the current version. By all means use it if you do not mind stuff breaking, but I am not going to recommend it to anybody, especially postgraduates working on long-term projects! – cfr Nov 20 '16 at 00:14
  • OK, thanks. What do you suggest instead? – skan Nov 20 '16 at 00:24
  • @skan I don't know what is so good about it since I avoid it so I've only used it to answer a question once or twice, where the question used it. I can't remember what it does. I use longtable, tabularx, threeparttablex, booktabs, array, multirow etc., but makecell is nice, too. But it always depends what you need. There is never a 'for tables, use ...'. (Even: 'for trees, use Forest' is false if you need algorithmic graph drawing courtesy of LuaTeX.) – cfr Nov 20 '16 at 00:52
  • @cfr textcomp should not be on that list. As per the package's landing page on CTAN, "Note that the pack­age has been adopted as part of the LATEX dis­tri­bu­tion; the ref­er­ence here is to the orig­i­nal pack­age, which is now lit­tle used (if at all)." – Dr Krishnakumar Gopalakrishnan Feb 04 '19 at 18:06
  • @Krishna Why? So it is in the LaTeX distribution. So what? I don't see why that means it shouldn't be listed as useful. – cfr Sep 29 '19 at 18:35
  • @cfr it is listed as an obsolete package on CTAN – Dr Krishnakumar Gopalakrishnan Sep 29 '19 at 18:38
  • @Krishna I'm not recommending the obsolete one, obviously. I'm recommending the one which is in the LaTeX distribution. – cfr Sep 29 '19 at 18:45
  • @cfr Does the new package have to be loaded with a standard usepackage declaration? – Dr Krishnakumar Gopalakrishnan Sep 29 '19 at 18:46
  • @Krishna Try \documentclass{article} \begin{document} \textleaf \end{document} and you'll get an error. Load textcomp for it to go away. – cfr Sep 29 '19 at 18:49
  • @cfr thank you. That's very clear. The current ctan entry for the package is confusing at best. It appears to say as though the package's functionality has been absorbed into the LaTeX kernel and that explicit loading of that package isn't essential. There is no useful documentation for the commands provided, and the word "distribution" is loosely used. In my mind, miktex and TL are the "distributions". Did they mean kernel? – Dr Krishnakumar Gopalakrishnan Sep 29 '19 at 18:53
  • @Krishna I think they mean: code released and maintained by the LaTeX Project. – cfr Sep 29 '19 at 18:59
  • @cfr sigh. Poor word choices there. Also missing the "present as" line for miktex and TL. – Dr Krishnakumar Gopalakrishnan Sep 29 '19 at 19:01
5

As an applied mathematician / computer science guy, I had the requirement to plot (lots of!) data series, to plot functions given by expression, and to typeset numerical tables (often with additional, automatically generated post-processings). Plotting includes surfaces or contour plots for 2d functions.

pgfplots and pgfplotstable excel at these applications and many guys (not only applied mathematicians) use it to simplify their life.

http://pgfplots.sourceforge.net/

Disclaimer: I wrote pgfplots and pgfplotstable.

EDIT I see that you have already referenced pgfplots under "diagrams". Nevertheless, the combination of both might be a good recommendation for those who have to deal with numerical tables and their postprocessing.

  • Hmmm... yes. I wondered whether pgfplotstable should be listed additionally. I've changed the listing under Diagrams to say 'pgfplots for plots. Includes pgfplotstable for data tables.' I think these packages definitely belong on the general side of the sheet. I've used pgfplots, for example, and I am neither a scientist nor a mathematician ;). (Thanks for the package!) – cfr May 03 '15 at 16:00
1

miller.sty is very useful in crystal chemistry/crystallography.

asymptote.sty for incorporating asymptote figures.

Dr Darren
  • 179
  • 3
    Welcome to TeX.SX! I think, you should elaborate on your answer. –  May 03 '15 at 12:06
  • This does not provide an answer to the question. To critique or request clarification from an author, leave a comment below their post - you can always comment on your own posts, and once you have sufficient reputation you will be able to comment on any post. – Henri Menke May 03 '15 at 12:29
  • Thanks! I've added miller to a new section for the sciences in general, along with siunitx. I'm less sure about asymptote because it relies on an external programme which I certainly don't have time to talk about during the workshop (and know nothing about). – cfr May 03 '15 at 13:37
  • 1
    @HenriMenke I disagree that this is not an answer. It is certainly a short answer but it provides information not currently present in the comments and it addresses one aspect of the question in a useful way. It certainly is not either a critique of the question or a request for clarification. A little elaboration would, however, certainly be welcome as Christian Hupfer suggests. – cfr May 03 '15 at 13:40