summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/nostarch/nostarch.cls
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/nostarch/nostarch.cls')
-rw-r--r--Master/texmf-dist/tex/latex/nostarch/nostarch.cls625
1 files changed, 524 insertions, 101 deletions
diff --git a/Master/texmf-dist/tex/latex/nostarch/nostarch.cls b/Master/texmf-dist/tex/latex/nostarch/nostarch.cls
index 2bfbe9cb046..fdb987796db 100644
--- a/Master/texmf-dist/tex/latex/nostarch/nostarch.cls
+++ b/Master/texmf-dist/tex/latex/nostarch/nostarch.cls
@@ -37,11 +37,15 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{nostarch}
-[2008/06/06 v1.3 Typesetting books for No Starch Press]
+[2023/03/30 v2.0 Typesetting books for No Starch Press]
\newif\ifnostarch@cfonts
\nostarch@cfontstrue
\DeclareOption{cfonts}{\nostarch@cfontstrue}
\DeclareOption{nocfonts}{\nostarch@cfontsfalse}
+\newif\ifnostarch@fontsdir
+\nostarch@fontsdirtrue
+\DeclareOption{fontsdir}{\nostarch@fontsdirtrue}
+\DeclareOption{nofontsdir}{\nostarch@fontsdirfalse}
\long\def\nostarch@size@warning#1{%
\ClassWarning{nostarch}{Size-changing option #1 will not be
honored}}%
@@ -58,22 +62,148 @@
Configuration file nostarch.cfg is not found}}
\ProcessOptions\relax
\LoadClass[10pt]{book}
-\RequirePackage{ifpdf, fancyhdr, fancyvrb, booktabs, graphicx,
- listings, caption, makeidx, upquote}
+\RequirePackage[table]{xcolor}
+\RequirePackage{iftex, ifpdf, fancyhdr, fancyvrb, booktabs, graphicx,
+ listings, caption, makeidx, upquote, pifont,
+ textcomp, xcolor, lmodern, nameref, float, amssymb, etoolbox,
+ setspace, marginnote}
+\RequirePackage[framemethod=TikZ]{mdframed}
+\RequirePackage{soul}
+\RequirePackage[T1]{fontenc}
+\RequirePackage{ragged2e}
\RequirePackage{ragged2e}
\setlength\RaggedRightParindent{\parindent}
\RaggedRight
\def\@nschapterpreamble{}
+\ifnostarch@fontsdir
+ \def\nostarch@fontspath#1{Path=fonts/#1/,}
+\else
+ \def\nostarch@fontspath#1{Path,}
+\fi
\ifnostarch@cfonts
- \RequirePackage{nbaskerv}%
- \RequirePackage{futurans}%
- \RequirePackage[scaled=0.85]{thsmc}%
- \RequirePackage{dogma}%
- \newcommand{\dgdefault}{fdg}%
+ \ifpdftex
+ \ClassWarning{nostarch}{Commercial fonts usually require xelatex engine}
+ \RequirePackage{nbaskerv}%
+ \RequirePackage{futurans}%
+ \RequirePackage[scaled=0.85]{thsmc}%
+ \RequirePackage{dogma}%
+ \newcommand{\dogma}{\fontfamily{fdg}\selectfont}%
+ \else %XeTeX or LuaTeX
+ \RequirePackage{fontspec}
+ \newfontface\dogma[
+ \nostarch@fontspath{dogma}
+ UprightFont=dogmab01.ttf,
+ Ligatures=TeX
+ ]{dogma} % Font used for chapter titles
+
+ \newfontface\timesnewroman[
+ \nostarch@fontspath{tnr}
+ UprightFont=times.ttf,
+ BoldFont=timesbd.ttf,
+ ItalicFont=timesi.ttf,
+ BoldItalicFont=timesbi.ttf,
+ Ligatures=TeX
+ ]{timesnewroman}
+
+ \newfontface\futurabook[
+ \nostarch@fontspath{futurans}
+ UprightFont=FuturB37.ttf,
+ BoldFont=FuturH79.ttf,
+ ItalicFont=FutuBO08.ttf,
+ BoldItalicFont=FutCBO63.ttf,
+ Ligatures=TeX
+ ]{futurabook}
+
+ \newfontface\futuraheavy[
+ \nostarch@fontspath{futurans}
+ UprightFont=FuturH79.ttf,
+ Ligatures=TeX
+ ]{futuraheavy}
+
+ \newfontface\futuraboldc[
+ \nostarch@fontspath{futurans}
+ UprightFont=futucb18.ttf,
+ Ligatures=TeX
+ ]{futuraboldc}
+
+ \newfontface\futuraboldcoblique[
+ \nostarch@fontspath{futurans}
+ UprightFont=FutCBO63.ttf,
+ Ligatures=TeX
+ ]{futuraboldcoblique}
+
+ \newfontface\futuraoblique[
+ \nostarch@fontspath{futurans}
+ UprightFont=FutuBO08.ttf,
+ Ligatures=TeX
+ ]{futuraoblique}
+
+ \setmainfont{nbaskerv}[
+ \nostarch@fontspath{nbaskerv}
+ UprightFont=NewBaskervilleEF-Roman.ttf,
+ BoldFont=NewBaskervilleEF-Bold.ttf,
+ ItalicFont=NewBaskervilleEF-RomanIta.ttf,
+ BoldItalicFont=NewBaskervilleEF-BoldIta.ttf,
+ Ligatures=TeX]
+
+ \setmonofont[Scale=0.85,
+ \nostarch@fontspath{thsmc}
+ UprightFont=ThSMCP25.ttf,
+ BoldFont=ThSMCB02.ttf,
+ ItalicFont=ThSMCI29.ttf,
+ BoldItalicFont=TSMCBI56.ttf]{thsmc}
+
+ \setsansfont[
+ \nostarch@fontspath{futurans}
+ UprightFont=futura.ttf,
+ BoldFont=FuturB41.ttf,
+ ItalicFont=FutuBO08.ttf,
+ BoldItalicFont=FutCBO63.ttf,
+ Ligatures=TeX
+ ]{futurans}
+
+ \fi
\else
\newcommand{\dgdefault}{\sfdefault}%
\fi
+\providecommand{\dogma}{\fontfamily{dgdefault}\selectfont}
+\providecommand{\futuraboldc}{\fontfamily{\sfdefault}\fontseries{bc}%
+ \selectfont}
+\providecommand{\futuraboldcoblique}{\fontfamily{\sfdefault}\fontseries{bc}%
+ \itshape\selectfont}
+\providecommand{\futuraheavy}{\fontfamily{\sfdefault}\fontseries{hq}%
+ \selectfont}
+\providecommand{\futurabook}{\fontfamily{\sfdefault}\fontseries{k}%
+ \selectfont}
\normalsize
+\newcommand{\wingding}[1]{\ding{\the\numexpr #1 + 181 \relax}}
+\newcommand{\codewingding}[1]{\vbox{\llap{\wingding{#1}\hskip 0.5em}}}
+\newcommand\menuarrow{\raisebox{.2ex}{\small $\blacktriangleright$}}
+\newcommand{\bettertilde}{\raisebox{-1ex}{\textasciitilde}}
+\newcommand{\slashslash}{%
+ \raisebox{.53ex}{%
+ \scalebox{.5}{%
+ \rotatebox[origin=c]{18}{$\mathbf{/}$}%
+ }%
+ }%
+}
+\renewcommand{\neq}{\mathrel
+ {%
+ \vphantom{=}%
+ \ooalign{\kern.05em\smash{\slashslash}\hidewidth\cr$=$\cr}%
+ }%
+}
+
+\newcommand\keycap[1]{\fauxschelper#1 \relax\relax}
+\def\fauxschelper#1 #2\relax{%
+ \fauxschelphelp#1\relax\relax%
+ \if\relax#2\relax\else\ \fauxschelper#2\relax\fi%
+}
+\def\Hscale{.83}\def\Vscale{.72}\def\Cscale{1.00}
+\def\fauxschelphelp#1#2\relax{%
+ \ifnum`#1>``\ifnum`#1<`\{\scalebox{\Hscale}[\Vscale]{\uppercase{#1}}\else%
+ \scalebox{\Cscale}[1]{#1}\fi\else\scalebox{\Cscale}[1]{#1}\fi%
+ \ifx\relax#2\relax\else\fauxschelphelp#2\relax\fi}
\setlength{\paperheight}{9.25in}
\setlength{\paperwidth}{7in}
\ifpdf\relax
@@ -107,6 +237,10 @@
\widowpenalty=10000
\clubpenalty=10000
\raggedbottom
+\sodef\sochapter{}{.150em}{.5em}{1em}
+\sodef\sotitle{}{.125em}{.5em}{1em}
+\sodef\sobox{}{.075em}{.5em}{1em}
+\sodef\sonote{}{.200em}{.5em}{1em}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\pagestyle{fancy}
@@ -114,15 +248,15 @@
\rhead{}
\chead{}
\fancyhfoffset[L]{1in}
-\fancyfoot[RO]{\fontfamily{\sfdefault}\fontsize{6pt}{6pt}%
+\fancyfoot[RO]{\sffamily \fontsize{6pt}{6pt}%
\fontseries{lq}\selectfont\rightmark%
- \hspace{2em}\fontseries{bc}\fontsize{9pt}{6pt}\selectfont\thepage}
+ \hspace{2em} \futuraboldc \fontsize{9pt}{6pt}\selectfont\thepage}
\fancyfoot[LO]{}
\fancyfoot[CO]{}
-\fancyfoot[LE]{\fontfamily{\sfdefault}\fontseries{bc}\fontsize{9pt}{6pt}%
- \selectfont\thepage\hspace{2em}%
- \fontseries{lq}\fontsize{6pt}{6pt}\selectfont%
- \leftmark}
+\fancyfoot[LE]{\futuraboldc \fontsize{9pt}{6pt}%
+ \selectfont\thepage%
+ \fontseries{lq}\sffamily \fontsize{6pt}{6pt}\selectfont%
+ \hspace{2em}\leftmark}
\fancyfoot[RE]{}
\fancyfoot[CE]{}
\newcommand{\subtitle}[1]{\gdef\@subtitle{#1}}
@@ -135,12 +269,11 @@
\clearpage
{\pagestyle{empty}\cleardoublepage}%
\thispagestyle{empty}%
- \null\vskip1.025in%
+ \null%\vskip1.025in%
\leavevmode\noindent\hspace{1.66in}%
\begin{minipage}[t]{2.5625in}%
\flushright
- \fontfamily{\sfdefault}\fontseries{b}%
- \fontsize{12\p@}{13\p@}\selectfont
+ \sffamily\bfseries\fontsize{12\p@}{13\p@}\selectfont
\MakeUppercase{\@title}%
\end{minipage}}
\def\maketitle{%
@@ -155,18 +288,18 @@
\item\relax
\centering
\null\vskip0.855in%
- {\fontfamily{\dgdefault}\fontseries{bk}\fontsize{36\p@}{37\p@}\selectfont
- \MakeUppercase{\@title}\par}%
+ {\dogma \fontsize{36\p@}{37\p@}\selectfont
+ \MakeUppercase{\sotitle{\@title}}\par}%
\if\@subtitle\@empty\relax\else
{\null\vskip25\p@%
- \fontfamily{\dgdefault}\fontseries{bq}\fontsize{24\p@}{25\p@}\selectfont
+ \dogma \fontsize{24\p@}{25\p@}\selectfont
\@subtitle\par}%
\fi
- \vspace{1.7in}%
+ \vspace{2.15in}%
\vspace{-\baselineskip}%
- {\fontfamily{\sfdefault}\fontseries{hq}\fontsize{18\p@}{22\p@}\selectfont
+ {\futuraheavy\fontsize{18\p@}{22\p@}\selectfont
by \@author\par}%
- \vspace{0.45in}%
+ \vspace{12\p@}%
\vspace{\baselineskip}%
\if\@nostarchlogo\@empty\relax\else
\includegraphics[height=1.08in]{\@nostarchlogo}\par
@@ -195,16 +328,24 @@
\parindent\z@\parfillskip\@flushglue\parskip\z@skip}{\par\vskip8pt\relax}
\newenvironment{dedicationpage}{%
\clearpage
- {\pagestyle{empty}\cleardoublepage}%
+ \bgroup
+ \list{}{\leftmargin-1in\rightmargin\z@\labelwidth\z@%
+ \labelsep\z@\listparindent\z@\parsep8\p@\itemsep\z@%
+ \topsep\z@\partopsep\z@}%
+ \item\relax
\thispagestyle{empty}%
\null\vskip1.175in%
- \centering\normalfont}{\clearpage}
-\def\briefcontentsname{Brief Contents}
+ \centering\normalfont}{%
+ \endlist
+ \egroup
+ \clearpage}
+\def\briefcontentsname{{Brief Contents}}
\def\contentsname{Contents in Detail}%
\AtBeginDocument{\@ifpackageloaded{babel}{%
\addto\captionsenglish{%
\renewcommand{\contentsname}%
{Contents in Detail}}}{}}
+\newcommand{\apptoc}{\renewcommand{\chaptername}{Appendix}}
\newcommand\brieftableofcontents{%
\clearpage
{\pagestyle{empty}\cleardoublepage}%
@@ -217,8 +358,8 @@
\topsep\z@\partopsep\z@}%
\item\relax
{\centering
- \fontfamily{\dgdefault}\fontseries{bs}\fontsize{16\p@}{18\p@}\selectfont
- \MakeUppercase{\briefcontentsname}\par}\vskip40pt%
+ \dogma\fontsize{16\p@}{18\p@}\selectfont
+ \MakeUppercase{\sochapter{Brief Contents}}\par}\vskip40pt%
\@starttoc{tbc}%
\endlist
\egroup}
@@ -234,8 +375,8 @@
\topsep\z@\partopsep\z@}%
\item\relax
{\centering
- \fontfamily{\dgdefault}\fontseries{bs}\fontsize{16\p@}{18\p@}\selectfont
- \MakeUppercase{\contentsname}\par}\vskip18pt%
+ \dogma\fontsize{16\p@}{18\p@}\selectfont
+ \MakeUppercase{\sochapter{Contents in Detail}}\par}\vskip18pt%
\@starttoc{toc}%
\endlist
\egroup}
@@ -248,7 +389,7 @@
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
{\leavevmode
- \fontfamily{\sfdefault}\fontseries{bq}\fontsize{12\p@}{14\p@}\selectfont
+ \sffamily\bfseries\fontsize{12\p@}{14\p@}\selectfont
#1}\par
\nobreak
\global\@nobreaktrue
@@ -264,27 +405,35 @@
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode
- \fontfamily{\sfdefault}\fontseries{bq}\fontsize{10\p@}{12\p@}\selectfont
- #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
+ \sffamily \bfseries \fontsize{10\p@}{12\p@}\selectfont{#1}%
+ \nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
\vskip4\p@\penalty\@highpenalty
\endgroup
\fi}
\newlength{\sectionnumberwidth}
\settowidth{\sectionnumberwidth}{%
- \fontfamily{\sfdefault}\fontseries{k}\fontsize{9\p@}{11\p@}\selectfont
+ \futurabook\fontsize{9\p@}{11\p@}\selectfont
+ 99.99}
+\newlength{\boldsectionnumberwidth}
+\settowidth{\boldsectionnumberwidth}{%
+ \futuraheavy\fontsize{9\p@}{11\p@}\selectfont
99.99}
\newlength{\subsectionnumberwidth}
\settowidth{\subsectionnumberwidth}{%
- \fontfamily{\sfdefault}\fontseries{k}\fontsize{9\p@}{11\p@}\selectfont
+ \futurabook\fontsize{9\p@}{11\p@}\selectfont
99.99.99}
\renewcommand{\l@section}[2]{\@dottedtocline{1}{\z@}{%
\sectionnumberwidth}{%
- \fontfamily{\sfdefault}\fontseries{k}\fontsize{9\p@}{11\p@}\selectfont#1}{%
- \fontfamily{\sfdefault}\fontseries{k}\fontsize{9\p@}{11\p@}\selectfont#2}}
+ \futurabook\fontsize{9\p@}{11\p@}\selectfont#1}{%
+ \futurabook\fontsize{9\p@}{11\p@}\selectfont#2}}
\renewcommand{\l@subsection}[2]{\@dottedtocline{2}{0.5in}%
{\subsectionnumberwidth}{%
- \fontfamily{\sfdefault}\fontseries{k}\fontsize{9\p@}{11\p@}\selectfont#1}{%
- \fontfamily{\sfdefault}\fontseries{k}\fontsize{9\p@}{11\p@}\selectfont#2}}
+ \futurabook\fontsize{9\p@}{11\p@}\selectfont#1}{%
+ \futurabook\fontsize{9\p@}{11\p@}\selectfont#2}}
+\newcommand*\l@boldsection[2]{{\bfseries\@dottedtocline{1}{\z@}{%
+ \boldsectionnumberwidth}{%
+ \futuraheavy\fontsize{9\p@}{11\p@}\selectfont#1}{%
+ \futuraheavy\fontsize{9\p@}{11\p@}\selectfont#2}}}
\newcommand*\l@bpart[2]{%
\ifnum \c@tocdepth >-2\relax
\addpenalty{-\@highpenalty}%
@@ -293,13 +442,14 @@
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
{\leavevmode
- \fontfamily{\sfdefault}\fontseries{h}\fontsize{9\p@}{14\p@}\selectfont
+ \futuraheavy\fontsize{9\p@}{14\p@}\selectfont
#1}\par\vskip7\p@%
\nobreak
\global\@nobreaktrue
\everypar{\global\@nobreakfalse\everypar{}}%
\endgroup
\fi}
+\renewcommand{\@pnumwidth}{17pt}
\newcommand*\l@bchapter[2]{%
\ifnum \c@tocdepth >\m@ne
\addpenalty{-\@highpenalty}%
@@ -308,7 +458,7 @@
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode
- \fontfamily{\sfdefault}\fontseries{k}\fontsize{9\p@}{14\p@}\selectfont
+ \futurabook\fontsize{9\p@}{14\p@}\selectfont
#1\nobreak\leaders\hbox{$\m@th
\mkern \@dotsep mu\hbox{.}\mkern \@dotsep
mu$}\hfill
@@ -329,6 +479,7 @@
\def\sectionmark#1{}%
\newif\if@firstpara
\@firstparafalse
+\newcommand{\turnoffbigpara}{\@firstparafalse}
\def\@chapterart{}
\def\secdef#1#2{\@ifstar{\@dblarg{#2}}{\@dblarg{#1}}}
\renewcommand\part{%
@@ -345,29 +496,29 @@
\refstepcounter{part}%
\addcontentsline{toc}{part}{\MakeUppercase{\partname}
\thepart\protect\linebreak\penalty\@highpenalty\MakeUppercase{#1}}%
- \addcontentsline{tbc}{bpart}{\MakeUppercase{\partname~\thepart: #1}}%
+ \addcontentsline{tbc}{bpart}{\MakeUppercase{\partname~\thepart: \futuraheavy #1}}%
\else
\addcontentsline{toc}{part}{\MakeUppercase{#1}}%
- \addcontentsline{tbc}{bpart}{\MakeUppercase{#1}}%
+ \addcontentsline{tbc}{bpart}{\MakeUppercase{\futuraheavy #1}}%
\fi
{\centering
\interlinepenalty \@M
\normalfont
\ifnum \c@secnumdepth >-2\relax
- \fontfamily{\sfdefault}\fontsize{80pt}{80pt}\fontseries{bc}\selectfont
+ \futuraboldc\fontsize{80pt}{80pt}\selectfont
\MakeUppercase{\partname\nobreakspace\thepart}%
\par
\vskip 0.45in%
\fi
- \fontfamily{\dgdefault}\fontsize{16pt}{16pt}\fontseries{br}\selectfont
- \MakeUppercase{#2}\par}%
+ \dogma \fontsize{16pt}{16pt}\selectfont
+ \MakeUppercase{\sochapter{#2}}\par}%
\@endpart}
\def\@spart[#1]#2{%
\addcontentsline{toc}{part}{\MakeUppercase{#1}}%
\addcontentsline{tbc}{bpart}{\MakeUppercase{#1}}%
{\centering
- \fontfamily{\dgdefault}\fontsize{16pt}{16pt}\fontseries{br}\selectfont
- \MakeUppercase{#2}\par}%
+ \dogma \fontsize{16pt}{16pt}\selectfont
+ \MakeUppercase{\sochapter{#2}}\par}%
\@endpart}
\def\@endpart{%
\@afterindentfalse
@@ -396,7 +547,7 @@
\addcontentsline{tbc}{bchapter}{%
\chaptername~\thechapter:~#1}%
{\centering
- \fontfamily{\sfdefault}\fontseries{bc}\fontsize{120pt}{120pt}
+ \futuraboldc\fontsize{120pt}{120pt}
\selectfont
\thechapter\par\nobreak\vskip27pt}%
\else
@@ -406,19 +557,20 @@
\markboth{#1}{#1}%
\fi
{\centering
- \fontfamily{\dgdefault}\fontseries{br}\fontsize{16pt}{20pt}\selectfont
- \MakeUppercase{#2}\par}\nobreak\vskip25pt\relax%
+ \dogma\fontsize{16pt}{18pt}\selectfont
+ \MakeUppercase{\sochapter{#2}}\par}\nobreak\vskip25pt\relax%
\@firstparatrue
\@afterheading}%
\def\@schapter[#1]#2{%
\vspace*{2.747in}
{\centering
+ \phantomsection
\addcontentsline{toc}{chapter}{%
\MakeUppercase{#1}}%
\addcontentsline{tbc}{bchapter}{#1}%
\markboth{#1}{#1}%
- {\fontfamily{\dgdefault}\fontseries{br}\fontsize{16pt}{20pt}\selectfont
- \MakeUppercase{#2}\par}}\nobreak\vskip25pt\relax%
+ {\fontsize{16pt}{18pt}\selectfont
+ \MakeUppercase{\dogma \sochapter{#2}}\par}}\nobreak\vskip25pt\relax%
\@firstparatrue
\@afterheading}%
\def\@afterheading{%
@@ -452,19 +604,55 @@
\normalsize\selectfont
\fi
\@firstparafalse}}%
+\def\chapterwithquote{%
+ \clearpage
+ {\pagestyle{empty}\cleardoublepage}%
+ \everypar{}%
+ \thispagestyle{empty}%
+ \global\@topnum\z@
+ \@afterindentfalse
+ \gdef\@chapterart{}%
+ \secdef\@chapterwithquote\@schapter}
+\def\@chapterwithquote[#1]#2#3#4{%
+ \vspace*{0.622in}
+ \ifnum \c@secnumdepth > \m@ne
+ \refstepcounter{chapter}%
+ \typeout{Chapter:\thechapter\space\@currentlabel}%
+ \markboth{\@chapapp~\thechapter}{#1}%
+ \typeout{\@chapapp\space\thechapter.}%
+ \addcontentsline{toc}{chapter}{\thechapter%
+ \protect\linebreak\penalty\@highpenalty
+ \MakeUppercase{#1}}%
+ \addcontentsline{tbc}{bchapter}{%
+ \chaptername~\thechapter:~#1}%
+ {\centering
+ \futuraboldc\fontsize{120pt}{120pt}
+ \selectfont
+ \thechapter\par\nobreak\vskip27pt}%
+ \else
+ \addcontentsline{toc}{chapter}{%
+ \MakeUppercase{#1}}%
+ \addcontentsline{tbc}{bchapter}{#1}%
+ \markboth{#1}{#1}%
+ \fi
+ {\centering
+ \dogma\fontsize{16pt}{18pt}\selectfont
+ \MakeUppercase{\sochapter{#2}}\par\vspace{.1in}\normalfont\fontsize{9pt}{11pt}\selectfont\textit{#3}\par\textit{\textemdash#4}\par}\nobreak\vskip25pt\relax%
+ \@firstparatrue
+ \@afterheading}%
\newcommand{\chapterart}[1]{\gdef\@chapterart{#1}}%
\newcommand{\chapterartfile}[1]{\gdef\@chapterart{%
\includegraphics[width=1.264in]{#1}}}%
\renewcommand{\section}{\everypar{}%
\@startsection{section}{1}{-0.75in}{16pt}{6pt}{%
- \fontfamily{\sfdefault}\fontseries{b}\fontsize{12pt}{16pt}\selectfont}}%
+ \sffamily \bfseries \fontsize{12pt}{16pt}\selectfont}}%
\renewcommand{\subsection}{\everypar{}%
\@startsection{subsection}{2}{0pt}{14pt}{4pt}{%
- \fontfamily{\sfdefault}\fontshape{it}%
- \fontseries{bc}\fontsize{12pt}{17pt}\selectfont}}%
+ \futuraboldcoblique
+ \fontsize{12pt}{17pt}\selectfont}}%
\renewcommand{\subsubsection}{\everypar{}%
\@startsection{subsubsection}{3}{0pt}{10pt}{2pt}{%
- \fontfamily{\sfdefault}\fontseries{bp}\fontsize{10pt}{14pt}%
+ \futuraboldc \fontsize{10pt}{14pt}%
\selectfont}}%
\setlength{\leftmargin}{0.25in}
\setlength{\leftmargini}{0.25in}
@@ -473,7 +661,7 @@
\setlength{\leftmarginiv}{0.25in}
\setlength{\rightmargin}{0pt}
\def\@listi{\leftmargin\leftmargini
- \labelwidth\leftmargin\relax
+ \labelwidth\leftmargini\relax
\advance\labelwidth-\labelsep\relax
\parsep0\p@\relax
\topsep6\p@\relax
@@ -527,6 +715,10 @@
\csname label\@enumctr\endcsname
{\usecounter\@enumctr\def\makelabel##1{##1}}%
\fi}
+\renewenvironment{description}%
+ {\list{}{\labelwidth=0pt \leftmargin=18pt
+ \let\makelabel\descriptionlabel}}
+ {\endlist}
\renewenvironment{quotation}{%
\list{}{\listparindent\parindent\relax
\itemindent\listparindent\relax
@@ -540,9 +732,8 @@
\leftmargin0.5in\relax}%
\item\fontsize{9pt}{11pt}\selectfont}{\endlist}
\newenvironment{note}{%
- \list{\makebox[0pt][r]{\fontfamily{%
- \dgdefault}\fontseries{b}\fontsize{9pt}{11pt}\selectfont
- NOTE\hspace{2em}}}{\listparindent0pt\relax
+ \list{\makebox[0pt][r]{\dogma \fontsize{7.5pt}{12pt}
+ \colorbox{black}{\textcolor{white}{\sonote{NOTE}}}\hspace{2em}}}{\listparindent0pt\relax
\topsep9\p@\relax
\itemindent0\p@\relax
\rightmargin0\p@\relax
@@ -550,6 +741,14 @@
\labelwidth0\p@\relax
\labelsep0\p@}%
\item\itshape}{\vspace{-3pt}\endlist}
+\newenvironment{plainlist}{%
+ \renewcommand{\descriptionlabel}[1]{\hspace{\labelsep}\textbf{##1}} % Add em space to description label
+ \begin{description}%
+ }{%
+ \renewcommand{\descriptionlabel}[1]{\hspace{\labelsep}\textbf{##1 \quad}} % Add em space to description label
+ \end{description}%
+}
+
\renewcommand\footnoterule{%
\kern6\p@
\hrule height 0.25pt depth 0pt width 1in
@@ -567,35 +766,83 @@
\@makefntext{%
\rule\z@{13.5pt}\ignorespaces#1}%
\color@endgroup}}%
-\setlength{\skip\footins}{16\p@ \@plus 4\p@ \@minus 0\p@}
+\setlength{\skip\footins}{20\p@ \@plus 4\p@ \@minus 0\p@}
\renewcommand\@makefntext[1]{%
- \parindent 0\p@%
- \RaggedRightParindent0\p@%
- \noindent
- \@makefnmark\space#1}
+\@thefnmark.~#1}
\renewcommand \thefigure
{\ifnum \c@chapter>\z@ \thechapter-\fi \@arabic\c@figure}
\renewcommand \thetable
{\ifnum \c@chapter>\z@ \thechapter-\fi \@arabic\c@table}
-\renewcommand \thelstlisting
- {\ifnum \c@chapter>\z@ \thechapter-\fi \@arabic\c@lstlisting}
-\DeclareCaptionFormat{nostarchfigfmt}{\fontfamily{\sfdefault}%
- \fontshape{it}\fontsize{8.5pt}{9pt}\fontseries{k}\selectfont\unskip#1#2#3}
-\DeclareCaptionFormat{nostarchtabfmt}{\fontfamily{\sfdefault}%
- \fontshape{rm}\fontsize{8.5pt}{9pt}\fontseries{h}\selectfont\unskip#1#2%
- \fontseries{k}\selectfont#3}
-\captionsetup[figure]{format=nostarchfigfmt,singlelinecheck=off,
- aboveskip=8pt,belowskip=8pt}
-\captionsetup[lstlisting]{format=nostarchfigfmt,singlelinecheck=off,
- aboveskip=8pt,belowskip=8pt}
-\captionsetup[table]{format=nostarchtabfmt,singlelinecheck=off,
- aboveskip=0pt,belowskip=4pt}
+\AtBeginDocument{%
+ \renewcommand \thelstlisting
+ {\ifnum \c@chapter>\z@ \thechapter-\fi \@arabic\c@lstlisting}%
+}
+\lstset{
+ frame = lines,
+ showstringspaces=false,
+ tabsize=4,
+ title=\lstname,
+ numbers = none,
+ caption={},
+ literate={\ }{{\ }}1{"}{\textquotedbl}1,
+ escapeinside={(@}{@)},
+ captionpos=b,
+ basicstyle=\ttfamily,
+ columns=fullflexible,
+ moredelim=[is][\bfseries]{***}{***},
+ moredelim=[is][\itshape]{___}{___},
+ moredelim=[is][\bfseries\itshape]{&&&}{&&&},
+ aboveskip=8pt,
+}
+\lstnewenvironment
+ {codewide}[1][]
+ {
+ \renewcommand{\codewingding}[1]
+ {\ding{\the\numexpr ##1 + 181 \relax}}
+ \captionsetup[lstlisting]{font=nostarchfigfont,singlelinecheck=off,
+ aboveskip=4pt, belowskip=-12pt, margin=-70pt}
+ \lstset{
+ frame = lines,
+ showstringspaces=false,
+ tabsize=4,
+ title=\lstname,
+ numbers = none,
+ literate={\ }{{\ }}1{"}{\textquotedbl}1,
+ escapeinside={(@}{@)},
+ captionpos=b,
+ caption={},
+ basicstyle=\ttfamily,
+ columns=fullflexible,
+ moredelim=[is][\bfseries]{***}{***},
+ moredelim=[is][\itshape]{___}{___},
+ moredelim=[is][\bfseries\itshape]{&&&}{&&&},
+ xleftmargin=-70pt,
+ aboveskip=8pt,
+ #1
+ }}
+ {
+ \renewcommand{\codewingding}[1]
+ {\vbox{\llap{\wingding{#1}\hskip 0.5em}}}
+ \captionsetup[lstlisting]{font=nostarchfigfont,singlelinecheck=off,
+ aboveskip=4pt, belowskip=0pt, margin=0pt}}
+\DeclareCaptionFont{nostarchfigfont}{\sffamily \itshape \fontsize{8.5pt}{9pt}\selectfont}
+\DeclareCaptionFont{nostarchtabfont}{\futurabook \fontsize{9pt}{9pt}\selectfont}
+\captionsetup[figure]{font=nostarchfigfont,singlelinecheck=off,
+ aboveskip=8pt,belowskip=-8pt}
+\captionsetup[lstlisting]{font=nostarchfigfont,singlelinecheck=off,
+ aboveskip=4pt, belowskip=0pt}
+\captionsetup[table]{font=nostarchtabfont,singlelinecheck=off,
+ aboveskip=0pt,belowskip=4pt, labelfont=bf}
+\newcommand{\captionlst}[1]{{\ttfamily \itshape \fontsize{10pt}{9pt}\selectfont #1}}
+\newcommand{\boxlst}[1]{{\ttfamily \fontsize{10pt}{9pt}\selectfont #1}}
+\newcommand{\tablelst}[1]{{\ttfamily \fontsize{10pt}{9pt}\selectfont #1}}
\def\tbfont{%
- \fontfamily{\sfdefault}\fontseries{k}\fontsize{8pt}{10pt}\selectfont}
+ \futurabook\fontsize{8.5pt}{10pt}\selectfont}
\def\thfont{%
- \fontfamily{\sfdefault}\fontseries{h}\fontsize{8pt}{10pt}\selectfont}
+ \futuraheavy\fontsize{9pt}{10pt}\selectfont}
+\AtBeginEnvironment{tabular}{\tbfont}
\heavyrulewidth=3\p@
-\lightrulewidth=1.5\p@
+\lightrulewidth=1\p@
\cmidrulewidth=1.5\p@
\def\bottomrule{\noalign{\ifnum0=`}\fi
\@aboverulesep=\aboverulesep
@@ -606,11 +853,185 @@
\belowbottomsep=0.65pt
\aboverulesep=0.7ex
\abovetopsep=0.65pt
-\DefineVerbatimEnvironment{Code}{Verbatim}{frame=lines,framerule=0.25pt}
+\newenvironment{tablewide}[1][]
+ {
+ \captionsetup[table]{font=nostarchtabfont,singlelinecheck=off,
+ aboveskip=0pt,belowskip=4pt, labelfont=bf, margin=-70pt}
+ \begin{table}[#1]
+ }
+ {
+ \end{table}
+ \captionsetup[table]{font=nostarchtabfont,singlelinecheck=off,
+ aboveskip=0pt,belowskip=4pt, labelfont=bf, margin=0pt}
+ }
+\newenvironment{tabularwide}[1]
+ {
+ \hspace*{-72pt}
+ \begin{tabular}{#1}
+ }
+ {
+ \end{tabular}
+ }
+ \newenvironment{figurewide}[1][]
+ {
+ \captionsetup[figure]{font=nostarchfigfont,singlelinecheck=off,
+ aboveskip=8pt,belowskip=-8pt, margin=-70pt}
+ \begin{figure}[#1]
+ \hspace*{-70pt}
+ }
+ {
+ \end{figure}
+ \captionsetup[figure]{font=nostarchfigfont,singlelinecheck=off,
+ aboveskip=8pt,belowskip=-8pt}
+ }
+\DefineVerbatimEnvironment{Code}{Verbatim}{frame=lines,framerule=0.25pt, commandchars=\\\{\}}
\FV@AddToHook\FV@ListParameterHook{\vspace{-6pt}}
\VerbatimFootnotes
-\lstset{captionpos=b}
-\lstset{basicstyle=\ttfamily,columns=fullflexible}
+\definecolor{nspgray}{cmyk}{0, 0, 0, 0.1}
+\mdfdefinestyle{nspbox}{%
+ linecolor=black,
+ outerlinewidth=1pt,
+ roundcorner=5pt,
+ innertopmargin=\baselineskip,
+ innerbottommargin=\baselineskip,
+ innerrightmargin=18pt,
+ innerleftmargin=18pt,
+ backgroundcolor=nspgray,
+ }
+
+\mdfdefinestyle{custombox}{%
+ linecolor=black,
+ outerlinewidth=1pt,
+ roundcorner=5pt,
+ innertopmargin=\baselineskip,
+ innerbottommargin=\baselineskip,
+ innerrightmargin=18pt,
+ innerleftmargin=18pt,
+ }
+\newenvironment{nspbox}[1]
+{\begin{mdframed}[style=nspbox]
+ \begin{center}
+ {\dogma \fontsize{9pt}{15pt} \MakeUppercase{\sobox{#1}}}
+ \end{center}
+ \begin{flushright}
+ \begin{flushleft}
+ \parskip=.5\baselineskip
+ \tbfont
+}
+{\end{flushleft}\end{flushright}
+\end{mdframed}}
+\newenvironment{nspboxcontinued}
+{\begin{mdframed}[style=nspbox]
+ \begin{flushright}
+ \begin{flushleft}
+ \parskip=.5\baselineskip
+ \tbfont
+}
+{
+\end{flushleft}
+\end{flushright}
+\end{mdframed}}
+\newenvironment{custombox}[1]
+{\begin{mdframed}[style=custombox]
+ \begin{center}
+ {\dogma \fontsize{9pt}{15pt} \MakeUppercase{\sobox{#1}}}
+ \end{center}
+ \begin{flushright}
+ \begin{flushleft}
+ \parskip=.5\baselineskip
+ \tbfont
+}
+{\end{flushleft}\end{flushright}
+\end{mdframed}}
+
+\newenvironment{customboxcontinued}
+{\begin{mdframed}[style=custombox]
+ \begin{flushright}
+ \begin{flushleft}
+ \parskip=.5\baselineskip
+ \tbfont
+}
+{
+\end{flushleft}
+\end{flushright}
+\end{mdframed}}
+
+\newcommand{\continued}[0]{%
+ {\begin{flushright}%
+ \emph{(continued)}%
+ \end{flushright}}%
+}
+\newcounter{project}
+\stepcounter{project}
+\newcommand{\projecthead}[1]{
+ \vspace{16pt}%
+ \noindent%
+ \hspace{-.75in}%
+ \addcontentsline{toc}{boldsection}{Project~\#\theproject: #1}%
+ {\sffamily\bfseries\fontsize{12pt}{16pt}\selectfont
+ \colorbox{black}{\textcolor{white}{Project~\#\theproject: #1}}}%
+ \vspace{6pt}%
+ \@afterindentfalse\@afterheading%
+ \refstepcounter{project}%
+}
+\renewcommand*{\marginfont}{\sffamily\itshape\fontsize{8.5}{10}\selectfont}
+\renewcommand*{\marginnotevadjust}{-\baselineskip}
+\newcommand{\marginwingding}[1]{{\fontsize{10pt}{12pt}\selectfont \wingding{#1}}}
+\long\def\@mn@@@marginnote[#1]#2[#3]{%
+ \begingroup
+ \ifmmode\mn@strut\let\@tempa\mn@vadjust\else
+ \if@inlabel\leavevmode\fi
+ \ifhmode\mn@strut\let\@tempa\mn@vadjust\else\let\@tempa\mn@vlap\fi
+ \fi
+ \@tempa{%
+ \vbox to\z@{%
+ \vss
+ \@mn@margintest
+ \if@reversemargin\if@tempswa
+ \@tempswafalse
+ \else
+ \@tempswatrue
+ \fi\fi
+
+ \llap{%
+ \vbox to\z@{\kern\marginnotevadjust\kern #3
+ \vbox to\z@{%
+ \hsize\marginparwidth
+ \linewidth\hsize
+ \kern-\parskip
+ %\mn@parboxrestore
+ \marginfont\raggedleftmarginnote\strut\hspace{\z@}%
+ \ignorespaces#1\endgraf
+ \vss
+ }%
+ \vss
+ }%
+ \if@mn@verbose
+ \PackageInfo{marginnote}{xpos seems to be \@mn@currxpos}%
+ \fi
+ \begingroup
+ \ifx\@mn@currxpos\relax\else\ifx\@mn@currpos\@empty\else
+ \kern\@mn@currxpos
+ \fi\fi
+ \ifx\@mn@currpage\relax
+ \let\@mn@currpage\@ne
+ \fi
+ \if@twoside\ifodd\@mn@currpage\relax
+ \kern-\oddsidemargin
+ \else
+ \kern-\evensidemargin
+ \fi
+ \else
+ \kern-\oddsidemargin
+ \fi
+ \kern-1in
+ \endgroup
+ \kern\marginparsep
+ }%
+ }%
+ }%
+ \endgroup
+}
\AtBeginDocument{
\def\bibsection{%
\clearpage
@@ -625,9 +1046,9 @@
\addcontentsline{toc}{chapter}{\MakeUppercase{\bibname}}%
\addcontentsline{tbc}{bchapter}{\bibname}%
{\centering
- {\fontfamily{\dgdefault}\fontseries{br}\fontsize{16pt}{20pt}\selectfont
- \MakeUppercase{\bibname}\par}}\nobreak\vskip25pt\relax%
- \@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bibname}}}%
+ {\dogma\fontsize{16pt}{20pt}\selectfont
+ \MakeUppercase{\sochapter{\bibname}}\par}}\nobreak\vskip25pt\relax%
+ \@mkboth{\bibname}{\bibname}}}%
\renewenvironment{thebibliography}[1]{%
\bibsection
\list{\@biblabel{\@arabic\c@enumiv}}%
@@ -646,6 +1067,7 @@
{\def\@noitemerr
{\@latex@warning{Empty `thebibliography' environment}}%
\endlist}
+\newcommand{\term}[1]{\emph{#1}\index{#1}}
\renewenvironment{theindex}{%
\clearpage
{\pagestyle{empty}\cleardoublepage}%
@@ -665,12 +1087,12 @@
\addcontentsline{toc}{chapter}{\MakeUppercase{\indexname}}%
\addcontentsline{tbc}{bchapter}{\indexname}%
{\centering
- {\fontfamily{\dgdefault}\fontseries{br}%
+ {\dogma%
\fontsize{16pt}{20pt}\selectfont
- \MakeUppercase{\indexname}\par}}%
+ \MakeUppercase{\sochapter{\indexname}}\par}}%
\nobreak\vskip25pt\relax]%
- \@mkboth{\MakeUppercase\indexname}%
- {\MakeUppercase\indexname}%
+ \@mkboth{\indexname}%
+ {\indexname}%
\parindent\z@
\parskip\z@ \@plus .3\p@\relax
\columnseprule \z@
@@ -683,7 +1105,7 @@
\renewcommand\subitem{\@idxitem \hspace*{0.15in}}
\renewcommand\subsubitem{\@idxitem \hspace*{0.3in}}
\renewcommand\indexspace{\par \vskip 14\p@\relax}
-\newcommand\indexgroup[1]{{\fontfamily{\sfdefault}%
+\newcommand\indexgroup[1]{{\futuraboldc
\fontseries{bc}\fontsize{11\p@}{13\p@}\selectfont#1}\par\vskip4\p@}
\def\updatesname{Updates}
\newcommand\updatespage{%
@@ -695,9 +1117,9 @@
\gdef\@chapterart{}%
\vspace*{1.875in}%
{\centering
- \fontfamily{\dgdefault}\fontseries{br}%
+ \dogma%
\fontsize{16pt}{20pt}\selectfont
- \MakeUppercase{\updatesname}\par\nobreak\vskip40\p@}%
+ \MakeUppercase{\sochapter{\updatesname}}\par\nobreak\vskip40\p@}%
\@nobreaktrue
\everypar{%
\if@nobreak
@@ -714,10 +1136,10 @@
\global\@topnum\z@
\gdef\@chapterart{}%
\vspace*{0.875in}%
- {\centering
- \fontfamily{\dgdefault}\fontseries{br}%
- \fontsize{16pt}{20pt}\selectfont
- \MakeUppercase{\colophonname}\par\nobreak\vskip40\p@}%
+ %{\centering
+ %\dogma%
+ % \fontsize{16pt}{20pt}\selectfont
+ %\MakeUppercase{\sochapter{\colophonname}}\par\nobreak\vskip40\p@}%
\@nobreaktrue
\everypar{%
\if@nobreak
@@ -729,9 +1151,10 @@
\everypar{}%
\fi}\par
The fonts used in \emph{\@title} are New Baskerville, Futura, The
- Sans Mono Condensed and Dogma. The book was typeset with
+ Sans Mono Condensed, and Dogma. The book was typeset with
\LaTeXe{} package
- \texttt{nostarch} by Boris Veytsman
+ \texttt{nostarch} by Boris Veytsman with many additions by Alex
+ Freed and other members of the \emph{No Starch Press} team
\emph{(\csname ver@nostarch.cls\endcsname).}\par}
\endinput
%%