This isn't everything you're looking for, but it's a start, and hopefully will give you an idea of how easily document class customization can start out. Mind you, I'm not going to worry much about emulating bad habits from the Word document, but focus on simple semantic content and formatting.
Let's start with some minimal content from your PDF:
\documentclass[12pt]{article}
\title{Personal Protective Clothing Level}
\date{7/24/08}
\author{Harper}
\begin{document}
\maketitle
\section{Procedures}
\subsection{Structure Fires}
\begin{enumerate}
\item All firefighters operating in the ``hot zone'' of a structure fire will be in
full turnouts to include coat, pants, helmet, hood, gloves and boots. When operating
in an IDLH atmosphere an SCBA shall be worn.
\item Engineers when operating close to the incident and exposed to products of
combustion shall also be in full PPE including SCBA. If outside the ``hot zone''
engineers will be allowed to modify their PPE accordingly. If the Engineer is
considered to be a part of the RIT team, then full PPE including an SCBA shall be
worn.
\end{enumerate}
\end{document}
Using the standard article class as given, you get page content that looks like
After writing a (relatively) simple document class based off article, the same content (with \documentclass[12pt]{sop}
and \approved{Chief Harper}
instead of \documentclass[12pt]{article}
, you get page content that looks like
and
The file sop.cls that created this layout is:
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{sop}[2011/07/08 v0.2 Modified article class for standard operating procedures]
% https://stackoverflow.com/questions/581916/how-do-you-extend-article-document-class-in-latex
% Passes and class options to the underlying article class
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions
\LoadClass{article}
% Redefine the page margins
\RequirePackage[left=1in,right=1in,top=1in,bottom=1in]{geometry}
% Modifications to the section titles
\RequirePackage{titlesec}
\renewcommand{\thesection}{\Roman{section}}
\titleformat{\section}{\normalfont\bfseries}
{\makebox[3em][l]{\thesection{}.}}{0pt}{}
\titleformat{\subsection}{\normalfont\bfseries}
{}{0pt}{}
% Modification of title block
\RequirePackage{titling}
\RequirePackage{multirow}
\newcommand{\approved}[1]{\newcommand{\theapproved}{#1}}
% Ref: http://tex.stackexchange.com/questions/3988/titlesec-versus-titling-mangling-thetitle
\let\oldtitle\title
\renewcommand{\title}[1]{\oldtitle{#1}\newcommand{\mythetitle}{#1}}
\renewcommand{\maketitle}{%
\begin{tabular}{|c|p{2in}|l|l|} \hline
\multirow{3}{*}{logo} & \multicolumn{1}{p{2.5in}|}{\centering Mammoth Lakes Fire Protection District } & Date: \thedate & Number: \\ \cline{2-4}
& \multicolumn{1}{p{2.5in}|}{\centering Standard Operating Procedure } & \multicolumn{2}{p{2.5in}|}{Title: \mythetitle} \\ \cline{2-4}
& Approved By: \theapproved & \multicolumn{2}{l|}{Revision Date: \quad / \quad / \quad} \\ \hline
\end{tabular}
}
% For "Page N of M"
\RequirePackage{lastpage}
% For easier construction of page headers/footers
\RequirePackage{fancyhdr}
\fancypagestyle{plain}{ % for first page
\fancyhf{}
\fancyfoot[L]{\framebox{Author: \theauthor}\\ \jobname{}.tex}
\fancyfoot[R]{\framebox{Page: \thepage{} of \pageref*{LastPage}}}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
}
\pagestyle{fancy} % for other pages
\fancyhf{}
\fancyhead[R]{%
\begin{tabular}{|c|c|} \hline %
Revision Date: & Number: \\
\quad / \quad / \quad & \\ \hline
\end{tabular}%
}
\fancyfoot[L]{\framebox{Author: \theauthor}}
\fancyfoot[R]{\framebox{Page: \thepage{} of \pageref*{LastPage}}} % \pageref* if we use hyperref, \pageref otherwise
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
% For easier customization of itemized, enumerated, and other lists
\RequirePackage{enumitem}
% For hyperlinked cross-references
\RequirePackage{hyperref}
% Ensure first page is correct style
\thispagestyle{plain}
% That's all, folks!
\endinput
See this SO question for where I got started with this.
Best Answer
Short answer:
Any book about LaTeX is a guide to create your own template.
Long answer:
This is the general-purpose best template ever made for LaTeX, and the easiest to adapt to you personal requirements:
Now, the first question is for which type of document do you want this template. For example, if you want this template to write books, change
article
bybook
. This add hiddenly a lot of customizations (as allow\chapter
commnads, will put the title automatically in a page title, etc.)The second question is if there are alternative document classes for the same purpose. For example, you can use alternatively
scrbook
to obtain a similar book layout but with different style (headings in sans serif, etc.).However, with the above template with so brief text you will not notice significant changes. Obviously you need some structured contents to see the changes in the default style. With the help of the
blindtext
package this is just insert\Blinddocument
and the commands to make a title. It could be aso a good idea check the document layout with the package of the same name. MWE:Obviously, the commands of both packages are only for testing (remove them in the final template).
Now is time to go with the optional arguments of the document class. Read the fine manual (RTFM) to know what is available. The program
texdoc
is your friend. Just add some keyword after the program name and press Enter (e.g., runtexdoc scrbook
). For instance, if you want allow chapters in odd and even pages, the first line could be:The KOMA Script or memoir classes also have a lot of own commands for further customization. For example, said that you want only the sections headings in a serif font in a
scrbook
document. You might add to the preamble this line:With standard classes like
book
this is also possible but with the help of packages astitlesec
(easy way) or redefining the\section
comand (hard way).Select the right document class is the most important part of your own template, but even with the more rich classes as
scrbook
ormemoir
, at some point none of this is enough. For example, you want the section headings in blue. Then you should load also the packagecolor
orxcolor
(better) to allow colouring commands, the customization then could be:What more? Depends on what you need. For example, if you will show images you must load also the package
graphicx
(except if is already loaded by the document class or another package)- If you want hyperlinks suse thehyperref
package, if you need fancy rounded boxes, loadtcolorbox
and so on.See What packages do people load by default in LaTeX? to have some idea of most required enhancements. Only add what really is needed. Avoid load packages that only maybe you will use. Even following this rule, often you will end with a large preamble and some package conflict.
The last step is customize what is what is not planned by the document class nor any package. You need some experience here, but hopefully you have already several solutions to each problem in some question of this site. It could be simply set some lengths, make your own commands or even modify complex codes of the document class or some packages (typical
\makeatletter
...\makeatother
chunks of code in the preambles of many examples of this site). Is not possible cover every customization without a book, but my general rules are:mypreamble.tex
and load it with\input{mypreable}