\documentclass{article} % \documentclass[twocolumn]{article} \usepackage{lmodern} \usepackage{erewhon} % \usepackage[type1,scaled=.95]{cabin} % sans serif like Gill Sans, full styles \usepackage{sourcesanspro} \usepackage[varqu,varl]{inconsolata} % typewriter % \renewcommand{\familydefault}{\sfdefault} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage[bottom=1in]{geometry} \usepackage{graphicx} \usepackage{needspace} \usepackage[nottoc,numbib]{tocbibind} \setcounter{secnumdepth}{0} % colored section headers: \usepackage[x11names]{xcolor} \usepackage[compact,pagestyles]{titlesec} \definecolor{sectioncolor}{rgb}{.38,.59,.77} \definecolor{sectioncolor}{HTML}{033E8C} \definecolor{burgundycolor}{HTML}{900020} \definecolor{plumcolor}{HTML}{8E4585} \titleformat{\section} {\normalfont\sffamily\large\bfseries\color{sectioncolor}}{\thesection}{1em}{}%[\hrule] \titlespacing*{\section}{0pt}{*2}{*.5} \titleformat{\subsection} {\normalfont\sffamily\normalsize\bfseries\color{sectioncolor}}{\thesubsection}{1em}{} \titlespacing*{\subsection}{0pt}{*1}{*.5} \titleformat{\subsubsection} {\normalfont\sffamily\normalsize\itshape\color{sectioncolor}}{\thesubsubsection}{1em}{} \titlespacing*{\subsubsection}{0pt}{*1}{*.5} \newpagestyle{pageheadfoot}{ \headrule \sethead{Programming \LaTeX\Dash{}A survey of documentation and packages}{}{\thepage} % \renewcommand{\makefootrule}{\rule[2.5ex]{\linewidth}{.4pt}} \setfoot{}{}{} } \pagestyle{pageheadfoot} \newcommand*{\XeTeXrevE} {\protect\hspace{-.1667em}\protect\raisebox{-.5ex}{\protect\reflectbox{E}}\protect\hspace{-.125em}} \providecommand*{\XeTeX}{\mbox{X\XeTeXrevE\TeX}} \providecommand*{\XeLaTeX}{\mbox{X\XeTeXrevE\LaTeX}} \newcommand{\shortTitle}[1]{} \newcommand{\thisnetaddress}{} \newcommand{\netaddress}[1]{\renewcommand{\thisnetaddress}{#1}} \newcommand{\thispersonalURL}{} \newcommand{\personalURL}[1]{\renewcommand{\thispersonalURL}{#1}} \DeclareRobustCommand{\cs}[1]{{\tt \char`\\#1}} \DeclareRobustCommand{\tubbraced}[1]{\mbox{\texttt{\char`\{#1\char`\}}}} \DeclareRobustCommand{\env}[1]{\cs{begin}\tubbraced{#1}} \DeclareRobustCommand{\thinskip}{\hskip 0.16667em\relax} \def\endash{–} \def\emdash{—} \def\d@sh#1#2{\unskip#1\thinskip#2\thinskip\ignorespaces} % \def\dash{\d@sh\nobreak\endash} % \def\Dash{\d@sh\nobreak\emdash} \newcommand{\thinbrspace}{\hspace{.16667em}\penalty\exhyphenpenalty\hspace{0pt}} \newrobustcmd{\Dash}{\unskip\thinspace\textemdash\thinbrspace} \newrobustcmd{\dash}{\unskip\thinspace\mbox{--}\thinbrspace} \def\ldash{\d@sh\empty{\hbox{\endash}\nobreak}} \def\rdash{\d@sh\nobreak\endash} \def\Ldash{\d@sh\empty{\hbox{\emdash}\nobreak}} \def\Rdash{\d@sh\nobreak\emdash} \def\hyph{-\penalty\z@\hskip\z@skip } % \def\slash{/\penalty\z@\hskip\z@skip } \renewcommand{\slash}{/\penalty\exhyphenpenalty\hspace{0pt}} \newcommand{\spslash}{\unskip\kern.085em/\hspace{.085em}\penalty\exhyphenpenalty\hspace{0pt}} \let\texttub\textsl % redefined in other situations % \DeclareRobustCommand{\AllTeX}{(\La\kern-.075em)\kern-.075em\TeX} % \def\AMS{American Mathematical Society} % \def\AmS{$\mathcal{A}$\kern-.1667em\lower.5ex\hbox % {$\mathcal{M}$}\kern-.125em$\mathcal{S}$} % \def\AmSLaTeX{\AmS-\LaTeX} % \def\AmSTeX{\AmS-\TeX} % \def\ANSI{\acro{ANSI}} % \def\API{\acro{API}} % \def\ASCII{\acro{ASCII}} % \def\aw{\acro{A\kern.04em\raise.115ex\hbox{-}W}} % \def\AW{Addison\kern.1em-\penalty\z@\hskip\z@skip Wesley} % \def\Bib{% % \ifdim \fontdimen1\font>0pt % B{\SMC\SMC IB}% % \else % \textsc{Bib}% % \fi % } % \def\BibTeX{\Bib\kern-.08em \TeX} % \def\BSD{\acro{BSD}} % \def\CandT{\textsl{Computers \& Typesetting}} % \def\ConTeXt{C\kern-.0333emon\-\kern-.0667em\TeX\kern-.0333emt} % \def\CMkIV{\ConTeXt\ \MkIV} % \def\Cplusplus{C\plusplus} % \def\plusplus{\raisebox{.7ex}{$_{++}$}} % \def\CPU{\acro{CPU}} % \def\CSS{\acro{CSS}} % \def\CSV{\acro{CSV}} \def\CTAN{\acro{CTAN}} % \def\DTD{\acro{DTD}} % \def\DTK{\acro{DTK}} % \def\DVD{\acro{DVD}} % \def\DVI{\acro{DVI}} % \def\DVIPDFMx{\acro{DVIPDFM}$x$} % \def\DVItoVDU{DVIto\kern-.12em VDU} % \def\ECMA{\acro{ECMA}} % \def\EPS{\acro{EPS}} % \DeclareRobustCommand{\eTeX}{\ensuremath{\varepsilon}-\kern-.125em\TeX} % \DeclareRobustCommand{\ExTeX}{% % \ensuremath{\textstyle\varepsilon_{\kern-0.15em\cal{X}}}\kern-.2em\TeX} % \def\FAQ{\acro{FAQ}} % \def\FTP{\acro{FTP}} % \def\Ghostscript{Ghost\-script} % \def\GNU{\acro{GNU}} % \def\GUI{\acro{GUI}} % \def\Hawaii{Hawai`i} % \def\HTML{\acro{HTML}} % \def\HTTP{\acro{HTTP}} % \def\IDE{\acro{IDE}} % \def\IEEE{\acro{IEEE}} % \def\ISBN{\acro{ISBN}} % \def\ISO{\acro{ISO}} % \def\ISSN{\acro{ISSN}} % \def\JPEG{\acro{JPEG}} % \def\JTeX{\leavevmode\hbox{\lower.5ex\hbox{J}\kern-.18em\TeX}} % \def\JoT{\textsl{The Joy of \TeX}} % \def\LAMSTeX{L\raise.42ex\hbox{\kern-.3em % $\m@th$\fontsize\sf@size\z@\selectfont % $\m@th\mathcal{A}$}% % \kern-.2em\lower.376ex\hbox{$\m@th\mathcal{M}$}\kern-.125em % {$\m@th\mathcal{S}$}-\TeX} % \DeclareRobustCommand{\La}% % {L\kern-.36em % {\setbox0\hbox{T}% % \vbox to\ht0{\hbox{$\m@th$% % \csname S@\f@size\endcsname % \fontsize\sf@size\z@ % \math@fontsfalse\selectfont % A}% % \vss}% % }} % \def\LyX{L\kern-.1667em\lower.25em\hbox{Y}\kern-.125emX} % \def\MacOSX{Mac\,\acro{OS\,X}} % \def\MathML{Math\acro{ML}} % \def\Mc{\setbox\TestBox=\hbox{M}M\vbox % to\ht\TestBox{\hbox{c}\vfil}} % for Robert McGaffey % \def\mf{\textsc{Metafont}} % \def\MFB{\textsl{The \MF book}} % \def\MkIV{Mk\acro{IV}} % % \let\TB@@mp\mp % \DeclareRobustCommand{\mp}{\ifmmode\TB@@mp\else MetaPost\fi} % \DeclareRobustCommand{\NTG}{\acro{NTG}} % \DeclareRobustCommand{\NTS}{\ensuremath{\mathcal{N}\mkern-4mu % \raisebox{-0.5ex}{$\mathcal{T}$}\mkern-2mu \mathcal{S}}} % \DeclareTextSymbol{\textohm}{OT1}{'012} % \DeclareTextSymbolDefault{\textohm}{OT1} % \newcommand{\OMEGA}{\textohm} % \DeclareRobustCommand{\OCP}{\OMEGA\acro{CP}} % \DeclareRobustCommand{\OOXML}{\acro{OOXML}} % \DeclareRobustCommand{\OTF}{\acro{OTF}} % \DeclareRobustCommand{\OTP}{\OMEGA\acro{TP}} % \def\mtex{T\kern-.1667em\lower.424ex\hbox{\^E}\kern-.125emX\@} % \def\Pas{Pascal} % \def\pcMF{\leavevmode\raise.5ex\hbox{p\kern-.3\p@ c}MF\@} % \def\PCTeX{PC\thinspace\TeX} % \def\pcTeX{\leavevmode\raise.5ex\hbox{p\kern-.3\p@ c}\TeX} % \def\PDF{\acro{PDF}} % \def\PGF{\acro{PGF}} % \def\PHP{\acro{PHP}} % \def\PiC{P\kern-.12em\lower.5ex\hbox{I}\kern-.075emC\@} % \def\PiCTeX{\PiC\kern-.11em\TeX} % \def\plain{\texttt{plain}} % \def\PNG{\acro{PNG}} % \def\POBox{P.\thinspace O.~Box } % \def\PS{{Post\-Script}} % \def\PSTricks{\acro{PST}ricks} % \def\RTF{\acro{RTF}} % \def\SC{Steering Committee} % \def\SGML{\acro{SGML}} % \def\SliTeX{\textrm{S\kern-.06em\textsc{l\kern-.035emi}% % \kern-.06em\TeX}} % \def\slMF{\textsl{\MF}} % should never be used % \def\SQL{\acro{SQL}} % \def\stTeX{\textsc{st}\kern-0.13em\TeX} % \def\STIX{\acro{STIX}} % \def\SVG{\acro{SVG}} % \def\TANGLE{\texttt{TANGLE}\@} % \def\TB{\textsl{The \TeX book}} % \def\TIFF{\acro{TIFF}} % \def\TP{\textsl{\TeX}: \textsl{The Program}} % \DeclareRobustCommand{\TeX}{T\kern-.1667em\lower.424ex\hbox{E}\kern-.125emX\@} % \def\TeXhax{\TeX hax} % \def\TeXMaG{\TeX M\kern-.1667em\lower.5ex\hbox{A}% % \kern-.2267emG\@} % \def\TeXtures{\textit{Textures}} % \let\Textures=\TeXtures % \def\TeXworks{\TeX\kern-.07em works} % \def\TeXXeT{\TeX-{}-\XeT} % \def\TFM{\acro{TFM}} % \expandafter\ifx\csname XeTeXrevision\endcsname\relax % \def\Thanh{H\`an~Th\^e\llap{\raise 0.5ex\hbox{\'{}}}~Th\`anh}% non-XeTeX % \else % \def\Thanh{H\`an~Th\textcircumacute{e}~Th\`anh}% xunicode drops the acute else % \fi % \def\TikZ{Ti{\em k}Z} % \def\ttn{\textsl{TTN}\@} % \def\TTN{\textsl{\TeX{} and TUG News}} % \let\texttub\textsl % redefined in other situations \def\TUB{\texttub{TUGboat}} % \def\TUG{\TeX\ \UG} % \def\tug{\acro{TUG}} % \def\UG{Users Group} % \def\UNIX{\acro{UNIX}} % \def\VAX{V\kern-.12em A\kern-.1em X\@} % \def\VnTeX{V\kern-.03em n\kern-.02em \TeX} % \def\VorTeX{V\kern-2.7\p@\lower.5ex\hbox{O\kern-1.4\p@ R}\kern-2.6\p@\TeX} % \def\XeT{X\kern-.125em\lower.424ex\hbox{E}\kern-.1667emT\@} % \def\XML{\acro{XML}} % \def\WEB{\texttt{WEB}\@} % \def\WEAVE{\texttt{WEAVE}\@} % \def\WYSIWYG{\acro{WYSIWYG}} % \def\tubreflect#1{% % \@ifundefined{reflectbox}{% % \TBerror{A graphics package must be loaded for \string\XeTeX}% % }{% % \ifdim \fontdimen1\font>0pt % \raise 1.75ex \hbox{\kern.1em\rotatebox{180}{#1}}\kern-.1em % \else % \reflectbox{#1}% % \fi % }% % } % \def\tubhideheight#1{\setbox0=\hbox{#1}\ht0=0pt \dp0=0pt \box0 } % \def\XekernbeforeE{-.125em} % \def\XekernafterE{-.1667em} % \DeclareRobustCommand{\Xe}{\leavevmode % \tubhideheight{\hbox{X% % \setbox0=\hbox{\TeX}\setbox1=\hbox{E}% % \lower\dp0\hbox{\raise\dp1\hbox{\kern\XekernbeforeE\tubreflect{E}}}% % \kern\XekernafterE}}} % \def\XeTeX{\Xe\TeX} % \def\XeLaTeX{\Xe{\kern.11em \LaTeX}} % \def\XHTML{\acro{XHTML}} % \def\XSL{\acro{XSL}} % \def\XSLFO{\acro{XSL}\raise.08ex\hbox{-}\acro{FO}} % \def\XSLT{\acro{XSLT}} \newcommand{\pub}[1]{\textit{#1}} \newcommand{\acro}[1]{\textsc{\MakeLowercase{#1}}} \newcommand{\EDITORnoaddress}{} \usepackage{microtype} \usepackage{graphicx} \usepackage{ifpdf} \ifpdf \definecolor{myurlcolor}{rgb}{.4,0,0} \definecolor{mylinkcolor}{rgb}{.4,0,0} \definecolor{mycitecolor}{rgb}{.4,0,0} \usepackage[breaklinks,colorlinks, linkcolor=mylinkcolor, urlcolor=myurlcolor, citecolor=mycitecolor]{hyperref} \else \usepackage{url} \fi \hypersetup{% pdfinfo={% Title={Programming LaTeX - A survey of documentation and packages},% Author={Brian Dunn},% Subject={LaTeX programming documentation},% Keywords={LaTeX, programming, documentation, BD Tech Concepts LLC}% }} \usepackage{enumitem} \setlist[description]{style=nextline,font=\small} \usepackage{multicol} \usepackage{titling} \setlength{\droptitle}{-1in} \predate{\begin{center}\small} \newrobustcmd*{\pkg}[1]{\textsf{#1}} \newrobustcmd*{\prog}[1]{\texttt{#1}} \newrobustcmd*{\LuaLaTeX}{Lua\-\LaTeX} \newrobustcmd*{\LuaTeX}{Lua\-\TeX} \newrobustcmd*{\tag}[1]{\texttt{<#1>}} \newrobustcmd*{\prop}[1]{\textsl{\texttt{#1}}} \newrobustcmd*{\epub}{\acro{EPUB}} \newrobustcmd*{\texdoc}[1]{\hspace*{\fill}\mbox{(\texttt{texdoc #1})}} \newrobustcmd*{\hfurl}[1]{\hspace*{\fill}\mbox{(\url{#1})}} \newrobustcmd*{\userentry}[1]{% \leavevmode\par\hspace*{2em}\texttt{#1}\smallskip\\} \pdfstringdefDisableCommands{ \renewcommand*{\quad}{ } \renewcommand*{\pkg}[1]{#1} \renewcommand*{\prog}[1]{#1} \renewcommand*{\LuaLaTeX}{LuaLaTeX} \renewcommand*{\XeLaTeX}{XeLaTeX} \renewcommand*{\TeX}{TeX} \renewcommand*{\LaTeX}{LaTeX} \renewcommand*{\Dash}{ --- } \renewcommand*{\dash}{ -- } } \title{Programming \LaTeX\Dash \\ A survey of documentation and packages} \author{Brian Dunn \\ \small \href{mailto:bd@BDTechConcepts.com}{bd@BDTechConcepts.com} \\ \small Copyright 2017--2018 Brian Dunn\thanks{ This work may be distributed and/or modified under the conditions of the \LaTeX\ Project Public License, either version 1.3 of this license or (at your option) any later version. The latest version of this license is in \url{http://www.latex-project.org/lppl.txt} and version 1.3 or later is part of all distributions of \LaTeX\ version 2005/12/01 or later. } } \begin{document} \maketitle \thispagestyle{empty} \begin{abstract} \noindent A survey of programming-related documentation for \LaTeX. Included are references to printed and electronic books and manuals, symbol lists, \acro{FAQ}s, the \LaTeX\ source code, CTAN and distributions, programming-related packages, users groups and online communities, and information on creating packages and documentation. \end{abstract} \tableofcontents \section{Introduction} Reinventing the wheel may be useful if you think that you can do it better. Worse, though, is not even being aware that the wheel has already been invented in the first place, which can be an embarrassing waste of time. Such can be the case both for a new \LaTeX\ programmer who isn't aware of the many ways things may be done, but also for someone, this author included, who learned \LaTeX\ many years ago but may have missed some of the recent advancements in package code and documentation. A wealth of information is available, not only in print and online, but also directly embedded in the typical \LaTeX\ distribution. The following is meant to be a broad overview of some of today's resources for \LaTeX\ programmers. (The latest version of this document is available in the \pkg{docsurvey} package.) \section{Printed books} Even in an electronic/online era, printed books still have the advantage of being able to be opened for reference without taking up space on the screen. Printed books also provide extended discussion of useful topics, have extensive human-edited indexes which are more useful than a simple document-wide search function, and some are also available in electronic format. \begin{description} \item[\LaTeX:\ A Document Preparation System:] The classic introduction to \LaTeX, in continuous reprint for decades.~\cite{lamport:latex} \item[Guide to \LaTeX:] An introduction and more advanced material, including an extensive reference guide. Fourth edition: 2004.~\cite{hokpkadaly:guide} \item[More Math into \LaTeX:] Updated to a fifth edition in 2016.~\cite{gratzer:moremath} \item[\LaTeX\ Beginner's Guide:] An overview with numerous examples.~\cite{kottwitz:beginner} \item[\LaTeX\ Cookbook:] More examples.~\cite{kottwitz:cookbook} \item[The \LaTeX\ Companion:] Provides extended discussion and examples of the inner workings of \LaTeX\ and numerous useful packages. Second edition: 2004.~\cite{mittelbachgossens:companion} \item[Additional books:] Listed at the \TeX\ \acro{FAQ}.~\cite{TeX:FAQ} \hfurl{https://texfaq.org/} \end{description} \section{Electronic books and documentation} Most of these are provided with the \TeX\ distribution, and may be updated with each release. Access the embedded documentation from a command line using the \texttt{texdoc} program. \subsection{\TeX} \begin{description} \item[\TeX\ by Topic, A \TeX{}nician's Reference:] A reference for \TeX. This may be useful for understanding the source code of \LaTeX\ packages, many of which are quite old and written in low-level \TeX.~\cite{eijkhout:topic} \texdoc{texbytopic} \end{description} \subsection{\LaTeX} \begin{description} \item[Getting something out of \LaTeX:] Create your first document in \LaTeX.~\cite{hefferon:first} \hfurl{https://ctan.org/pkg/first-latex-doc} \item[The very short guide to typesetting with \LaTeX:] A four-page introduction.~\cite{flynn:veryshort} \hfurl{https://ctan.org/pkg/latex-veryshortguide} \item[Formatting Information:] A beginner’s introduction to typesetting with \LaTeX.~\cite{flynn:formatting} \hfurl{https://ctan.org/pkg/beginlatex} \item[\LaTeX\ for Complete Novices:] An extensive introduction for a non-technical person.~\cite{talbot:novices} \texdoc{dickimaw-novices} \item[Using \LaTeX\ to Write a PhD Thesis:] A followup to \pub{\LaTeX\ for Complete Novices}, including extensive discussion about bibliographies, indexes, and glossaries.~\cite{talbot:phd} \texdoc{dickimaw-thesis} \item[Writing Scientific Documents Using \LaTeX:] An introduction to typesetting scientific documents.~\cite{Bennieston:scientific} \\ \hfurl{https://ctan.org/pkg/intro-scientific} \item[The Not So Short Introduction to \LaTeXe:] Covers introductory material, customizations, and a simple package. Available in many languages~\cite{oetiker:introduction} \texdoc{-l lshort} \hfurl{https://ctan.org/pkg/lshort} \item[\LaTeXe: An unofficial reference manual:] A thorough but concise reference manual for \LaTeXe, available in several languages.~\cite{greenwade:reference} \\ \texdoc{-l latex2e-help} \\ \hfurl{https://latexref.xyz} \item[LaTeX WikiBook:] An online book, includes information about creating \LaTeX\ packages and classes. \\ \hfurl{https://en.wikibooks.org/wiki/LaTeX} \end{description} \subsection{Lua\LaTeX} \begin{description} \item [A guide to Lua\LaTeX:] An introduction. \texdoc{lualatex-doc} \item [Lua\TeX\ Reference:] The full manual. \texdoc{luatex.pdf} \end{description} \subsection{\XeLaTeX} \begin{description} \item [The \XeTeX\ reference guide:] A summary of additional features. \texdoc{xetex-reference} \item [Font-change-xetex:] Macros for using fonts. \texdoc{font-change-xetex} \end{description} \subsection{\LaTeX3 and \pkg{expl3}} \begin{description} \item [The \LaTeX3 Interfaces:] Reference documentation for the \pkg{expl3} programming environment. \texdoc{interface3} \end{description} \subsection{Symbol references} These are lists of the \LaTeX\ commands which produce symbols. \begin{description} \item[Comprehensive \LaTeX\ Symbol List:] More than 14,000 symbols and \LaTeX\ commands.~\cite{pakin:list} \texdoc{symbols-letter} \\ \texdoc{symbols-a4} \item[Every symbol (most symbols) defined by unicode-math:] Unicode math symbols.~\cite{robertson:mathsymbols} \texdoc{unimath-symbols} \end{description} \subsection{Source code} The source code for \LaTeXe\ itself is also included in the distribution. \begin{description} \item[The \LaTeXe\ sources:] Occasionally useful for figuring out how something really works.~\cite{latexteam:sources} \texdoc{source2e} \item[List of internal \LaTeXe\ macros \\\hspace*{-\leftmargin}useful to package authors:] A list of the core \LaTeX\ macros, each of which is linked to the source code.~\cite{scharrer:listinternal} \texdoc{macros2e} \end{description} \subsection{FAQs} %Frequently-Asked Questions \begin{description} \item[\TeX\ FAQ:] A wide-ranging list of fre\-quently-asked questions. (formerly the UK TUG FAQ) ~\cite{TeX:FAQ} \\ \texdoc{letterfaq} \\ \texdoc{newfaq} \item[Visual \LaTeX\ FAQ:] Click on a visual element to learn how it is programmed.~\cite{pakin:visual} \texdoc{visualFAQ} \end{description} \subsection{Non-English} \begin{description} \item[Initiation à LATEX:] A French guide on \LaTeX — for beginners or advanced users.~\cite{bouzigues:guide} \\ \hfurl{https://ctan.org/pkg/guide-latex-fr} \item[\LaTeXe\ Via Exemplos:] A study course in Brazilian Portuguese.~\cite{massago:exemplos} \hfurl{https://ctan.org/pkg/latex-via-exemplos} \item[The Not So Short Introduction to \LaTeXe:] Covers introductory material, customizations, and a simple package. Available in many languages~\cite{oetiker:introduction} \texdoc{-l lshort} \hfurl{https://ctan.org/pkg/lshort} \item[\LaTeXe: An unofficial reference manual:] A thorough but concise reference manual for \LaTeXe, available in several languages.~\cite{greenwade:reference} \\ \texdoc{-l latex2e-help} \\ \hfurl{https://latexref.xyz} \item [Ebook Foundation — Free Programming Books:] A variety of \TeX-related and other programming books and documents, in a number of languages.~\cite{ebookfoundation:free} \hfurl{https://github.com/EbookFoundation/free-programming-books} \end{description} \subsection{General typeseting theory} Discussion about general typesetting theory, presented by various \TeX-related authors. \begin{description} \item[A Few Notes on Book Design:] Discussion about book design and typography. 100+ pages.~\cite{wilson:design} \texdoc{memdesign} \item[KOMA-Script — The Guide --- Calculating the Page Layout with typearea:] Discussion about the page layout of a book.~\cite{kohm:typearea} \texdoc{typearea} \item[A TUFTE-STYLE BOOK --- The Design of Tufte's Books:] Emulating ideas from the books of Edward R. Tufte.~\cite{tufte:book} \texdoc{tufte-latex} \item[The Octavo Package:] Design principles and guidelines emulating books from the Renaissance.~\cite{revets:octavo} \texdoc{octavo} \item[Package canoniclayout:] Ideas regarding text-block proportions.~\cite{beccari:canoniclayout} \texdoc{canoniclayout} \item[Publication-quality tables in \LaTeX:] Improved design of tabular layouts.~\cite{fear:booktabs} \texdoc{booktabs} \item[The Ti\textit{k}Z and PGF Packages --- Guidelines on Graphics:] ``General guidelines and principles concerning the creation of graphics for scientific presentations, papers, and books''.~\cite{tantu:pgf} \texdoc{pgfmanual} \end{description} \section{Accessing embedded information} \subsection{\pkg{texdoc}} A large amount of documentation is included in a \TeX\ distribution. Most can be accessed with the \prog{texdoc} program. Enter ``\prog{texdoc -l }'' to search for matching package, file, or program names. In some cases the same document is available in both letter or A4 paper sizes, or in several languages. \prog{texdoc} is also available online~\cite{texdocnet}, with popular packages sorted by category. \hfurl{texdoc.net} \subsection{\prog{kpsewhich}} The program \prog{kpsewhich} may be used to find out where a file is located. \prog{kpsewhich filename} searches for and returns the path to the given filename. \prog{kpsewhich} can also return directories, such as: \begin{verbatim} kpsewhich -var-value TEXMFROOT kpsewhich -var-value TEXMFDIST kpsewhich -var-value TEXMFLOCAL \end{verbatim} \medskip Some package authors choose not to include the source code in the package documentation. To view the source code: \begin{enumerate} \item To locate and read a package's \verb+.sty+ file: \userentry{kpsewhich package.sty} Usually these files have their comments removed, so it is better to use the \verb+.dtx+ file instead. \item The \verb+.dtx+ file is usually available, and will have the package's source code. \userentry{kpsewhich package.dtx} If it is not installed on your local system, it will be necessary to download the \verb+.dtx+ file from CTAN (see the next section). The comments are not yet typeset and so will not be as easily read. \item To typeset the documentation with the source code, copy the \verb+.dtx+ file and any associated image files somewhere local and then look for \cs{OnlyDescription} in the source. This command tells the \pkg{ltxdoc} package not to print the source code. \item Remove \cs{OnlyDescription}, then process the \verb+.dtx+ file with \userentry{pdflatex package.dtx} Barring unusual circumstances, this will create a new documentation \verb+.pdf+ file with the package source code included. \end{enumerate} \section{% Obtaining packages \Dash Comprehensive \TeX\ Archive Network \protect\quad (CTAN)% } The Comprehensive \TeX\ Archive Network (\CTAN) provides a master collection of packages. A search function is available, which is useful when you know the name of a package or its author, and a list of topics is also provided. There are so many topics, however, that finding the right topic can be a problem in itself. One useful method to find what you are looking for is to search for a related package you may already know about, then look at its description on \CTAN\ to see what topics are shown for it. Selecting these topics then shows you related packages.~\cite{ctan} \needspace{7\baselineskip} \section{Packages useful for programming \LaTeX} A number of packages are especially useful for \LaTeX\ programmers: \texdoc{} \begin{multicols}{2} \begin{description}[style=unboxed] \raggedright \item[\pkg{xifthen}:] Conditionals. \item[\pkg{etoolbox}:] A wide range of programming tools, often avoiding the need to resort to low-level \TeX. \item[\pkg{etextools}:] Adds to \pkg{etoolbox}. Strings, lists, and more. \item[\pkg{xparse}:] Define macros and environments with flexible argument types. \item[\pkg{environ}:] Process environment contents. \item[\pkg{arrayjobx}, \pkg{fifo-stack}, \pkg{forarray}, \pkg{forloop}, \pkg{xfor}:] Programming arrays, stacks, and loops. \item[\pkg{iftex}:] Detect \TeX\ engine. \item[\pkg{ifplatform}:] Detect operating system. \item[\pkg{xstring}:] String manipulation. \item[\pkg{keyval}, \pkg{xkeyval}, \pkg{kvsetkeys}:] Key\slash{}value arguments. \item[\pkg{pgfkeys}, \pkg{pgfkeyx}:] Another form of key\slash{}value arguments. \item[\pkg{kvoptions}:] Key\slash{}value package options. \item[\pkg{expl3}:] \LaTeX3 programming. \item[\pkg{l3keys}, \pkg{l3keys2e}:] Key\slash{}value for \LaTeX3. \item[\pkg{chktex}:] Locates typographic errors. \item[\CTAN\ topic \pkg{macro-supp}:] An entire topic of useful programming macros. \end{description} \end{multicols} \section{Creating and documenting new packages} \subsection{How-to} Documentation for those interested in creating their own package or class: \begin{description} \item[How to package your \LaTeX\ package:] A tutorial.~\cite{pakin:dtxtut} \texdoc{dtxtut} \item[\LaTeXe\ for class and package writers:] Programming a package or class.~\cite{latexteam:class} \texdoc{clsguide} \item[The doc and shortvrb packages:] Packages for documenting packages.~\cite{mittelbach:doc} \texdoc{doc} \item[The DocStrip program:] The program which processes \verb+.dtx+ and \verb+.ins+ files to generate documentation and \verb+.sty+ files.~\cite{mittelbach:docstrip} \texdoc{docstrip} \end{description} \subsection{Published articles about creating \LaTeX\ packages} Related articles from \TUB: \begin{description} \item[Rolling your own Document Class: Using \LaTeX\ to keep away from the Dark Side:] An overview of the \pkg{article} class.~\cite{flynn:article} \item[Good things come in little packages: An introduction to writing \texttt{.ins} and \texttt{.dtx} files:] How and why to create your own \verb+.dtx+ and \verb+.ins+ files.~\cite{pakin:goodthings} \item[How to develop your own document class\Dash our experience:] A comparison of developing class vs.\ package files.~\cite{mansfield:class} \end{description} \section{Users groups} \begin{description}[style=unboxed] \item[\TeX\ Users Group:] \url{http://tug.org} \item[List of international users groups:] \url{http://tug.org/usergroups.html} \end{description} \section{Online communities} \begin{description}[style=unboxed] \item[English forums:] \ \begin{description}[style=unboxed] \raggedright \item[TeX\Dash \LaTeX\ Stack Exchange:] \url{http://tex.stackexchange.com} \\ Almost any question has already been asked, and a quick web search will find answers, ranked by vote. \item[\LaTeX\ Community:] \url{http://www.latex-community.org} \\ A traditional forum with quick replies to your questions \end{description} \item[German forums:] \ \begin{description}[style=unboxed] \item[TeXwelt:] \url{http://texwelt.de/wissen/} \item[goLaTeX:] \url{http://golatex.de} \end{description} \item[French forums:] \ \begin{description}[style=unboxed] \item[TeXnique.fr:] \url{http://texnique.fr} \end{description} \item[Mailing lists:] \url{http://tug.org/mailman/listinfo} \\ Several dozen, spanning a wide range of \TeX-related topics. \item[Newsgroup:] \url{comp.text.tex} \end{description} \section{Distributions \Dash \LaTeX\ for various operating systems} \begin{description}[style=unboxed] \item[TeXLive:] \url{http://tug.org/texlive} \hfill Unix and Windows \item[MiKTex:] \url{https://miktex.org} \hfill Windows and Mac \item[proTeXt:] \url{http://tug.org/protext/} \hfill Windows \item[MacTex:] \url{http://tug.org/mactex/} \hfill Mac \end{description} \section{Change log} \begin{description}[style=standard] \item[2017/03/06:] Initial version. \item[2017/10/04:] Added users groups, mailing lists, distributions, \LuaTeX, \XeTeX, \pkg{chktex}. Organization and formatting improvements. \item[2017/10/14:] More information about accessing embedded documentation. \item[2018/01/18:] Added \url{texdoc.net}. \item[2018/01/21:] Added \pkg{la­tex-veryshort­guide}, \pkg{first-latex-doc}, \pkg{beginlatex}, \pkg{intro-scientific}, \pkg{guide-latex-fr}. \item[2018/03/24:] Added \pkg{interface3}, \pkg{dickimaw-novices}, \pkg{dickimaw-thesis}. \item[2018/04/01:] Added TeXnique.fr. \item[2018/06/28:] Added sections for non-English documents and general typesetting theory. Updated host and name for \TeX\ \acro{FAQ}. Added \pkg{latex-via-exemplos} and Ebook Foundation free programming books. \item[2018/10/18:] Updated \acro{URL} for \pub{\LaTeXe: An unofficial reference manual}. \end{description} \begin{thebibliography}{99} \bibitem{lamport:latex} \pub{\LaTeX: A Document Preparation System}, Leslie Lamport, second edition, Addison Wesley, 1994, ISBN 0201529831. \bibitem{hokpkadaly:guide} \pub{Guide to \LaTeX}, Helmut Kopka and Patrick W. Daly, fourth edition, Addison-Wesley, 2004, ISBN 0321173856. \bibitem{gratzer:moremath} \pub{More Math Into \LaTeX}, George Gr\"{a}tzer, 5th ed., Springer, 2016, ISBN 3319237950. %ISBN-13: 978-3319237954. \bibitem{kottwitz:beginner} \pub{\LaTeX\ Beginner's Guide}, Stefan Kottwitz, Packt Publishing, 2011, ISBN 1847199860. %ISBN-13 1847199860. \bibitem{kottwitz:cookbook} \pub{\LaTeX\ Cookbook}, Stefan Kottwitz, Packt Publishing, 2015, ISBN-13 9781784395148. \\ \url{http://latex-cookbook.net} \bibitem{mittelbachgossens:companion} \pub{The \LaTeX\ Companion}, Frank Mittelbach, Michel Goossens, Johannes Braams, David Carlisle and Chris Rowley, second edition, Addison-Wesley, 2004, ISBN 0201362996. %ISBN-13 0-201-36299-6. \bibitem{eijkhout:topic} \pub{\TeX\ by Topic}, A \TeX{}nician's Reference, Victor Eijkhout, Addison-Wesley UK, 1991, ISBN 0201568829. \url{http://eijkhout.net/texbytopic/texbytopic.html} \bibitem{hefferon:first} \pub{Getting something out of \LaTeX}, Jim Hefferon, 2009. \url{https://ctan.org/pkg/first-latex-doc} \bibitem{flynn:veryshort} \pub{The very short guide to typesetting with \LaTeX}, Peter Flynn, 2016. \\ \url{https://ctan.org/pkg/latex-veryshortguide} \bibitem{flynn:formatting} \pub{Formatting Information}, A beginner’s introduction to typesetting with \LaTeX, Peter Flynn, 2005. \\ \url{https://ctan.org/pkg/beginlatex} \bibitem{talbot:novices} \pub{\LaTeX\ for Complete Novices}, Nicola L. C. Talbot, 2012. Dickimaw Books. \url{http://www.dickimaw-books.com} \bibitem{talbot:phd} \pub{Using \LaTeX\ to Write a PhD Thesis}, Nicola L. C. Talbot, 2013. Dickimaw Books. \url{http://www.dickimaw-books.com} \bibitem{Bennieston:scientific} \pub{Writing Scientific Documents Using \LaTeX}, Andrew J. Bennieston, 2009. \\ \url{https://ctan.org/pkg/intro-scientific} \bibitem{oetiker:introduction} \pub{The Not So Short Introduction to \LaTeXe}, Tobias Oetiker, 2015. \url{https://ctan.org/pkg/lshort} \bibitem{greenwade:reference} \pub{\LaTeXe: An unofficial reference manual}, George~D. Greenwade, Stephen Gilmore, Torsten~Martinsen, and Karl Berry. \url{https://latexref.xyz} \bibitem{pakin:list} \pub{The Comprehensive \LaTeX\ Symbol List}, Scott Pakin, 2017. \url{https://ctan.org/pkg/comprehensive} \bibitem{robertson:mathsymbols} \pub{Every symbol (most symbols) defined by unicode-math}, Will Robertson, 2018. \\ \url{https://ctan.org/pkg/unicode-math} \bibitem{latexteam:sources} \pub{The \LaTeXe\ Sources}, Johannes Braams, David Carlisle, Alan Jeffrey, Leslie Lamport, Frank Mittelbach, Chris Rowley, and Rainer Sch\"opf. \url{https://ctan.org/pkg/source2e} \bibitem{scharrer:listinternal} \pub{List of internal \LaTeXe\ Macros useful to Package Authors}, Martin Scharrer. \\ \url{https://ctan.org/pkg/macros2e} \bibitem{TeX:FAQ} \TeX\ FAQ. \url{https://texfaq.org/} \bibitem{pakin:visual} \pub{The Visual \LaTeX\ FAQ}, Scott Pakin. \url{https://ctan.org/pkg/visualfaq} \bibitem{bouzigues:guide} \pub{Initiation à \LaTeX}, Pour débutants ou jeunes utilisateurs, Adrien Bouzigues, 2017. \\ \url{https://ctan.org/pkg/guide-latex-fr} \bibitem{massago:exemplos} \pub{\LaTeXe\ Via Exemplos}, Sadao Massago, 2018. \url{https://ctan.org/pkg/latex-via-exemplos} \bibitem{ebookfoundation:free} \pub{Free Programming Books}, Ebook Foundation. \\ \url{https://github.com/EbookFoundation/free-programming-books} \bibitem{wilson:design} \pub{A Few Notes on Book Design}, Peter Wilson, 2009. \url{https://ctan.org/pkg/memdesign} \bibitem{kohm:typearea} \pub{KOMA-Script — The Guide}, Markus Kohm, 2018. \url{https://ctan.org/pkg/koma-script} \bibitem{tufte:book} \pub{A TUFTE-STYLE BOOK}, The Tufte-LaTeX Developers, 2015. \url{https://ctan.org/pkg/tufte-latex} \bibitem{revets:octavo} \pub{The Octavo Package}, Stefan A. Revets, \pub{TUGboat} 23 3/4 (2002), p.~269. \url{https://ctan.org/pkg/octavo} \bibitem{beccari:canoniclayout} \pub{Package canoniclayout}, Claudio Beccari, 2011. \url{https://ctan.org/pkg/canoniclayout} \bibitem{fear:booktabs} \pub{Publication-quality tables in \LaTeX}, Simon Fear, 2016. \url{https://ctan.org/pkg/booktabs} \bibitem{tantu:pgf} \pub{Till Tantau}, 2015. \url{https://ctan.org/pkg/pgf} \bibitem{texdocnet} TeXdoc Online. \url{http://texdoc.net} \bibitem{ctan} Comprehensive \TeX\ Archive Network (CTAN). \url{https://ctan.org} \bibitem{pakin:dtxtut} \pub{How to Package Your \LaTeX\ Package}, Scott~Pakin. \url{https://ctan.org/pkg/dtxtut} \bibitem{latexteam:class} \pub{\LaTeXe\ for class and package writers}, \LaTeX3 Project. \url{https://ctan.org/pkg/clsguide} \bibitem{mittelbach:doc} \pub{The doc and shortvrb packages}, Frank Mittelbach. \url{https://ctan.org/pkg/doc} \bibitem{mittelbach:docstrip} \pub{The DocStrip program}, Frank Mittelbach, Denys Duchier, Johannes Braams, Marcin Woli\'nski, and Mark Wooding. \url{https://ctan.org/pkg/docstrip} \bibitem{flynn:article} \pub{Rolling your own Document Class: Using \LaTeX\ to keep away from the Dark Side}, Peter~Flynn, \TUB\ 28:1 (2007), pp.\,110--123. \url{http://tug.org/TUGboat/tb28-1/tb88flynn.pdf} \bibitem{pakin:goodthings} \pub{Good things come in little packages: An introduction to writing \texttt{.ins} and \texttt{.dtx} files}, Scott~Pakin, \TUB\ 29:2 (2008), pp.\,305--314. \url{http://tug.org/TUGboat/tb29-2/tb92pakin.pdf} \bibitem{mansfield:class} \pub{How to develop your own document class\Dash our experience}, Niall Mansfield, \TUB\ 29:3 (2008), pp.\,356--361. \url{http://tug.org/TUGboat/tb29-3/tb93mansfield.pdf} \end{thebibliography} % \vfilneg \end{document}