I am fairly new to LaTeX and am really struggling with finding the right packages for my document. Is there a resource for 1) looking up the package (e.g. \graphicx) and finding out what it does and 2) looking up the resource (e.g. tikz pictures) and finding the necessary packages?
Also, is there a resource that explains the limits of each package (e.g. why the \graphicx package is insufficient for tikz pictures)?


5 Answers 5


The standard repository of LaTeX (and other TeX-related) packages is CTAN, the Comprehensive TeX Archive Network. The web portal has a search function, as well as categorised lists of packages, so you can see similar packages. The page for each package has a link to the package documentation, so you can see its capabilities.

  • 1
    The full alphabetical list on CTAN is also nice when you have a bunch of packages to download: ctan.org/tex-archive/help/Catalogue/entries (you can easily search a package by its name using your browser's Ctrl-F shortcut or similar). Apr 28, 2014 at 8:21

In addition to CTAN, for getting information about a known package,

texdoc <package name>

is useful. In addition, it is always available even when your ISP kills the internet in your area or you are stuck on a long-delayed train and refuse to pay the exorbitant charges they want for wifi having already paid the exorbitant charges they want for a ticket.

Your editor may also have a function which can display TeX documentation and/or provide basic documentation of its own.

Thanks to Claudio Fiandrino for pointing out texdoc's -l option which will list all documentation associated with a package, together with its location. This is useful if texdoc <pkg name> fails to bring up the main documentation, you want to view a sample file rather than the manual, or you prefer to read the documentation in another language. For example, for some packages I get the German version by default even though an English translation is available.

Here are the results for enumitem:

$ texdoc -l enumitem
 1 /usr/local/texlive/2013/texmf-dist/doc/latex/enumitem/enumitem.pdf
   = Package documentation
 2 /usr/local/texlive/2013/texmf-dist/doc/latex/translation-enumitem-de/enumitem-de.pdf
   = [de] The translation itself
 3 /usr/local/texlive/2013/texmf-dist/doc/latex/enumitem-zref/enumitem-zref.pdf
   = Package documentation
 4 /usr/local/texlive/2013/texmf-dist/doc/latex/enumitem/README
   = Readme
 5 /usr/local/texlive/2013/texmf-dist/doc/latex/enumitem-zref/README
   = Readme
Please enter the number of the file to view, anything else to skip:

This allows you to select the particular document you require without having to invoke texdoc a second time. Entering anything other than the numbers 1-5 simply exits the programme.

texdoc -m <pkg name>

invokes 'mixed mode'. If pkg name yields only one possible result, texdoc simply opens that document in a viewer. If pkg name produces several possible results, texdoc lists the possibilities and asks you which you wish to view.

To learn more about the options available, you can (of course) run:

texdoc texdoc

adding the -l or -m flag as appropriate.

texdoc -h

provides a brief summary of the available options:

$ texdoc -h
Usage: texdoc [OPTION]... NAME...
  or:  texdoc ACTION

Try to find appropriate TeX documentation for the specified NAME(s).
Alternatively, perform the given ACTION and exit.

Current settings: --view, --interact (default).

  -h, --help            Print this help message.
  -V, --version         Print the version number.
  -f, --files           Print the list of configuration files used.
  --just-view file      Display file, given with full path (no searching).

  -w, --view            Use view mode: start a viewer. (default)
  -m, --mixed           Use mixed mode (view or list).
  -l, --list            Use list mode: show a list of results.
  -s, --showall         Use showall mode: show also "bad" results.

  -i, --interact        Use interactive menus. (default)
  -I, --nointeract      Use plain lists, no interaction required.
  -M, --machine         Machine-readable output for lists (implies -I).

  -q, --quiet           Suppress warnings and most error messages.
  -v, --verbose         Print additional information (eg, viewer command).
  -d, --debug[=list]    Activate debug output (restricted to list).

Files: <texmf>/texdoc/texdoc.cnf, see output of the --files option.
Report bugs to <[email protected]>.
Full manual available via `texdoc texdoc'.

For a very brief description and information concerning packaging etc. in TeX Live, you can also use tlmgr info <pkg name>. For example:

$ tlmgr info enumitem
package:     enumitem
category:    Package
shortdesc:   Control layout of itemize, enumerate, description.
longdesc:    This package provides user control over the layout of the three basic list environments: enumerate, itemize and description. It supersedes both enumerate and mdwlist (providing well- structured replacements for all their funtionality), and in addition provides functions to compute the layout of labels, and to 'clone' the standard environments, to create new environments with counters of their own.
installed:   Yes
revision:    24146
sizes:       doc: 381k, run: 45k
relocatable: Yes
cat-version: 3.5.2
cat-date:    2011-09-28 17:37:11 +0200
cat-license: lppl
collection:  collection-latexextra

I would add The TeX Catalogue Online, that has more detailed information, links to the packages directories on CTAN, direct links to the doc, and topical page. Here is how a typical page (devoted to the enumitem package) looks like:enter image description here

  • The link is now dead: "550 Failed to change directory."
    – schremmer
    Nov 16, 2018 at 18:01
  • @schremmer: I've updated the link.
    – Bernard
    Nov 16, 2018 at 19:47

A comprehensive list has its place, and others have made great suggestions. But for a person starting out a you-should-know list is also useful. Here is such a list (I don't know of a more recent one).


On OSX (Mac), I use TexLive (current distribution 2013), which has a useful interface for checking which packages are installed, updating ALL or individually AND quickly accessing documentation (right-click on package), negating need to access webpages and download packages / documentation which are possibly / probably already on a system.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .