# LaTeX documentation

All LaTeX handouts are based on [`ormc_handout.cls`](./lib/tex/ormc_handout.cls). \
This class is based on `article.cls`, and should work with most LaTeX packages.

The best way to start a new document is to make a copy of an existing one.
- [Advanced/Cryptography](./src/Advanced/Cryptography) is a good example of a simple handout.
- [Advanced/DFAs](./src/Advanced/DFAs) is a good example of a handout with graphs.
- [Advanced/Geometric Optimization](./src/Advanced/Geometric%20Optimization) is a good example of a handout with geometry.


## Notes
- Compile your handouts with XeLaTeX. \
  `pdflatex` is known to misbehave with `ormc_handout.cls`. \
  This will happen by default if you use vscode. \
  If you use Overleaf, you'll have to configure it manually (see document settings).

## Document Options

Document options are passed to `\documentclass`, as follows:
```latex
\documentclass[
	% Show solutions is `solutions` is provided,
	% hide them if `nosolutions` is provided.
	%
	% You should set only ONE of these flags at a time.
	% Solutions are shown by default.
	% All handouts are stored with `solutions` enabled.
	solutions,
	nosolutions,

	% Enable this option if you need more space on the handout's first page.
	% We use a long warning by default.
	shortwarning,

	% If present, hide page numbers.
	% This should only be used for single-page handouts
	% (e.g, warm-ups)
	nopagenumber
]{ormc_handout}
```

Use `geometry` to change margins and page dimensions. US letter is the default.


## Utilities
- `\say{text}`: Puts text in quotes, handling details like period spacing. Courtesy of `dirtytalk`.
- `\note[Type]{text}`: Makes a note.
- `\hint{text}`: Shorthand for `\note[Hint]{text}`

## Sections

The usual LaTeX title-customization techniques *WILL NOT WORK* with this class. \
Don't even try to load `titlesec`.

`ormc_handout.cls` supports two levels of sections:
- `\section`, for large parts of the handout
- `\definition`, `\theorem`, `\proposition`, `\example`, `\remark`, `\problem`, and `\problempart`

All these macros have the following syntax: `\problem{title}<label>`
- `title` is the problem's title, and may be empty.
- `label` is the problem's label. This is optional. \
  If a label is provided, this section may be referenced with `\ref{label}`.

Examples:
- `\problem{}`
- `\problem{Bonus}`
- `\problem{}<gcd>`, which may be referenced with `\ref{gcd}`

Do **not** use `\begin{problem} ... \end{problem}`. \
Sections are macros, not environments.

## Environments:

- `\begin{solution}`: A fancy red for solutions to problems. \
	This is hidden if the `nosolutions` is provided.
- `\begin{instrutornote}`: A fancy blue box for instructor notes. \
	This is hidden if the `nosolutions` is provided.
- `\begin{examplesolution}`: A fancy gray for sample solutions. \
	This is never hidden.

All the above environments break across pages and may safely be nested.

Each of these environments also provides the `\linehack` macro, which draws a line across the box. \
This is useful for, say, solutions to multipart problems.