little-book-of-LaTeX/lbol.tex

1013 lines
42 KiB
TeX

\documentclass[twoside]{report}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{makeidx}
%\makeindex
\usepackage{graphicx}
\usepackage{kpfonts}
\usepackage{float}
\raggedbottom
\usepackage{nicefrac}
% Where are our images?
\graphicspath{{images/}}
% Include bibliography in TOC without numbering
\usepackage[nottoc]{tocbibind}
% Let's set this as a half-letter sized sheet
\usepackage{geometry}
\geometry{
paperheight=8.5in,
paperwidth=5.5in,
% heightrounded,
margin=0.5in
}
% Adjust the top and bottom margins
\addtolength{\topmargin}{0.4in}
\addtolength{\textheight}{-0.5in}
% Set the header style
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[LE,RO]{\thepage}
\fancyhead[RE,LO]{\textit{the little book of \LaTeX{}}}
% We won't use footers, but we'll keep this in case we change our minds.
% \cfoot{Page \thepage}
%\renewcommand{\footrulewidth}{0.5pt}
% Make a nice border and box for the tops of our examples
\newcommand\klab[3]{\vspace{#1}\noindent{}\hrulefill~~\fbox{\texttt{~#2~}}~~\hrulefill\vspace{#3}}
% Add an \hrule with space above and below
\newcommand\krule[2]{\vspace{#1}\hrule\vspace{#2}}
% Make hrefs easier (must load package hyperref}
\newcommand\kref[2]{\href{#1}{{\texttt{#2}}}}
% Make including standalone items easier
\newcommand\kpic[2]{\bigskip%
\noindent\includegraphics[scale=#1]{#2}%
\medskip}
% Include sections and subsections in the TOC
% \setcounter{tocdepth}{1}
% We will probably want some two- or three-column sections
\usepackage{multicol}
% Stop resetting the footnote count after each chapter
\counterwithout{footnote}{chapter}
% Let's wrap some images
\usepackage{wrapfig}
% Use tab stops when we need to (especially in footnotes)
\usepackage{tabto}
% Define 18 tab stops (at 1/4" intervals)
\NumTabs{18}
% Use strikethrough
\usepackage{ulem}
% Make things neater. Thanks /u/-LeopardShark-
\usepackage{microtype}
% Use line numbers with code samples
% \begin{Verbatim}...\end{Verbatim} <-- Note the capitalization!
\usepackage{fancyvrb}
% Break lines inside this environment:
\usepackage{fvextra}
% Control spacing in lists
\usepackage{enumitem}
\raggedbottom
% Pictures!
\usepackage{tikz}
% Cancel units in math mode!
\usepackage{cancel}
% Better control over line-spacing
\usepackage{setspace}
% Use nice fractions
\usepackage{nicefrac}
% Keep the footnotes at the bottom of the page
\usepackage[bottom]{footmisc}
% Add custom widths to tables
\usepackage{array}
% Use chapter names in references
\usepackage{nameref}
% Include URLs, but hide the big red box it puts around them in the pdf.
\usepackage[hidelinks]{hyperref}
%%%% Document Information %%%%%
\author{{\small Kenneth John Odle}}
\title{
{\Huge the little book of \LaTeX{}} \\
\vspace{3em}
{\normalsize A Partial Guide \\
\bigskip
1\textsuperscript{st} Edition \\
Typeset in \LaTeX{} (of course!)}
}
\date{{\small 2023}}
\begin{document}
\maketitle
\section*{}
\thispagestyle{empty}
All contents \copyright2023 Kenneth John Odle
\bigskip
\noindent{}FYI, this is made in \LaTeX \,using the report document class. It then gets exported to a letterhalf (5.5 in x 8.5 in) pdf, which then gets made into a booklet using PDF Booklet (\href{https://pdfbooklet.sourceforge.io/wordpress/}{\texttt{https://pdfbooklet.sourceforge.io/wordpress/}}).
\tableofcontents
\chapter{Beginnings}
I am neither a mathematician nor a physicist, but I've been fascinated with typography for as long as I can remember. I finally decided to take the plunge and learn \LaTeX{}, but because I have a project-based mind, I needed a project to learn it. I ended up creating a zine about Linux, typeset entirely in \LaTeX{}. It's been a fun ongoing project, and I've learned a lot as a result. I finally decided that instead of keeping notes everywhere (mostly in the preambles the documents I've been working on) I decided to write a little book that recorded what I've learned to use as a reference guide. If I had something like this when I started, things probably would have gone much more smoothly for me.
\paragraph{A Caveat} First, I am far from an expert in these matters. What follows is pretty much a listing of what I've gleaned from hours spent searching the internet and trying things out myself.
Second, some things will look differently and behave differently for you depending on variables such as the document class (see below) you are using and which other packages you have loaded. My rules for learning things like this are always:
\begin{enumerate}[noitemsep]
\item Don't compare yourself to others. Your mileage can—and will—vary, because people learn things at different rates and in different orders.
\item Practice doesn't make perfect, but it does make things less bad.
\item A willingness to experiment is your best guide.
\item You will get errors as part of the learning process. Your goal should always be to get better errors.
\end{enumerate}
When (not \textit{if}) you have problems, please consult the ``Troubleshooting'' chapter. It's not going to solve all, if any, of your problems, but it will suggest a general problem-shooting algorithm that will help you figure out where things are going wrong.
Also, if you have access to the source code so you can see how other people have done things, so much the better. (You can view the source code for this zine at \href{https://git.kjodle.net/kjodle/little-book-of-LaTeX}{\texttt{https://git.kjodle.net/kjodle/little-book-of-LaTeX}}.)
\section{Other Sources of Help}
These are listed roughly in the order of how often I consult them.
\begin{itemize}[noitemsep]
\item \textbf{TeX - LaTeX Stack Exchange}\kref{https://tex.stackexchange.com/}{https://tex.stackexchange.com/}
\item \textbf{Overleaf} — Overleaf is an online \LaTeX{} editor. They have both free and paid options. They have excellent documentation at \kref{https://www.overleaf.com/learn}{https://www\\.overleaf.com/learn} and free templates at \kref{https://www.overleaf.com/latex/templates}{https://www.overleaf\\.com/latex/templates}
\item The \textbf{\LaTeX{} Community} has a helpful forum at \kref{https://latex.org/forum/}{https://latex.org/fo\\rum/}
\item \textbf{texblog — because \LaTeX{} matters} has a number of useful articles (\kref{https://texblog.org/}{https://texblog.org/}) but hasn't been updated in a while.
\item \textbf{CTAN — Comprehensive \TeX{} Archive Network}\kref{https://ctan.org/}{https://ctan.o\\rg/} has lots of good information. This is where I go to find information about packages.
\item \textbf{LaTeX Wikibook}\kref{https://en.wikibooks.org/wiki/LaTeX}{https://en.wikibooks.org/wiki/LaTeX}
\item \textbf{Dickimaw Books — \LaTeX{} Resources} — A website by a retired math professor with some useful information. \kref{https://www.dickimaw-books.com/latexresources.html}{https://www.dickimaw-books.com/latexresources.html}
\item \textbf{\TeX{} FAQ}\kref{https://texfaq.org/}{https://texfaq.org/}
\item \textbf{texdoc online documentation} — The \TeX{} and \LaTeX{} documentation lookup system. \kref{https://texdoc.org/index.html}{https://texdoc.org/index.html}
\item \textbf{The Prac\TeX{} Journal} — The online journal of the Tex Users Group. No new issues since 2012. This journal does not contain as much useful information, but it does contain \textit{interesting} information. \kref{https://tug.org/pracjourn/2012-1/toc.html}{https://t\\ug.org/pracjourn/2012-1/toc.html}
\item \textbf{\textsc{TUGboat}} — The communications of the \TeX{} Users Group. Again, there is less useful information to a \LaTeX{} novice, but lots of \textit{interesting} information. \kref{https://www.tug.org/TUGboat/}{https://www.tug.org/TUGboat/}
\end{itemize}
\chapter{\LaTeX{} Basics}
\section{Files vs. Documents}
In this book, I use the word \textit{file} to refer to the \texttt{.tex} file you are entering text and code into, whereas I use the word \textit{document} to refer to the output you get from processing that file, which is usually a \texttt{.pdf} file/document.
\section{Files}
\LaTeX{} uses plain files with a file extension of \texttt{.tex}. That's it! They contain plain text only and no binary codes or hidden formatting extensions. (Try opening any word processing document in a text editor and see what I mean here.) You can use any text editor, although a GUI is available for most operating systems.
\section{File Structure}
Every \LaTeX{} file has two parts:
\begin{enumerate}[noitemsep]
\item A \textbf{preamble} in which you declare the class and add any packages you may need, as well as set other variables such as the title and author.
\item A \textbf{document} environment which contains the actual text of the document.
\end{enumerate}
If you are familiar with \texttt{html}, these correspond roughly to the \texttt{<head>} and \texttt{<body>} elements.
\subsection{The Preamble}
Within the preamble, you can declare the document's \textit{class}, which is a description of the type of document you are creating. The most common classes are \texttt{article}, \texttt{report}, \texttt{book}, \texttt{memoir}, and \texttt{beamer} (for presentations). A typical class declaration looks like:
\begin{Verbatim}
\documentclass[twoside]{report}
\end{Verbatim}
The class is described between curly brackets, but you can also include several \textit{options} in square brackets. The above document class is a two-sided report. ``Two-sided'' means that it may have different margins, headers, and footers on right and left handed pages. Other options, such as paper size and font size, are available.
\subsection{The \texttt{document} Environment}
Anything not in the preamble goes in the \texttt{document} environment, which looks like this:
\begin{Verbatim}[commandchars=\+\(\)]
\begin{document}
+textit(…your stuff…)
\end{document}
\end{Verbatim}
\subsection{Document Structure}
Each \LaTeX{} document can be divided into a hierarchical structure consisting of the following sections:
\begin{verbatim}
Part
Chapter
Section
Subsection
Subsubsection
Paragraph
Subparagraph
\end{verbatim}
\noindent{} To add one, use:
\kpic{1}{standalone/build/book[]}
Notice that we have the option \texttt{[Books]} which describes how this chapter will appear in the table of contents. To prevent a section from being numbered or appearing in the table of contents, replace this entire option with an asterisk:
\kpic{1}{standalone/build/book*}
For best results, stick to the hierarchical structure shown above, as this is also how each section will be numbered. See the table of contents of this zine as an example.
\section{Document Classes}
The different types of document classes help you build a specific type of document. Here is a brief description of the most common classes:
\bigskip
% Provide some additional spacing in this table; may move this to preamble later
\setlength{\tabcolsep}{14pt}
\renewcommand{\arraystretch}{1.4}
\noindent{}\begin{tabular}{| m{12mm} | m{80mm} |}
\hline
\textbf{Class} & \textbf{Usage} \\
\hline
\textbf{article} & Articles for scientific or mathematical journals, short reports, and any kind of short document which does not require separate chapters or parts. \\
\hline
\textbf{report} & A long article form that contains chapters. It is often used for small books and theses. \\
\hline
\textbf{book} & Used to typeset actual books. It can contain chapters and parts, left and right pages, frontmatter, etc. \\
\hline
\textbf{beamer} & Slide decks (It has supplanted the \texttt{slides} class.) \\
\hline
\textbf{letter} & For writing letters \\
\hline
\textbf{exam} & Exams and quizzes \\
\hline
\textbf{proc} & For writing meeting proceedings \\
\hline
\end{tabular}
\bigskip
\section{Paragraphs and White Space}
To start a new paragraph, simply skip a line. \LaTeX{} compresses white space, so if you are importing text from a text document, any lines that are adjacent to each other will be in the same paragraph. Additionally, multiple spaces will appear as a single space. For example, this code:
\begin{Verbatim}[frame=lines, numbers=left, label=\fbox{White Space Example}, breaklines=true, framesep=3mm]
This is the first paragraph.
This text, although it is on a separate line, is also part of the first paragraph.
We have skipped a line, so this starts a new paragraph.
This line is also in the second paragraph.
Readers will not see
all of these
spaces.
\end{Verbatim}
\noindent{} renders like this:
\klab{6pt}{White Space Example}{6pt}
%\vspace{2mm}
This is the first paragraph.
This text, although it is on a separate line, is also part of the first paragraph.
We have skipped a line, so this starts a new paragraph.
This line is also in the second paragraph.
Readers will not see
all of these
spaces.
\krule{2mm}{0mm}
\section{Comments}
Comments are created by adding a \texttt{\%} to the line. Anything beyond the percent sign will be ignored when your document is compiled.
To create multi-line comments, surround those lines with \verb|\iffalse| and \verb|\fi|:
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm, breaklines=true, label=Multi-line Comment Block]
\iffalse
These lines will not appear in your published text.
That is because they are surrounded by \iffalse and \fi.
If you didn't use that construction, you would need to put a \% in front of each line.
\fi
\end{Verbatim}
\section{Environments}
\noindent{} This is where \LaTeX{} shows its power, as environments are used to to take care of typesetting tasks. Every environment begins with \verb+\begin{<environ+ \verb+ment>}+ and ends with \verb+\end{<environment>}+. In fact, we've already seen one environment: the \texttt{document} environment, which encompasses our entire document.
\texttt{enumerate} and \texttt{itemize} are used for creating lists. See the chapter ``\nameref{listenv}'' on page \pageref{listenv} for more information.
Many packages introduce additional environments. For other useful environments that do not require additional packages, please see the chapter ``\nameref{specenv}'' on page \pageref{specenv} for more information.
\chapter{Formatting Words}
\section{Font Variations}
\LaTeX{} has various ways of formatting type:
% Provide some additional spacing in this table; may move this to preamble later
\setlength{\tabcolsep}{14pt}
\renewcommand{\arraystretch}{1.4}
\begin{table}[H]
\centering
\caption{Font Variations\label{fontvar}}
\medskip
\noindent{}\begin{tabular}{| m{2cm} m{4cm} m{2cm} |}
\hline
\textbf{Effect} & \textbf{Code} & \textbf{Example} \\
\hline
Bold & \verb+\textbf{Bold}+ & \textbf{Bold} \\
\hline
Italic & \verb+\textit{Italic}+ & \textit{Italic} \\
\hline
Slanted & \verb+\textsl{Slanted}+ & \textsl{Slanted} \\
\hline
Emphasis & \verb+\emph{Emphasis}+ & \emph{Emphasis} \\
\hline
Typewriter & \verb+\texttt{Typewriter}+ & \texttt{Typewriter} \\
\hline
Small Caps & \verb+\textsc{Small Caps}+ & \textsc{Small Caps} \\
\hline
Sans Serif & \verb+textsf{Sans Serif}+ & \textsf{Sans Serif} \\
\hline
\end{tabular}
\end{table}
\bigskip
It is possible to combine these. For example, to write \textit{\textsc{Italic text in Small Caps}}, you would use:
\bigskip
\noindent{}\verb+\textit{\textsc{Italic text in Small Caps}}+
\paragraph{Deprecated Code} — Note that in \LaTeX2e{} code such as \verb+{\it some text}+ and \verb+{\bf some text}+ are deprecated.
%\footnote{(See ~\cite{website:stexc002} and ~\cite{website:stexc003}.)}
\footnote{See \kref{https://tex.stackexchange.com/questions/41681/correct-way-to-bold-italicize-text}{https://tex.stackexchange.com/questions/41681/correct-way-to-bold-italicize-text} and \kref{https://tex.stackexchange.com/questions/516/does-it-matter-if-i-use-textit-or-it-bfseries-or-bf-etc}{https://tex.stackexchange.com/questions/516/does-it-matter-if-i-use-textit-or-it-bfseries-or-bf-etc} for more information.}
\section{Size Variations}
\subsection{Global}
To set the overall size of text in your document, pass it to your \texttt{documentclass} command as an option. For most classes (\texttt{article}, \texttt{book}, \texttt{report}, \texttt{letter}, and \texttt{proc}), the default font size is 10 pt, but 11pt and 12 pt are also available.
These same classes also have \texttt{ext} versions (\texttt{extarticle}, \texttt{extbook}, and so forth). With these classes, the other available size options are 8pt, 9pt, 11pt, 12pt, 14pt, 17pt, and 20pt.
The default for the \texttt{memoir} class is 10pt, and the other available options are 9pt, 11pt, 12pt, 14pt, 17pt, 20pt, 25pt, 30pt, 36pt, 48pt, and 60pt.
The default for the the \texttt{beamer} class is 11pt, and the other available options are 8pt, 9pt, 10pt, 11pt, 12pt, 14pt, 17pt, and 20pt.
\subsection{Local}
\section{Displaying Code}
You have a few different options when trying to display code. For code which is not executable, you can always format it as typewriter text by wrapping it in \verb+\texttt{code}+. This will, generally, display it in a sans-serif font.
The problem with this approach is that \LaTeX{} will attempt to execute any commands that you have included in that wrapper. An alternative to this is to use the \verb+\verb+ command. \verb+\verb+ does not need to use curly brackets (i.e., { and }) to contain its argument. Rather, it can contain its argument in between any two symbols which are \textit{not} contained it its argument. Two common options are the pipe symbol (\texttt{|}) and the plus sign (\texttt{+}). For example, to write \verb+verb+ in our document, we could include either \verb+\verb|\verb|+ in our file or \verb|\verb+\verb+|. We could just as easily write this as \verb2\verb4\verb42. In this case, the character ``4'' is used as a delimiter to indicate what should be output directly to the document.
As usefule as \verb+\verb+ is, it has one drawback: it does not wrap. That is, if whatever you place between the delimiters is longer than the line length, it will simply go off the page. Here's an example: \verb+verb|This text is longer than the line length and will simply go off the page|+.
The only way around that is to break that text into two part like this:
\begin{verbatim}
\verb|This text is longer| \\ \verb|than the line length and w
ill simply go off the page|
\end{verbatim}
It works, but it's clunky. If you change anything around those two \texttt{verb} commands, you'll need to adjust what is contained within each of them.
For longer code examples, you will need to use the built-in environment \texttt{verbatim}. To gain more control over those environments, you will need to use the package \texttt{fancyvrb}. For more information, see the section ``\nameref{codeexp}'' on page \pageref{codeexp}.
\chapter{Formatting Paragraphs}
\section{Alignment}
\section{Vertical Space}
\subsection{\texttt{vspace}}
\section{Horizontal Space}
\subsection{\texttt{hspace}}
\subsection{Phantoms}
Sometimes you need to insert a blank space that is the width of a particular character or stretch of space. To do this, you will need to use the \texttt{phantom} command.
\begin{itemize}[noitemsep]
\item \verb+\phantom+~ inserts an empty box with the same dimensions (horizontal as well as vertical) as the argument.
\item \verb+\hphantom+~ inserts an empty box that has zero height, zero depth, but the width of its argument.
\item \verb+\vphantom+~ inserts an empty box that has the height and depth of the argument, but zero width.
\end{itemize}
\textit{height} is the length above the baseline and \textit{depth} is the length below the baseline. A character such as ``w'' will have a height but zero depth, and ``y'' has height as well as depth.
\section{Line Spacing}
\LaTeX{} was designed to write documents; as such, its ability to fine-tune certain document parameters, such as line-spacing, is fairly limited out of the box. You can fine-tune this with the \texttt{setspace} package. Add that to your preamble, and you can adjust the line spacing of your document by adding either \texttt{singlespacing}, \texttt{onehalfspacing}, or the \texttt{doublespacing} command to your preamble.
That gives you the versatility that you had with a typewriter. To set more precise line spacing, you can use the \texttt{setstretch} command in your preamble:
\begin{verbatim}
\setstretch{1.1}
\end{verbatim}
\noindent which sets a line spacing equivalent to 1.1 lines. If you want to change the line spacing for just a portion of your document, use the \texttt{spacing} environment:
\begin{verbatim}
\begin{spacing}{2.5}
Your widely spaced text goes here.
\end{spacing}
\end{verbatim}
\chapter{Tables}
To break lines in a table cell, use \verb+\newline+ or add the \texttt{makecell} package.
If you need a table that breaks across pages, use the \texttt{longtable} package, which takes pretty much the same options as the \texttt{tabular} environment.
\chapter{Formatting Pages}
\section{Page Size}
The usual way to define a page size is to pass it as an option to the document class:
\begin{verbatim}
\documentclass[letterpaper]{article}
\end{verbatim}
\noindent{}The widths and heights of the predefined page sizes in \LaTeX{} are:
% Provide some additional spacing in this table; may move this to preamble later
\setlength{\tabcolsep}{18pt}
\renewcommand{\arraystretch}{1.4}
\begin{table}[H]
\centering
\caption{Default Paper Sizes\label{defpapsiz}}
\medskip
\noindent{}\begin{tabular}{ m{2cm} m{2cm} m{2cm} }
\hline
\textbf{Option} & \textbf{width} & \textbf{height} \\
\hline
a4paper & 210 mm & 297 mm \\
\hline
a5paper & 148 mm & 210 mm \\
\hline
b5paper & 176 mm & 250 mm \\
\hline
letterpaper & 8.5 in & 11 in \\
\hline
legalpaper & 8.5 in & 14 in \\
\hline
executivepaper & 7.25 in & 10.5 in \\
\hline
\end{tabular}
\end{table}
\bigskip
\section{Customizing Page Sizes Using \texttt{geometry}}
\section{Customizing Pages}
\subsection{Omitting Headers and Footers on a Page}
To \textit{omit} the headers and footers on a given page, include the \texttt{titlesec} and package in the preamble, and add this somewhere \textit{after} the start of the page.
\begin{verbatim}
\thispagestyle{empty}
\end{verbatim}
\subsection{Removing Page Numbers from ``Part'' Pages}
Chapters that are grouped into parts will have a ``Part'' page at the front of them. Surprisingly, these pages still have page numbers. You can remove them by adding the \texttt{nonumonpart} package.
\subsection{Adding Additional Text to ``Part'' Pages}
In actual books, a ``part'' pages often contain some sort of epigraph. You can make the text an optional argument to the \verb|\part| command by adding this to the preamble:\footnote{As described by \href{https://tex.stackexchange.com/users/1090/david-carlisle}{David Carlisle} at \kref{https://tex.stackexchange.com/questions/336361/how-to-write-text-after-part}{https://tex.stackexchange.com/questions/336361/\\how-to-write-text-after-part}.}
\begin{verbatim}
\makeatletter
\let\old@endpart\@endpart
\renewcommand\@endpart[1][]{%
\begin{quote}#1\end{quote}%
\old@endpart}
\makeatother
\end{verbatim}
\texttt{makeatletter} changes the \texttt{@} to the ``letter'' category code so that the current document has access to package internal macros. \texttt{makeatother} changes it back to a letter so you can use it in your document.\footnote{This gets into the internal workings of LaTeX and so is far beyond the scope of this zine. However, there is some good information at \href{https://tex.stackexchange.com/questions/8351/what-do-makeatletter-and-makeatother-do}{\texttt{https://tex.stackexchange.com/questions/8351/what-do-makeatletter-and-makeatother-do}} and at \href{https://www.tug.org/pipermail/tugindia/2002-January/000178.html}{\texttt{https://www.tug.org/pipermail/tugindi \\ a/2002-January/000178.html}} if you are interested. A complete list of category codes can be found at \href{https://en.wikibooks.org/wiki/TeX/catcode}{\texttt{https://en.wikibooks.org/wiki/TeX/catcode}}}
\verb|\let\old@endpart\@endpart| says ``take the old value for \texttt{endpart} (which is part of the \texttt{part} function) and give it this new value that I'm about to describe''.
The rest of it (that is, the \texttt{renewcommand} part) redefines the \texttt{endpart} to now include a \verb|\quote| environment, which is quite appropriate for an epigraph.
\subsection{Include Page Numbers on ``Chapter'' Pages}
In most document classes, the ``chapter'' pages do not contain page numbers. If you would like them to have page numbers, add this to the preamble:
\begin{verbatim}
\usepackage[]{titlesec}
\assignpagestyle{\chapter}{fancy}
\end{verbatim}
\chapter{List Environments}\label{listenv}
\section{Enumerate}
\texttt{enumerate} is used to create numbered lists. They can be nested to create an outline. To prevent \LaTeX{} from adding a lot of space between the item numbers, add the \texttt{enumitem} package pass the \texttt{[noitemsep]} to the environment.
For example, this code:
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, label=\fbox{Enumerate Example}, framesep=6mm]
\paragraph{The First Punic War}
\begin{enumerate}[noitemsep]
\item Carthage and Rome
\begin{enumerate}
\item Beginning of Foreign Conquests
\item The Origin of Carthage
\item Government of Carthage
\end{enumerate}
\item Operations in the First Punic War
\begin{enumerate}
\item Outbreak of the War in Sicily
\item Capture of Messana and Agrigentum
\end{enumerate}
\item Events Following the War
\end{enumerate}
\end{Verbatim}
\noindent{} produces this output:
\klab{0pt}{Enumerate Example}{0pt}
\paragraph{The First Punic War}
\begin{spacing}{0.7}
\begin{enumerate}[noitemsep]
\item Carthage and Rome
\begin{enumerate}
\item Beginning of Foreign Conquests
\item The Origin of Carthage
\item Government of Carthage
\end{enumerate}
\item Operations in the First Punic War
\begin{enumerate}
\item Outbreak of the War in Sicily
\item Capture of Messana and Agrigentum
\end{enumerate}
\item Events Following the War
\end{enumerate}
\end{spacing}
\vspace{2mm} \hrule
\section{Itemize}
Similar to the \texttt{enumerate} environment, the \texttt{itemize} environment creates bulleted lists, which can also be indented.
As an example, we'll use the above example, but in a bulleted list:
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, label=\fbox{Itemize Example}, framesep=6mm]
\paragraph{The First Punic War}
\begin{itemize}[noitemsep]
\item Carthage and Rome
\begin{itemize}
\item Beginning of Foreign Conquests
\item The Origin of Carthage
\item Government of Carthage
\end{itemize}
\item Operations in the First Punic War
\begin{itemize}
\item Outbreak of the War in Sicily
\item Capture of Messana and Agrigentum
\end{itemize}
\item Events Following the War
\end{itemize}
\end{Verbatim}
\noindent{} produces this output:
\klab{0pt}{Itemize Example}{0pt}
\paragraph{The First Punic War}
\begin{spacing}{0.7}
\begin{itemize}[noitemsep]
\item Carthage and Rome
\begin{itemize}
\item Beginning of Foreign Conquests
\item The Origin of Carthage
\item Government of Carthage
\end{itemize}
\item Operations in the First Punic War
\begin{itemize}
\item Outbreak of the War in Sicily
\item Capture of Messana and Agrigentum
\end{itemize}
\item Events Following the War
\end{itemize}
\end{spacing}
\vspace{2mm} \hrule \vspace{4mm}
\section{Customizing List Environments}
You can replace the bullets with any math symbol availabe in \LaTeX{} like this:
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, label=\fbox{Bullets Example}, framesep=6mm]
\begin{itemize}[noitemsep]
\item[$\Box$] First item
\item[$\aleph$] Second item
\item[$\triangle$] Third item
\end{itemize}
\end{Verbatim}
\noindent{} which produces this output:
\klab{8pt}{Bullets Example}{0pt}
\begin{itemize}[noitemsep]
\item[$\Box$] First item
\item[$\aleph$] Second item
\item[$\triangle$] Third item
\end{itemize}
\chapter{Special Environments}\label{specenv}
\section{Code Blocks}\label{codeexp}
\section{Quotations}
\subsection{\texttt{quote}}
\subsection{\texttt{quotation}}
\subsection{Customizing Quotations with the \texttt{quoting} Package}
\chapter{Math in \LaTeX{}}
\LaTeX{} has a couple of different environments that are useful for typesetting math (\texttt{align} and \texttt{array}, but they get a little beyond what I want to cover here. In addition, there are other packages (in particular \texttt{amsmath} and \texttt{mathtools}) that greatly extend the power of LaTeX to handle mathematical typesettings, but again, they are beyond the scope of this zine.
\section{Math Entry Modes}
There are two types of \textit{entry modes} for math in LaTeX. The first is \textbf{in-line mode}, which begins and ends with a dollar sign, and renders the math in the same line of text as the rest of the paragraph. For example,
\begin{Verbatim}[frame=lines, label=In-Line Math Example, framesep=3mm]
The Pythagorean Theorem is $x^2 + y^2 = z^2$.
\end{Verbatim}
\noindent{}renders as \\
\noindent{} The Pythagorean Theorem is $x^2 + y^2 = z^2$. \\
This is particularly useful if you want to include Greek characters in your text, because the code for the letter is simply the letter itself. For example, \verb+&\alpha$+ renders as $\alpha$. Need capital letters?\footnote{At least for the characters where the Greek and Latin alphabets \textit{don't} share a common character} Just capitalize it: \verb+$\Gamma$+ $\rightarrow \, \Gamma$.
Math in \LaTeX{} can also be shown in \textbf{display mode}, which renders the mathematics on a separate line. The entry mode begins with \verb+\[+ and ends with \verb+\]+. If we change our example up above to this:
\begin{Verbatim}[frame=lines, label=Display Mode Math Example, framesep=3mm]
The Pythagorean Theorem is \[x^2 + y^2 = z^2\]
\end{Verbatim}
\noindent{} we get this: \\
The Pythagorean Theorem is \[x^2 + y^2 = z^2\]
\section{Brackets and Parentheses}
Brackets and parentheses are common in mathematical formulas, so it is natural that \LaTeX{} has a number of ways of typesetting these.
% Provide some additional spacing in this table; may move this to preamble later
\setlength{\tabcolsep}{14pt}
\renewcommand{\arraystretch}{1.4}
\begin{table}[H]
\centering
\caption{Brackets and Parentheses\label{brackpar}}
\medskip
\noindent{}\begin{tabular}{| m{3.5cm} m{3cm} m{1.5cm} |}
\hline
\textbf{Type} & \textbf{Code} & \textbf{Example} \\
\hline
Parentheses; \newline round brackets & \verb|(a+b)| & $(a+b)$ \\
\hline
Brackets; \newline square brackets & \verb|[a+b]| & $[a+b]$ \\
\hline
Braces; curly brackets & \verb|\{a+b\}| & \{a+b\} \\
\hline
Angle brackets & \verb|\langle a+b \rangle| & $\langle a+b \rangle$ \\
\hline
Pipes & \verb:|a+b|: & $|a+b|$ \\
\hline
Double Pipes & \verb:\|a+b\|: & $\|a+b\|$ \\
\hline
\end{tabular}
\end{table}
\subsection{Adjusting Size Dynamically}
To dynamically size brackets and parentheses, you can use \verb+\left+ and \verb+\right+ commands. For example, this code
\begin{Verbatim}[frame=lines, numbers=left, xleftmargin=5mm, framesep=3mm]
\[
F=G \left( \frac{m_1 m_2}{r^2} \right)
\]
\end{Verbatim}
produces this output:
\[
F=G \left( \frac{m_1 m_2}{r^2} \right)
\]
Note that \textit{both} commands are required.
If you are writing a multi-line equations in an \texttt{align}, \texttt{align*}, or \texttt{aligned} environment, you must balance \verb+\left+ and \verb+\right+ both on each line, and on the same side of the \texttt{\&} delimiter. If an opening or closing bracket is not required, you can use an invisible bracket to balance them, i.e., \verb+\left.+ and \verb+\right.+.
\subsection{Adjusting Size Explicitly}
You can also control the size of brackets and parentheses explicitly:
% Provide some additional spacing in this table; may move this to preamble later
\setlength{\tabcolsep}{14pt}
\renewcommand{\arraystretch}{1.6}
\begin{table}[H]
\centering
\caption{Explicit Size Commands\label{brackparexp}}
\medskip
\noindent{}\begin{tabular}{| m{7cm} m{2cm} |}
\hline
\textbf{Markup} & \textbf{Renders as} \\
\hline
\verb+\bigl( \Bigl( \biggl( \Biggl(+ & $\bigl( \Bigl( \biggl( \Biggl($ \\
\hline
\verb+\bigr] \Bigr] \biggr] \Biggr]+ & $\bigr] \Bigr] \biggr] \Biggr]$ \\
\hline
\verb+\bigl\{ \Bigl\{ \biggl\{ \Biggl\{+ & $\bigl\{ \Bigl\{ \biggl\{ \Biggl\{$ \\
\hline
\verb+\bigl \langle \Bigl \langle \biggl+ \verb+\langle \Biggl \langle+ & $\bigl \langle \Bigl \langle \biggl \langle \Biggl \langle$ \\
\hline
\verb+\bigr \rangle \Bigr \rangle \biggr+ \verb+\rangle \Biggr \rangle+ & $\bigr \rangle \Bigr \rangle \biggr \rangle \Biggr \rangle$ \\
\hline
\verb+\big| \Big| \bigg| \Bigg|+ & $\big| \Big| \bigg| \Bigg|$ \\
\hline
\verb+\big\| \Big\| \bigg\| \Bigg\|+ & $\big\| \Big\| \bigg\| \Bigg\|$ \\
\hline
\verb+\bigl \lceil \Bigl \lceil \biggl+ \verb+\lceil \Biggl \lceil+ & $\bigl \lceil \Bigl \lceil \biggl \lceil \Biggl \lceil$ \\
\hline
\verb+\bigr \rceil \Bigr \rceil \biggr+ \verb+\rceil \Biggr \rceil+ & $\bigr \rceil \Bigr \rceil \biggr \rceil \Biggr \rceil$ \\
\hline
\verb+\bigl \lfloor \Bigl \lfloor \biggl+ \verb+\lfloor \Biggl \lfloor+ & $\bigl \lfloor \Bigl \lfloor \biggl \lfloor \Biggl \lfloor$ \\
\hline
\verb+\bigr \rfloor \Bigr \rfloor \biggr+ \verb+\rfloor \Biggr \rfloor+ & $\bigr \rfloor \Bigr \rfloor \biggr \rfloor \Biggr \rfloor$ \\
\hline
\end{tabular}
\end{table}
\section{The \texttt{align} Environment}
\section{The \texttt{array} Environment}
\section{Special Math Environments}
You can use the \texttt{nicefrac} package to get fractions with a diagonal slash. This is an ordinary fraction inline (using the \texttt{frac} command): $\frac{3}{4}$, and this is a ``nice'' fraction inline (using the \texttt{nicefrac} command): $\nicefrac{3}{4}$.
The following array shows the difference between ordinary and ``nice'' fractions in display mode:
\[\begin{array}{ccc}
\frac{3}{4} & & \nicefrac{3}{4}
\end{array}\]
\chapter{Images}
\chapter{Referencing}
\chapter{Macros}
\section{New Commands}
If there is a group of commands that you often use together, you can group them into a single command by using the \verb+\newcommand[]{}+ command in the preamble.
The square brackets contains a number that indicates the number of variables you are going to pass to the new command. The curved brackets contain the new command. For example, this code in the preamble:
\begin{verbatim}
\newcommand\krule[2]{\vspace{#1}\hrule\vspace{#2}}
\end{verbatim}
\noindent{}defines a new rule ``krule'' that places a horizontal line (\verb+\hrule+) with a vertical space (\verb+\vspace+) above and below it. It contains two variables, one for the height of the first vertical space and one for the height of the second vertical space. In practice, this rule would be used like this:
\begin{verbatim}
\krule{12pt}{6pt}
\end{verbatim}
\paragraph{Note:} In this format, you must always pass the units to the new command when you execute it. You can also define this rule to have the units built into the new command like this:
\begin{verbatim}
\newcommand\krule[2]{\vspace{#1pt}\hrule\vspace{#2pt}}
\end{verbatim}
and to use it, you would enter
\begin{verbatim}
\krule{12}{6}
\end{verbatim}
This means less typing, but you are always restricted to using the same units.
\chapter{Installation}
\section{Installing \LaTeX{}}
Nope. I'm not going to discuss this subject, because this would make this a very long book, and it would also quickly make it a quickly outdated and inaccurate book. Your best approach would be to do a web search for your operating system + ``\texttt{install latex}''. If you want a GUI (and who doesn't?), search for your operating system + ``\texttt{install latex gui}''.
\section{Installing \LaTeX{} Packages on Ubuntu}
\paragraph{Caveat:} This worked for me on Ubuntu 22.04. I cannot guarantee it will work for you. I cannot even guarantee that it will work for me again.
\subsubsection{Method 1}
Every once in a while I run into a package that I want to use with LaTeX that is not installed on my system. Alas, there is no easy way to do this, at least that I found. \textit{Later}, I always thought. I'll figure that out later.
\textit{Later} became \textit{today} when I wanted to use the \texttt{harmony} package to produce some music symbols but couldn't, because it wasn't installed on my system. It took some doing, but I finally figured it out. Here's what I did:
First, I downloaded the \texttt{harmony} packaged from \href{https://www.ctan.org/pkg/harmony}{\texttt{https://www.ctan.org \\ /pkg/harmony}} and unpacked the archive. That was easy enough.
Next, I had to figure out where to put it. I ran this command:
\begin{verbatim}
$ kpsewhich -var-value TEXMFLOCAL
\end{verbatim}
which gave me this location:
\begin{verbatim}
/usr/local/share/texmf
\end{verbatim}
Following the directions I found at \href{https://jvgomez.github.io/pages/manually-install-latex-packages-in-ubuntu.html}{\texttt{https://jvgomez.github.io/page \\ s/manually-install-latex-packages-in-ubuntu.html}} I entered that directory using \texttt{sudo} and created the following directory structure:
\begin{verbatim}
/usr/local/share/texmf/tex/latex/harmony
\end{verbatim}
I then copied my files over from the unpacked \texttt{harmony} files:
\begin{verbatim}
$ sudo cp * /usr/local/share/texmf/tex/latex/harmony
\end{verbatim}
I then had to update the search path to make my system aware of the new package:
\begin{verbatim}
$ sudo mktexlsr
\end{verbatim}
This should have been the end of it, but the \texttt{harmony} packages requires a certain set of fonts to do its work. After a bit of searching, I found them at \href{https://ctan.org/tex-archive/fonts/musixtex-fonts}{\texttt{https://ctan.org/tex-archive/fonts/musixtex-fonts}}.
Fortunately, that package had a pdf document that described how to install the fonts. I started by copying the ``fonts'' folder over the \texttt{texmf} directory:
\begin{verbatim}
$ cp fonts /usr/local/share/texmf
\end{verbatim}
And then I updated the search path and then the font-map files with these commands:
\begin{verbatim}
$ sudo mktexlsr
$ sudo udpmap-user --enable MixedMap musix.map
\end{verbatim}
Like I've said elsewhere, I'm running a recently updated Ubuntu 22.04 system, and this worked for me. It may work for you, it may not. I can't even guarantee that it will work for me next time. (I suspect having a generic folder name like ``fonts'' may cause me issues down the road if I ever want to install some other LaTeX fonts.) But if I got it to work once, I'm pretty sure I can get it to work again. We shall see.
\subsubsection{Method 2}
A perhaps easier (and certainly more \textit{portable}) way of installing LaTeX packages is to add them to a local directory along the lines of:
\begin{verbatim}
/home/user/texmf
\end{verbatim}
This is how I installed the \textit{musixtex} package, and it far simpler than what I have described in method 1.
First, I downloaded the package and unpacked it. Then I copied its contents into my \texttt{texmf} directory, and finally updated the filename database:
\begin{verbatim}
$ cp * ~/texmf
$ texhash ~/texmf
\end{verbatim}
\chapter{Miscellaneous}
\section{What I Learned About \LaTeX{} While Creating This Issue}
\subsection{Image Sizes}
A few people have noted on Reddit that the images I include are far larger than I need them to be. This is true. I had a lot of things like this in issue \#2:
\begin{verbatim}
\includegraphics[scale=0.5]{paper_cutter}
\end{verbatim}
\noindent{}And it seems that the worst offender was this line:
\begin{verbatim}
\includegraphics[scale=0.13]{c128}
\end{verbatim}
This is a problem because that \texttt{paper\_cutter.jpg} image is 136kb in size and that \texttt{c128.jpg} image is 2.3 mb in size. Because these get included in \LaTeX{}, which then handles the scaling, the resulting pdf file is rather bloated, which is the exact opposite of what you want when you are distributing something via the internet.
Because I am scaling the paper cutter image by 0.5, the resulting file size should be about a fourth of that, or 34 kb. And because I'm scaling the c128 image by 0.13, the corresponding file size should be about 0.0169 of that, or roughly 40 kb in size. That's a huge difference.\footnote{Roughly, the size of your file should be approximately reduced by the square of your scaling factor. But these are jpg files, which are lossy, so it's never exactly that amount.}
The problem is that I always envisioned this zine as being a physical object, not a digital one. I only uploaded it to my git repository because this is a learning project for me, and I wanted to keep track of any changes I made.
But yeah, you should definitely resize your images before including them in any document you intend to distribute digitally. (Thank you, GIMP.) You'll notice that the image of the VT100 terminal on page 5 clocks in at a very sensible 79 kb. That's more like it.
\subsection{Miscellaneous Things}
\begin{itemize}[noitemsep]
\item Need a little bit more control over things in a \texttt{verbatim} environment? Just add the \texttt{fancyvrb} package.
\item Need even more control than the \texttt{fancyvrb} package gives you? Try the \texttt{fvextra} package. (I used it because it very nicely breaks lines inside this environment.)
\item Notice that your footnotes are floating above the footer on some pages? Try adding \verb+\usepackage[bottom]{footmisc}+ to your preamble.
\item Need to control the gap between the header and the rest of the text? Pass the \verb|headsep| argument to the \texttt{geometry} package and set it equal to the amount of space you need (i.e., \texttt{headsep=12pt}).
\item If you want to add a degree symbol to inline text, the simplest way I've found (so far) is to just pop in and out of math mode with this: \verb|$^{\circ}$| which gives you this: $^{\circ}$
\end{itemize}
\chapter{Troubleshooting}
\section{Minimal Working Examples}
In particular with \LaTeX{}, it can help if you create an MWE (minimal working example) when working with new things, to rule out interference from other bits of code.
\section{\texttt{\}\%} is Your Best Friend}
sample text~\cite{website:overleaf001} ~\cite{website:wikibooks001} ~\cite{website:stexc001}
more text ~\cite{website:stexc001}
\noindent{}\cite{stexc004}
\krule{12pt}{12pt}
\noindent{}Use this command to build your bib:
\begin{verbatim}
bibtex build/lbol
\end{verbatim}
\begin{small}
\begin{flushleft}
\bibliographystyle{plain}
\bibliography{bib/sites}
\end{flushleft}
\end{small}
\end{document}