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.cls123
1 files changed, 116 insertions, 7 deletions
diff --git a/Master/texmf-dist/tex/latex/nostarch/nostarch.cls b/Master/texmf-dist/tex/latex/nostarch/nostarch.cls
index fdb987796db..2709e37d86e 100644
--- a/Master/texmf-dist/tex/latex/nostarch/nostarch.cls
+++ b/Master/texmf-dist/tex/latex/nostarch/nostarch.cls
@@ -37,7 +37,7 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{nostarch}
-[2023/03/30 v2.0 Typesetting books for No Starch Press]
+[2023/04/08 v2.1 Typesetting books for No Starch Press]
\newif\ifnostarch@cfonts
\nostarch@cfontstrue
\DeclareOption{cfonts}{\nostarch@cfontstrue}
@@ -63,10 +63,11 @@
\ProcessOptions\relax
\LoadClass[10pt]{book}
\RequirePackage[table]{xcolor}
-\RequirePackage{iftex, ifpdf, fancyhdr, fancyvrb, booktabs, graphicx,
+\RequirePackage{iftex, ifpdf, longtable,
+ fancyhdr, fancyvrb, booktabs, graphicx,
listings, caption, makeidx, upquote, pifont,
textcomp, xcolor, lmodern, nameref, float, amssymb, etoolbox,
- setspace, marginnote}
+ setspace, marginnote, url}
\RequirePackage[framemethod=TikZ]{mdframed}
\RequirePackage{soul}
\RequirePackage[T1]{fontenc}
@@ -825,14 +826,89 @@
{\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}
+\def\LTleft{\z@}
+\def\LTright{\fill}
+\newif\ifnostarch@overridecaptionwidth
+\nostarch@overridecaptionwidthfalse
+\newlength\nostarch@captionwidth
+\newcommand\NextCaptionWidth[1]{%
+ \global\nostarch@overridecaptionwidthtrue
+ \global\setlength{\nostarch@captionwidth}{#1}%
+}
+\newcommand\nostarch@measurecaptionwidth{%
+ \ifnostarch@overridecaptionwidth\else
+ \par
+ \setbox\@tempboxa\lastbox
+ \setbox\@tempboxa=\hbox{\unhbox\@tempboxa}%
+ \global\setlength{\nostarch@captionwidth}{\wd\@tempboxa}%
+ \box\@tempboxa\par
+ \fi
+ \global\nostarch@overridecaptionwidthfalse
+}
+\AtBeginDocument{%
+\pretocmd{\caption}{\def\@tempa{figure}%
+ \ifx\@tempa\@captype\relax
+ \nostarch@measurecaptionwidth
+ \fi}{}{}}
+\DeclareCaptionFormat*{nostarchfigtblformat}{%
+ \parbox{\nostarch@captionwidth}{#1#2#3}}
+\def\nostarch@tbl@warn{}
+\AtEndDocument{\nostarch@tbl@warn}
+\newcounter{nostarch@tbl}
+\newcommand\nostarch@read@tbl@width{%
+ \stepcounter{nostarch@tbl}%
+ \expandafter\ifx\csname nostarch@tbl@\romannumeral\c@nostarch@tbl\endcsname\relax
+ \edef\@tempa{\the\textwidth}%
+ \else
+ \edef\@tempa{\csname nostarch@tbl@\romannumeral\c@nostarch@tbl\endcsname}%
+ \fi
+ \expandafter\setlength\expandafter\nostarch@captionwidth\expandafter{\@tempa}%
+}
+\AtBeginEnvironment{table}{\nostarch@read@tbl@width}
+\newcommand\nostarch@save@tbl@width{%
+ \nostarch@measurecaptionwidth
+ \if@filesw
+ \immediate\write\@auxout{%
+ \gdef\expandafter\noexpand\csname nostarch@tbl@\romannumeral\c@nostarch@tbl\endcsname
+ {\the\nostarch@captionwidth}}%
+ \fi
+ \expandafter\ifx\csname nostarch@tbl@\romannumeral\c@nostarch@tbl\endcsname\relax
+ \edef\@tempa{\the\textwidth}%
+ \else
+ \edef\@tempa{\csname nostarch@tbl@\romannumeral\c@nostarch@tbl\endcsname}%
+ \fi
+ \expandafter\ifdim\@tempa=\nostarch@captionwidth\else
+ \gdef\nostarch@tbl@warn{\ClassWarningNoLine{nostarch}
+ {Table widths have changed. Rerun LaTeX.}}
+ \fi
+}
+\pretocmd{\endtable}{\nostarch@save@tbl@width}{}{}
+\pretocmd{\float@endH}{\def\@tempa{table}%
+ \ifx\@tempa\@captype\nostarch@save@tbl@width\fi}{}{}
+\def\nostarch@read@LT@width{%
+ \ifnostarch@overridecaptionwidth\else
+ \global\setlength{\nostarch@captionwidth}{\z@}%
+ \bgroup
+ \def\LT@entry##1##2{%
+ \global\addtolength{\nostarch@captionwidth}{##2}}%
+ \csname LT@\romannumeral\c@LT@tables\endcsname
+ \egroup
+ \fi
+ \global\nostarch@overridecaptionwidthfalse
+}
+\AtBeginDocument{\pretocmd{\caption@LT@config}{\global\rownum=1\relax
+ \nostarch@read@LT@width}{}{}}
+\AtBeginEnvironment{longtable}{\global\rownum=0\relax}
+\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}
+ aboveskip=8pt,belowskip=-8pt, format=nostarchfigtblformat}
\captionsetup[lstlisting]{font=nostarchfigfont,singlelinecheck=off,
aboveskip=4pt, belowskip=0pt}
\captionsetup[table]{font=nostarchtabfont,singlelinecheck=off,
- aboveskip=0pt,belowskip=4pt, labelfont=bf}
+ aboveskip=0pt,belowskip=4pt, labelfont=bf, format=nostarchfigtblformat}
\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}}
@@ -841,6 +917,7 @@
\def\thfont{%
\futuraheavy\fontsize{9pt}{10pt}\selectfont}
\AtBeginEnvironment{tabular}{\tbfont}
+\AtBeginEnvironment{longtable}{\tbfont}
\heavyrulewidth=3\p@
\lightrulewidth=1\p@
\cmidrulewidth=1.5\p@
@@ -884,6 +961,10 @@
\captionsetup[figure]{font=nostarchfigfont,singlelinecheck=off,
aboveskip=8pt,belowskip=-8pt}
}
+\rowcolors[]{1}{}{nspgray}
+\setlength{\aboverulesep}{0pt}
+\setlength{\belowrulesep}{0pt}
+\setlength{\extrarowheight}{.8ex}
\DefineVerbatimEnvironment{Code}{Verbatim}{frame=lines,framerule=0.25pt, commandchars=\\\{\}}
\FV@AddToHook\FV@ListParameterHook{\vspace{-6pt}}
\VerbatimFootnotes
@@ -897,6 +978,7 @@
innerrightmargin=18pt,
innerleftmargin=18pt,
backgroundcolor=nspgray,
+ everyline=true
}
\mdfdefinestyle{custombox}{%
@@ -907,6 +989,7 @@
innerbottommargin=\baselineskip,
innerrightmargin=18pt,
innerleftmargin=18pt,
+ everyline=true
}
\newenvironment{nspbox}[1]
{\begin{mdframed}[style=nspbox]
@@ -974,6 +1057,32 @@
\@afterindentfalse\@afterheading%
\refstepcounter{project}%
}
+\def\UrlFont{\itshape}
+\def\UrlTildeSpecial{\do\~{\raise.2ex\hbox{\m@th$\scriptstyle\sim$}}}
+\let\Url@force@Tilde\UrlTildeSpecial
+\def\UrlBreaks{\do\#\do\\\do\>\do\]\do\)\do\}}
+\g@addto@macro{\UrlSpecials}{%
+ \do\.{\penalty\UrlBreakPenalty\mathchar46\relax}%
+ \do\_{\penalty\UrlBreakPenalty\mathchar95\relax}%
+ \do\={\penalty\UrlBreakPenalty\mathchar61\relax}%
+ \do\&{\penalty\UrlBreakPenalty\mathchar38\relax}%
+ \do\-{\penalty\UrlBreakPenalty\mathchar45\relax}%
+ \do\!{\penalty\UrlBreakPenalty\mathchar33\relax}%
+ \do\?{\penalty\UrlBreakPenalty\mathchar63\relax}%
+ \do\|{\penalty\UrlBreakPenalty\mathchar124\relax}%
+ \do\,{\penalty\UrlBreakPenalty\mathchar44\relax}%
+ \do\;{\penalty\UrlBreakPenalty\mathchar59\relax}%
+ \do\@{\penalty\UrlBreakPenalty\mathchar64\relax}%
+ \do\'{\penalty\UrlBreakPenalty\mathchar39\relax}%
+ \do\"{\penalty\UrlBreakPenalty\mathchar34\relax}%
+ \do\+{\penalty\UrlBreakPenalty\mathchar43\relax}%
+ \do\<{\penalty\UrlBreakPenalty\mathchar60\relax}%
+ \do\[{\penalty\UrlBreakPenalty\mathchar91\relax}%
+ \do\({\penalty\UrlBreakPenalty\mathchar40\relax}%
+ \do\{{\penalty\UrlBreakPenalty\mathchar123\relax}%
+ \do\/{\unpenalty\penalty\@M\mathchar47\penalty\UrlBreakPenalty}%
+}
+\def\UrlNoBreaks{}
\renewcommand*{\marginfont}{\sffamily\itshape\fontsize{8.5}{10}\selectfont}
\renewcommand*{\marginnotevadjust}{-\baselineskip}
\newcommand{\marginwingding}[1]{{\fontsize{10pt}{12pt}\selectfont \wingding{#1}}}