\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{tools-overview.tex}[2015/03/31 v1.0 Tools overview]

% Copyright (C) 2006-2025
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
% Copyright (c) 2006-2014 Heiko Oberdiek
%           (c) 2015-2019 The LaTeX Project
%
% This file is part of the Standard LaTeX `Tools Bundle'.
% -------------------------------------------------------
%
% It may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
% of this license or (at your option) any later version.
% The latest version of this license is in
%    https://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% The list of all files belonging to the LaTeX `Tools Bundle' is
% given in the file `manifest.txt'.
%
% This file is derived from `tools.tex' and `tools-overview.cls'
% from the `latex-tds' bundle maintained by Heiko Oberdiek.
%
\documentclass[a4paper,12pt]{article}

% page layout
\usepackage[
  ignoreall,
  hmargin=1in,
  vmargin={.75in,1in},
]{geometry}

\pagestyle{empty}

\usepackage{calc}[2005/08/06]

\usepackage{hyperref}
\hypersetup{
  colorlinks,
  filecolor=blue,
  pdftitle={LaTeX's Tools Bundle},
  pdfsubject={Overview},
  pdfauthor={Heiko Oberdiek},
  pdfcreator={Project `latex-tds'},
}
\title{Contents of \LaTeX's Tools Bundle}

\makeatletter

\let\TO@document\document
\let\TO@enddocument\enddocument

\def\document{%
  \TO@document
  \maketitle
  \toks@={}%
  \setlength{\maxlen}{0pt}%
}
\newlength{\maxlen}
\def\enddocument{%
  \begin{list}{}{%
    \setlength{\leftmargin}{\maxlen + \labelsep}%
    \setlength{\labelwidth}{\maxlen}%
    \setlength{\partopsep}{0pt}%
  }%
    \the\toks@
  \end{list}%
  \TO@enddocument
}
\newcommand{\entry}[2]{%
  \outline{#1}%
  \toks@\expandafter{%
    \the\toks@
    \item[%
      \href{file:#1.pdf}{\printpackage{#1}}%
      \hfill
    ]%
    #2%
  }%
  \setlength{\maxlen}{%
    \maxof{\maxlen}{\widthof{\printpackage{#1}}}%
  }%
  \global\maxlen\maxlen
}
\newcommand*{\printpackage}[1]{%
  \textbf{\large #1:}%
}
\newcommand*{\outline}[1]{%
  \pdfoutline
    attr {/C[0 0 1]}
    user {%
      <<%
        /S/GoToR%
        /F(#1.pdf)%
        /NewWindow true%
        /D[0/XYZ null null null]%
      >>%
    }%
  {[#1]}\relax
}
\renewcommand*{\maketitle}{%
  \begingroup
    \par
    \centering
    \bfseries
    \LARGE
    \@title
    \par
  \endgroup
  \vspace{2em}%
}

\providecommand*{\cs}[1]{%
  \texttt{\textbackslash#1}%
}

\makeatother

\begin{document}
\entry{afterpage}{%
  Place text after the current page.
}%
\entry{array}{%
  Extended versions of the environments array, tabular and tabular*.
}%
\entry{bm}{%
  Access bold math symbols.
}%
\entry{calc}{%
  Infix arithmetic expressions. Contributed to the distribution by
  Kresten Krab Thorup and Frank Jensen.
}%
\entry{dcolumn}{%
  Alignment on \emph{decimal points} in tabular entries. Requires array.
}%
\entry{delarray}{%
  Adds \emph{large delimiters} around arrays. Requires array.
}%
\entry{enumerate}{%
  Extended version of the enumerate environment; historical, use
  \textsf{enumitem} instead.
}%
\entry{fileerr}{%
  Suite of small files which may be used to control \TeX{}'s
  missing file error loop.
}%
\entry{fontsmpl}{%
  Package and test file for producing \emph{font samples}.
}%
\entry{ftnright}{%
  Place footnotes in the right hand column in two-column mode.
}%
\entry{hhline}{%
  Finer control over horizontal rules in tables. Requires array.
}%
\entry{indentfirst}{%
  Indent the first paragraph of sections etc.
}%
\entry{layout}{%
  Produces an overview of the layout of the current document.
}%
\entry{longtable}{%
  Multipage tables. (Does not require array, but uses the extended
  features if both are loaded.)
}%
\entry{multicol}{%
  Typeset text in columns, with the length of the final columns
  \emph{balanced}.
}%
\entry{rawfonts}{%
  Preload fonts under the old internal font names of \LaTeX{}2.09.
  Not useful today.
}%
\entry{shellesc}{%
 Unified interface to ``shell escape'' i.e., access to system commands
 based on \texttt{\string\write18} or \texttt{os.execute} depending
 on the system in use.
}%
\entry{showkeys}{%
  Draft mode showing the \emph{keys} used by \cs{label}, \cs{ref}, \cs{cite} etc.
}%
\entry{somedefs}{%
  Selective handling of package options. (Used in rawfonts.sty.)
  Not useful today.
}%
\entry{tabularx}{%
  Defines tabularx environment (similar to tabular*) but modifies
  column widths, not inter-column space, to achieve a desired
  table width.
}%
\entry{theorem}{%
  Flexible definition of \emph{theorem-like} environments; historical, use
  \textsf{amsthm} instead.
}%
\entry{trace}{%
  The package helps to suppress and to control the amount of tracing
  output (\cs{tracingall}) by taming calc and making NFSS less noisy.
}%
\entry{varioref}{%
  \emph{Smart} handling of page references.
}%
\entry{verbatim}{%
  Flexible version of verbatim environment; historical, use
  \textsf{fancyvrb} instead.
}%
\entry{xr}{%
  eXternal References. Extend \cs{ref} to access \cs{label} commands in
  other documents.
}%
\entry{xspace}{%
  Smart space command that avoids the common mistake of missing
  spaces after command names.
}%

\end{document}
