diff options
author | Norbert Preining <norbert@preining.info> | 2022-10-03 03:03:44 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2022-10-03 03:03:44 +0000 |
commit | 0ec122c100e39ea118fdb2c4b6223ece8053f439 (patch) | |
tree | d7077d4e42fc0d4e6f697738c3852c6967dd3b35 /macros/latex/contrib/yb-book | |
parent | 097f244236b682cc77c6ecf25be4150091d8daf9 (diff) |
CTAN sync 202210030303
Diffstat (limited to 'macros/latex/contrib/yb-book')
-rw-r--r-- | macros/latex/contrib/yb-book/DEPENDS.txt | 13 | ||||
-rw-r--r-- | macros/latex/contrib/yb-book/LICENSE.txt | 21 | ||||
-rw-r--r-- | macros/latex/contrib/yb-book/README.md | 9 | ||||
-rw-r--r-- | macros/latex/contrib/yb-book/samples/sample.tex | 41 | ||||
-rw-r--r-- | macros/latex/contrib/yb-book/yb-book.cls | 341 | ||||
-rw-r--r-- | macros/latex/contrib/yb-book/yb-book.dtx | 653 | ||||
-rw-r--r-- | macros/latex/contrib/yb-book/yb-book.ins | 55 | ||||
-rw-r--r-- | macros/latex/contrib/yb-book/yb-book.pdf | bin | 239404 -> 283494 bytes | |||
-rw-r--r-- | macros/latex/contrib/yb-book/yb-book.tex | 79 |
9 files changed, 742 insertions, 470 deletions
diff --git a/macros/latex/contrib/yb-book/DEPENDS.txt b/macros/latex/contrib/yb-book/DEPENDS.txt index df34424b3d..caa266e1d2 100644 --- a/macros/latex/contrib/yb-book/DEPENDS.txt +++ b/macros/latex/contrib/yb-book/DEPENDS.txt @@ -1,23 +1,18 @@ +hard pgf hard xkeyval hard geometry -hard fontenc -hard inputenc hard anyfontsize -hard tikz hard chngcntr hard lastpage hard paralist hard xcolor -hard graphicx hard setspace -hard textcomp hard enumitem hard float hard ulem hard qrcode hard wrapfig -hard xfp -hard soul} % in order to use \st{ +hard soul hard xifthen hard csquotes hard biblatex @@ -31,3 +26,7 @@ hard fancyhdr hard wrapfig hard mdframed hard changepage +hard ifmtarg +hard bigfoot +hard zref +hard needspace
\ No newline at end of file diff --git a/macros/latex/contrib/yb-book/LICENSE.txt b/macros/latex/contrib/yb-book/LICENSE.txt new file mode 100644 index 0000000000..bd949ffdab --- /dev/null +++ b/macros/latex/contrib/yb-book/LICENSE.txt @@ -0,0 +1,21 @@ +(The MIT License) + +Copyright (c) 2021-2022 Yegor Bugayenko + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the 'Software'), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/macros/latex/contrib/yb-book/README.md b/macros/latex/contrib/yb-book/README.md index a9eae33589..fcc2528d67 100644 --- a/macros/latex/contrib/yb-book/README.md +++ b/macros/latex/contrib/yb-book/README.md @@ -1,4 +1,5 @@ -[![make](https://github.com/yegor256/yb-book/actions/workflows/make.yml/badge.svg)](https://github.com/yegor256/yb-book/actions/workflows/make.yml) +[![make](https://github.com/yegor256/yb-book/actions/workflows/l3build.yml/badge.svg)](https://github.com/yegor256/yb-book/actions/workflows/l3build.yml) +[![CTAN](https://img.shields.io/ctan/v/yb-book)](https://ctan.org/pkg/yb-book) [![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/yegor256/yb-book/blob/master/LICENSE.txt) This LaTeX class I use to format [my books](https://www.yegor256.com/books.html), @@ -10,10 +11,14 @@ and then use in the preamble: ```tex \documentclass{yb-book} +\renewcommand*\thetitle{New Book About OOP} \renewcommand*\theauthor{Jeff Lebowski} \renewcommand*\thevolume{1} -\renewcommand*\thetitle{New Book About OOP} +\renewcommand*\theversion{1.0} \begin{document} +\ybPrintTitlePage +\chapter{First One} +\section{About Something Interesting} Hello, world! \end{document} ``` diff --git a/macros/latex/contrib/yb-book/samples/sample.tex b/macros/latex/contrib/yb-book/samples/sample.tex deleted file mode 100644 index b5528d54ca..0000000000 --- a/macros/latex/contrib/yb-book/samples/sample.tex +++ /dev/null @@ -1,41 +0,0 @@ -% (The MIT License) -% -% Copyright (c) 2021 Yegor Bugayenko -% -% Permission is hereby granted, free of charge, to any person obtaining a copy -% of this software and associated documentation files (the 'Software'), to deal -% in the Software without restriction, including without limitation the rights -% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -% copies of the Software, and to permit persons to whom the Software is -% furnished to do so, subject to the following conditions: -% -% The above copyright notice and this permission notice shall be included in all -% copies or substantial portions of the Software. -% -% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -% SOFTWARE. - -\documentclass{../yb-book} -\renewcommand*\thetitle{\LaTeX{} Class yb-book} -\renewcommand*\theauthor{Yegor Bugayenko} -\begin{document} - -\ybPrintTitlePage - -\newpage - -\chapter{Overview} - -\section{Purpose} - -\index{computer} -This is a very interesting book about computers. - -\ybPrintIndex - -\end{document}
\ No newline at end of file diff --git a/macros/latex/contrib/yb-book/yb-book.cls b/macros/latex/contrib/yb-book/yb-book.cls deleted file mode 100644 index 4b99e80514..0000000000 --- a/macros/latex/contrib/yb-book/yb-book.cls +++ /dev/null @@ -1,341 +0,0 @@ -% (The MIT License) -% -% Copyright (c) 2021-2022 Yegor Bugayenko -% -% Permission is hereby granted, free of charge, to any person obtaining a copy -% of this software and associated documentation files (the 'Software'), to deal -% in the Software without restriction, including without limitation the rights -% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -% copies of the Software, and to permit persons to whom the Software is -% furnished to do so, subject to the following conditions: -% -% The above copyright notice and this permission notice shall be included in all -% copies or substantial portions of the Software. -% -% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -% SOFTWARE. - -\NeedsTeXFormat{LaTeX2e} -\ProvidesClass{yb-book}[2022/01/03 0.1.0 YB Branded Book Style] - -\RequirePackage{xkeyval} - -\makeatletter -\newif\ifyb@draft -\DeclareOptionX{draft}{\yb@drafttrue} -\newif\ifyb@compact -\DeclareOptionX{compact}{\yb@compacttrue} -\newif\ifyb@manuscript -\DeclareOptionX{manuscript}{\yb@manuscripttrue} -\ProcessOptionsX -\makeatother - -\makeatletter\ifyb@draft - \PassOptionsToClass{11pt}{book} - \PassOptionsToClass{oneside}{book} -\else - \ifyb@manuscript - \PassOptionsToClass{12pt}{book} - \PassOptionsToClass{oneside}{book} - \else - \PassOptionsToClass{11pt}{book} - \PassOptionsToClass{twoside}{book} - \fi -\fi\makeatother - -\LoadClass{book} - -\RequirePackage{geometry} - \geometry{paperwidth=6in, paperheight=9in, bindingoffset=0.25in, left=0.75in, right=0.75in, top=0.75in, bottom=1.25in} - \makeatletter\ifyb@draft - \geometry{a4paper, margin=1in, left=1.5in} - \else - \ifyb@manuscript - \geometry{a4paper, margin=1.2in} - \fi - \fi\makeatother - -\RequirePackage[T1]{fontenc} -\RequirePackage[utf8]{inputenc} -\RequirePackage{anyfontsize} -\RequirePackage{tikz} - \usetikzlibrary{positioning} - \usetikzlibrary{shapes} - \usetikzlibrary{fit} -\RequirePackage{chngcntr} - \counterwithout{footnote}{chapter} -\RequirePackage{lastpage} -\RequirePackage{paralist} -\RequirePackage{xcolor} -\RequirePackage{graphicx} -\RequirePackage{setspace} - \setstretch{1.2} - \makeatletter\ifyb@draft\setstretch{1.1}\fi\makeatother - \makeatletter\ifyb@compact\setstretch{1.0}\fi\makeatother - \makeatletter\ifyb@manuscript\setstretch{1.1}\fi\makeatother -\RequirePackage{textcomp} -\RequirePackage[inline]{enumitem} - \setlist{nosep} -\RequirePackage{float} -\RequirePackage[normalem]{ulem} -\RequirePackage{qrcode} -\RequirePackage{wrapfig} - \pagestyle{plain} -\RequirePackage{xfp} -\RequirePackage{soul} % in order to use \st{} to strikethrough -\RequirePackage{xifthen} -\RequirePackage[autostyle=try]{csquotes} - -\RequirePackage[indexing=cite,style=authoryear,natbib=true,maxnames=1,minnames=1,doi=false,url=false,isbn=false,isbn=false]{biblatex} - \DeclareCiteCommand{\citetitle} - {\boolfalse{citetracker}% - \boolfalse{pagetracker}% - \usebibmacro{prenote}} - {\ifciteindex - {\indexnames{labelname}} - {}% - \printfield[citetitle]{labeltitle}} - {\multicitedelim} - {\usebibmacro{postnote}} - \DeclareCiteCommand*{\citetitle} - {\boolfalse{citetracker}% - \boolfalse{pagetracker}% - \usebibmacro{prenote}} - {\ifciteindex - {\indexnames{labelname}} - {}% - \printfield[citetitle]{title}} - {\multicitedelim} - {\usebibmacro{postnote}} -\RequirePackage{imakeidx} - \renewbibmacro*{citeindex}{\indexnames{labelname}{}} - \makeindex - \indexsetup{othercode={\hyphenpenalty=10000}} - -\newenvironment{condensed}{% - \begingroup\setstretch{1.0}% - % This lsstyle is defined by 'letterspace' in microtype - \lsstyle}{\endgroup} - -\makeatletter\ifyb@draft\else - \RequirePackage[letterspace=-50]{microtype} -\fi\makeatother - -\makeatletter\ifyb@manuscript - \RequirePackage[tt=false,type1=true]{libertine} -\fi\makeatother - -\RequirePackage[bottom,perpage,multiple]{footmisc} - % see https://tex.stackexchange.com/questions/40072/incompatibility-between-footmisc-option-multiple-and-hyperref/62091#62091 - \makeatletter\let\yb@oldfootnote\footnote\makeatother - \makeatletter\newcommand\yb@nexttoken\relax\makeatother - \makeatletter\newcommand\yb@isfootnote{% - \ifx\footnote\yb@nexttoken\textsuperscript{,}\fi}\makeatother - \makeatletter\renewcommand\footnote[1]{% - \yb@oldfootnote{#1}\futurelet\yb@nexttoken\yb@isfootnote}\makeatother - -\makeatletter - \let\yb@oldsection\section - \ifyb@draft - \RequirePackage[medium]{titlesec} - \else - \RequirePackage[raggedright]{titlesec} - \titlespacing{\section}{0in}{6pt}{6pt}[1in] - \renewcommand\section{\newpage\yb@oldsection} - \fi -\makeatother - -\makeatletter\ifyb@compact - \renewcommand\section{\vspace{2em}\yb@oldsection} -\fi\makeatother - -\makeatletter\ifyb@draft - \RequirePackage{fancyhdr} - \pagestyle{fancy} - \renewcommand\headrulewidth{0pt} - \renewcommand\footrulewidth{0pt} - \fancyhf{} - \fancyhead[L,C,LO,CO]{} - \fancyhead[R,RO]{ - \begin{textblock}{4}(11.5,1) - \begin{tikzpicture} - \node [color=gray, rotate=270, font=\ttfamily\scriptsize, text width=5in] at (0,0) { - Copyright \textcopyright{} \the\year{} by \theauthor{}. - All rights reserved. No part of the contents of this book may be - reproduced or transmitted in any form or by any means without the - written permission of the publisher. - This particular manuscript is printed for - \textbf{\thereviewer{}} and may be used only for one-time review. The - manuscript has to be destroyed after the review. - }; - \end{tikzpicture} - \end{textblock} - } - \fancyfoot[C,CO]{\small\ttfamily page \#\thepage{} of \pageref{LastPage}} -\fi\makeatother - -\renewcommand\maketitle{ - {\LARGE\textbf{\thetitle}} - \\[1em] - by \theauthor{} - \\[4em] - \ifx\thevolume\empty\else% - Volume \thevolume{}\\ - \fi - \ifx\thedate\empty\else% - Rendered on \thedate{} - \fi - \ifx\theversion\empty\else% - \\ - Ver. \theversion{} - \fi -} - -\makeatletter\newcommand\ybPrintTitlePage{ - \ifyb@draft\else - \begin{titlepage} - \ttfamily - \vspace*{\fill} - \noindent - {\Huge\textbf{\thetitle}} - \\[1em] - by \theauthor{} - \\[4em] - \ifx\thevolume\empty\else% - Volume \thevolume{}\\ - \fi - \ifx\thedate\empty\else% - \thedate{} - \fi - \ifx\thedate\empty\else% - \\ - \theversion{} - \fi - \vspace*{\fill} - \end{titlepage} - \fi -}\makeatother - -\makeatletter\newcommand\ybPrintTOC{ - \ifyb@draft\else - \ifyb@compact\else\cleardoublepage\fi - {\setstretch{0.7}\tableofcontents} - \fi -}\makeatother - -\makeatletter\newcommand\ybPrintIndex[1][Index]{ - \ifyb@draft\else - \cleardoublepage - { - \setstretch{1.0} - \small - \addcontentsline{toc}{chapter}{#1} - \printindex - } - \fi -}\makeatother - -\newcommand\ybPrintIcons{% - \ifdefempty{\theemail{}}{}{% - \includegraphics[height=1em]{images/icon-email.pdf}% - \theemail{}% - }% - \includegraphics[height=1em]{images/icon-twitter.pdf}% - \includegraphics[height=1em]{images/icon-linkedin.pdf}% - \includegraphics[height=1em]{images/icon-github.pdf}% - \includegraphics[height=1em]{images/icon-instagram.pdf}% - \includegraphics[height=1em]{images/icon-facebook.pdf}% - \thesocial{}% -} - -% quotes -\RequirePackage{wrapfig} -\RequirePackage{mdframed} -\RequirePackage{changepage} - \strictpagecheck -\mdfdefinestyle{quoteodd}{backgroundcolor=black!0, - leftmargin=6pt,rightmargin=0pt, - innerleftmargin=6pt,innerrightmargin=0pt, - innertopmargin=0pt,innerbottommargin=0pt, - skipabove=0pt,skipbelow=0pt, - linewidth=2pt, - topline=false,bottomline=false,rightline=false} -\mdfdefinestyle{quoteeven}{backgroundcolor=black!0, - rightmargin=6pt,leftmargin=0pt, - innerrightmargin=6pt,innerleftmargin=0pt, - innertopmargin=0pt,innerbottommargin=0pt, - skipabove=0pt,skipbelow=0pt, - linewidth=2pt, - topline=false,bottomline=false,leftline=false} -\makeatletter\newcommand\ybQuote[3]{% - \ifthenelse{\isempty{#3}}{}{ - \ifx\hfuzz#2\hfuzz% - \index{#3}% - \else% - \index{#3, #2}% - \fi% - }% - \def\yb@body{% - \raggedright% - \ifx\hfuzz#3\hfuzz% - #1% - \else% - ``#1''\\\raggedleft---#2 #3% - \fi% - } - \ifyb@draft% - \begin{wrapfigure}{r}{0.4\textwidth}% - \begin{mdframed}[style=quoteodd]% - \yb@body% - \end{mdframed}% - \end{wrapfigure}% - \else% - \begin{wrapfigure}{o}[12pt]{0.4\textwidth}% - \sffamily\checkoddpage% - \ifoddpage% - \begin{mdframed}[style=quoteodd]\yb@body\end{mdframed}% - \else% - \begin{mdframed}[style=quoteeven]\yb@body\end{mdframed}% - \fi% - \vspace{-12pt} - \end{wrapfigure}% - \fi% -}\makeatother - -\makeatletter\newcommand\ybPrintBibliography{% - \AtNextBibliography{\small}% - \raggedright% - \ifyb@manuscript% - \setlength\bibitemsep{0pt}% - \newpage% - \begin{multicols}{2}{\setstretch{1.0}\printbibliography}\end{multicols} - \else - \printbibliography - \fi -}\makeatother - -\AtBeginDocument{% - \raggedbottom% - \setlength\topskip{0mm}% - \setlength\parindent{0pt}% - \setlength\parskip{6pt}% - \interfootnotelinepenalty=10000% -} - -\newcommand*\thetitle{\textbackslash{}thetitle} -\newcommand*\thevolume{} -\newcommand*\thedate{} -\newcommand*\theemail{\textbackslash{}theemail} -\newcommand*\thesocial{\textbackslash{}thesocial} -\newcommand*\theversion{\textbackslash{}theversion} -\newcommand*\theauthor{\textbackslash{}theauthor} -\newcommand*\thereviewer{\textbackslash{}thereviewer} -\newcommand*\theyear{\textbackslash{}theyear} -\newcommand*\theprice{\textbackslash{}theprice} - -\endinput diff --git a/macros/latex/contrib/yb-book/yb-book.dtx b/macros/latex/contrib/yb-book/yb-book.dtx new file mode 100644 index 0000000000..2ca33cb55e --- /dev/null +++ b/macros/latex/contrib/yb-book/yb-book.dtx @@ -0,0 +1,653 @@ +% \iffalse meta-comment +% (The MIT License) +% +% Copyright (c) 2021-2022 Yegor Bugayenko +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the 'Software'), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% \fi + +%%% \CheckSum{0} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} + +% \GetFileInfo{yb-book.dtx} +% \DoNotIndex{\end,\empty,\defined,\def,\begin,\if,\isempty,\endgroup,\begingroup,\let,\else,\fi,\newcommand,\newenvironment} + +% \iffalse +%<*driver> +\ProvidesFile{yb-book.dtx} +%</driver> +%<class>\NeedsTeXFormat{LaTeX2e} +%<class>\ProvidesClass{yb-book} +%<*class> +[02.10.2022 0.2.0 YB Branded Book Style] +%</class> +%<*driver> +\documentclass{ltxdoc} +\usepackage[tt=false, type1=true]{libertine} +\usepackage{href-ul} +\usepackage{graphicx} +\PageIndex +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{yb-book.dtx} + \PrintChanges + \PrintIndex +\end{document} +%</driver> +% \fi + +% \title{\includegraphics[width=0.75in]{yb-book-logo.pdf} \\ \LaTeX{} Class |yb-book|\thanks{The sources are in GitHub at \href{https://github.com/yegor256/yb-book.cls}{yegor256/yb-book.cls}}} +% \author{Yegor Bugayenko \\ \texttt{yegor256@gmail.com}} +% \date{\filedate, \fileversion} +% +% \maketitle +% +% \section{Introduction} +% +% \index{Amazon} +% The provided class |yb-book| helps me design +% \href{https://www.yegor256.com/books.html}{my books} and +% publish them +% \href{https://www.amazon.com/Yegor-Bugayenko/e/B01AM1QMDK}{on Amazon}. +% You are welcome to use is for your own books. It is as simple +% as this: +%\iffalse +%<*verb> +%\fi +\begin{verbatim} +\documentclass{yb-book} +\renewcommand*\thetitle{New Book About OOP} +\renewcommand*\theauthor{Jeff Lebowski} +\renewcommand*\thevolume{1} +\renewcommand*\theversion{1.0} +\begin{document} +\ybPrintTitlePage +\chapter{First One} +\section{About Something Interesting} +Hello, world! +\end{document} +\end{verbatim} +%\iffalse +%</verb> +%\fi + +% You are welcome to suggest additional options and commands, but the style +% of my books is intentionally as simple as possible, avoiding formatting +% as much as possible. Here is \href{https://www.yegor256.com/2019/05/21/dont-improvise.html}{why}. + +% \section{Options} + +% There are a few class options you can use: + +% \begin{macro}{compact} +% Use this package option when you need to make text more compact +% and take less vertical space. This may be convenient fiction books. +% I use this option to render \href{https://www.yegor256.com/code-ahead.html}{Code Ahead} book. +% \end{macro} + +% \begin{macro}{manuscript} +% When the format is not for Amazon printing, +% but for some other purposes (the page size is A4), this option may be +% convenient. I also use it when I want the book to be rendered for +% printing on paper for review purposes. +% \end{macro} + +% \begin{macro}{draft} +% When it's a draft for reviewers (the page size is A4) +% and you want to have a watermark and a compact form of the content. This +% option goes together with |\thereviewer{}| command, which you may redefine, +% in order to embed the name of the reviewed in the watermark. This may +% help you prevent theft of your book: +%\iffalse +%<*verb> +%\fi +\begin{verbatim} +\documentclass[draft]{yb-book} +\renewcommand*\thereviewer{Walter Sobchak} +\begin{document} +Hello, world! +\end{document} +\end{verbatim} +%\iffalse +%</verb> +%\fi +% \end{macro} + +% \section{Meta Commands} + +% There are a number of commands that you may redefine in the preamble: +%\iffalse +%<*verb> +%\fi +\begin{verbatim} +\documentclass{yb-book} +\newcommand*\thetitle{My New Book About OOP} +\newcommand*\theauthor{Yegor Bugayenko} +\newcommand*\thevolume{1} +\newcommand*\thedate{24 Feb 2022} +\newcommand*\theversion{1.4} +\newcommand*\thereviewer{Jeff Lebowski} +\begin{document} +... the content goes here ... +\end{document} +\end{verbatim} +%\iffalse +%</verb> +%\fi + +% \section{Printers} + +% There are a number of printers --- commands that print large blocks of text +% in the expected format: + +% \begin{macro}{\ybPrintTitlePage} +% Prints the first page of a book. It expects at least |\thetitle| +% and |theauthor| to be defined: +%\iffalse +%<*verb> +%\fi +\begin{verbatim} +\documentclass{yb-book} +\renewcommand*\thetitle{My New Book} +\renewcommand*\theauthor{Yegor Bugayenko} +\begin{document} +\ybPrintTitlePage +.. the rest of the book goes here +\end{document} +\end{verbatim} +%\iffalse +%</verb> +%\fi +% \end{macro} + +% \begin{macro}{\ybPrintTOC} +% Prints the table of contents. +% \end{macro} + +% \begin{macro}{\ybQuote} +% Prints a side quote: +%\iffalse +%<*verb> +%\fi +\begin{verbatim} +\documentclass{yb-book} +\begin{document} +Hello, world! +\ybQuote{Never tell the truth to people who + are not worthy of it}{Mark Twain}{} +\end{document} +\end{verbatim} +%\iffalse +%</verb> +%\fi +% \end{macro} + +% \begin{macro}{\ybPrintBibliography} +% Prints the list of bib references. +% \end{macro} + +% \begin{macro}{\ybPrintIndex} +% Prints index with an optional name of the section (instead of ``Index''): +%\iffalse +%<*verb> +%\fi +\begin{verbatim} +\documentclass{yb-book} +\begin{document} +Hello, world! +\ybPrintIndex{Recommended Books} +\end{document} +\end{verbatim} +%\iffalse +%</verb> +%\fi +% \end{macro} + +% \StopEventually{} + +% \section{Implementation} + +% \changes{v0.1.0}{2022/01/09}{Initial version} +% \changes{v0.2.0}{2022/10/02}{Started using l3build} + +% First, we use |xkeyval| package for package options parsing: +% \begin{macrocode} +\RequirePackage{xkeyval} +\makeatletter +\newif\ifyb@draft +\DeclareOptionX{draft}{\yb@drafttrue} +\newif\ifyb@compact +\DeclareOptionX{compact}{\yb@compacttrue} +\newif\ifyb@manuscript +\DeclareOptionX{manuscript}{\yb@manuscripttrue} +\ProcessOptionsX +\makeatother +% \end{macrocode} + +% Then, depending on the options like |draft| and |manuscript|, we preset +% options of the class |book| and then load it: +% \begin{macrocode} +\makeatletter\ifyb@draft + \PassOptionsToClass{11pt}{book} + \PassOptionsToClass{oneside}{book} +\else + \ifyb@manuscript + \PassOptionsToClass{12pt}{book} + \PassOptionsToClass{oneside}{book} + \else + \PassOptionsToClass{11pt}{book} + \PassOptionsToClass{twoside}{book} + \fi +\fi\makeatother +\LoadClass{book} +% \end{macrocode} + +% \begin{macro}{geometry} +% Then, using |geometry|, we setup page layout: +% \begin{macrocode} +\RequirePackage{geometry} +\geometry{paperwidth=6in, paperheight=9in, bindingoffset=0.25in, + left=0.75in, right=0.75in, top=0.75in, bottom=1.25in} +\makeatletter\ifyb@draft + \geometry{a4paper, margin=1in, left=1.5in} +\else + \ifyb@manuscript + \geometry{a4paper, margin=1.2in} + \fi +\fi\makeatother +% \end{macrocode} +% \end{macro} + +% Then, we configure input encoding for UTF-8: +% \begin{macrocode} +\RequirePackage[T1]{fontenc} +\RequirePackage[utf8]{inputenc} +\RequirePackage{lmodern} +% \end{macrocode} + +% Then, we load many important packages: +% \begin{macrocode} +\RequirePackage{anyfontsize} +\RequirePackage{tikz} + \usetikzlibrary{positioning} + \usetikzlibrary{shapes} + \usetikzlibrary{fit} +\RequirePackage{chngcntr} + \counterwithout{footnote}{chapter} +\RequirePackage{lastpage} +\RequirePackage{paralist} +\RequirePackage{xcolor} +\RequirePackage{graphicx} +\RequirePackage[inline]{enumitem} + \setlist{nosep} +\RequirePackage{float} +\RequirePackage[normalem]{ulem} +\RequirePackage{xfp} +\RequirePackage{soul} +\RequirePackage{xifthen} +\RequirePackage[autostyle=try]{csquotes} +% \end{macrocode} + +% \begin{macro}{\pagestyle} +% Then, we set the layout of a page to |plain|: +% \begin{macrocode} +\pagestyle{plain} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{setspace} +% Then, using |setspace| package we set the spacing between lines in the text, +% depending on the package options: +% \begin{macrocode} +\RequirePackage{setspace} + \setstretch{1.2} + \makeatletter\ifyb@draft\setstretch{1.1}\fi\makeatother + \makeatletter\ifyb@compact\setstretch{1.0}\fi\makeatother + \makeatletter\ifyb@manuscript\setstretch{1.1}\fi\makeatother +% \end{macrocode} +% \end{macro} + +% \begin{macro}{biblatex} +% Then, we configure |biblatex|, for citation management: +% \begin{macrocode} +\RequirePackage[indexing=cite,style=authoryear, + natbib=true,maxnames=1,minnames=1,doi=false, + url=false,isbn=false,isbn=false]{biblatex} + \DeclareCiteCommand{\citetitle} + {\boolfalse{citetracker}% + \boolfalse{pagetracker}% + \usebibmacro{prenote}} + {\ifciteindex + {\indexnames{labelname}} + {}% + \printfield[citetitle]{labeltitle}} + {\multicitedelim} + {\usebibmacro{postnote}} + \DeclareCiteCommand*{\citetitle} + {\boolfalse{citetracker}% + \boolfalse{pagetracker}% + \usebibmacro{prenote}} + {\ifciteindex + {\indexnames{labelname}} + {}% + \printfield[citetitle]{title}} + {\multicitedelim} + {\usebibmacro{postnote}} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{condensed} +% Then, we define |condensed| environment for snippets +% (|lsstyle| is defined by |letterspace| in |microtype|): +% \begin{macrocode} +\newenvironment{condensed} + {\begingroup\setstretch{1.0}\lsstyle} + {\endgroup} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{microtype} +% Then, we include |microtype| for better rendering: +% \begin{macrocode} +\makeatletter\ifyb@draft\else + \RequirePackage[letterspace=-50]{microtype} +\fi\makeatother +% \end{macrocode} +% \end{macro} + +% \begin{macro}{libertine} +% Then, we include |libertine|, for a good looking font: +% \begin{macrocode} +\makeatletter\ifyb@manuscript + \RequirePackage[tt=false,type1=true]{libertine} +\fi\makeatother +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\section} +% Then, we redefine |\section| command: +% \begin{macrocode} +\makeatletter +\let\yb@oldsection\section +\ifyb@draft + \RequirePackage[medium]{titlesec} +\else + \RequirePackage[raggedright]{titlesec} + \titlespacing{\section}{0in}{6pt}{6pt}[1in] + \renewcommand\section{\newpage\yb@oldsection} +\fi +\ifyb@compact + \renewcommand\section{\vspace{2em}\yb@oldsection} +\fi +\makeatother +% \end{macrocode} +% \end{macro} + +% Then, if it's a |draft|, we put a watermark comment: +% \begin{macrocode} +\makeatletter\ifyb@draft +\RequirePackage{fancyhdr} +\pagestyle{fancy} +\renewcommand\headrulewidth{0pt} +\renewcommand\footrulewidth{0pt} +\fancyhf{} +\fancyhead[L,C,LO,CO]{} +\fancyhead[R,RO]{ + \begin{textblock}{4}(11.5,1)\begin{tikzpicture} + \node [color=gray, rotate=270, + font=\ttfamily\scriptsize, text width=5in] at (0,0) { + Copyright \textcopyright{} \the\year{} by \theauthor{}. + All rights reserved. No part of the contents of + this book may be reproduced or transmitted in any + form or by any means without the written permission + of the publisher. This particular manuscript is + printed for \textbf{\thereviewer}} and may be used only + for one-time review. The manuscript has to be destroyed + after the review. + }; + \end{tikzpicture}\end{textblock} +} +\fancyfoot[C,CO]{\small\ttfamily + page \#\thepage{} of \pageref{LastPage}} +\fi\makeatother +% \end{macrocode} + +% \begin{macro}{\maketitle} +% Then, we redefine |\maketitle| command: +% \begin{macrocode} +\renewcommand\maketitle{ + {\LARGE\textbf{\thetitle}} + \\[1em] + by \theauthor{} + \\[4em] + \ifx\thevolume\empty\else% + Volume \thevolume{}\\ + \fi + \ifx\thedate\empty\else% + Rendered on \thedate{} + \fi + \ifx\theversion\empty\else% + \\ + Ver. \theversion{} + \fi +} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\ybPrintTitlePage} +% Then, we define |\ybPrintTitlePage| command: +% \begin{macrocode} +\makeatletter\newcommand\ybPrintTitlePage{ + \ifyb@draft\else + \begin{titlepage} + \ttfamily + \vspace*{\fill} + \noindent + {\Huge\textbf{\thetitle}} + \\[1em] + by \theauthor{} + \\[4em] + \ifx\thevolume\empty\else% + Volume \thevolume{}\\ + \fi + \ifx\thedate\empty\else% + \thedate{} + \fi + \ifx\thedate\empty\else% + \\ + \theversion{} + \fi + \vspace*{\fill} + \end{titlepage} + \fi +}\makeatother +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\ybPrintTOC} +% Then, we define |ybPrintTOC| command to print table of contents: +% \begin{macrocode} +\makeatletter\newcommand\ybPrintTOC{ + \ifyb@draft\else + \ifyb@compact\else\cleardoublepage\fi + {\setstretch{0.7}\tableofcontents} + \fi +}\makeatother +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\ybPrintIndex} +% Then, we configure |imakeidx| package and define |\ybPrintIndex| command: +% \begin{macrocode} +\RequirePackage{imakeidx} + \renewbibmacro*{citeindex}{\indexnames{labelname}{}} + \makeindex + \indexsetup{othercode={\hyphenpenalty=10000}} +\makeatletter\newcommand\ybPrintIndex[1][Index]{ + \ifyb@draft\else + \cleardoublepage + { + \setstretch{1.0} + \small + \addcontentsline{toc}{chapter}{#1} + \printindex + } + \fi +}\makeatother +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\ybQuote} +% Then, with the help of |wrapfig| and |mdframed|, we define |\ybQuote| command: +% \begin{macrocode} +\RequirePackage{wrapfig} +\RequirePackage{mdframed} +\RequirePackage{changepage} + \strictpagecheck +\mdfdefinestyle{quoteodd}{backgroundcolor=black!0, + leftmargin=6pt,rightmargin=0pt, + innerleftmargin=6pt,innerrightmargin=0pt, + innertopmargin=0pt,innerbottommargin=0pt, + skipabove=0pt,skipbelow=0pt, + linewidth=2pt, + topline=false,bottomline=false,rightline=false} +\mdfdefinestyle{quoteeven}{backgroundcolor=black!0, + rightmargin=6pt,leftmargin=0pt, + innerrightmargin=6pt,innerleftmargin=0pt, + innertopmargin=0pt,innerbottommargin=0pt, + skipabove=0pt,skipbelow=0pt, + linewidth=2pt, + topline=false,bottomline=false,leftline=false} +\makeatletter\newcommand\ybQuote[3]{% + \ifthenelse{\isempty{#3}}{}{ + \ifx\hfuzz#2\hfuzz% + \index{#3}% + \else% + \index{#3, #2}% + \fi% + }% + \def\yb@body{% + \raggedright% + \ifx\hfuzz#3\hfuzz% + #1% + \else% + ``#1''\\\raggedleft---#2 #3% + \fi% + } + \ifyb@draft% + \begin{wrapfigure}{r}{0.4\textwidth}% + \begin{mdframed}[style=quoteodd]% + \yb@body% + \end{mdframed}% + \end{wrapfigure}% + \else% + \begin{wrapfigure}{o}[12pt]{0.4\textwidth}% + \sffamily\checkoddpage% + \ifoddpage% + \begin{mdframed}[style=quoteodd]\yb@body\end{mdframed}% + \else% + \begin{mdframed}[style=quoteeven]\yb@body\end{mdframed}% + \fi% + \vspace{-12pt} + \end{wrapfigure}% + \fi% +}\makeatother +% \end{macrocode} +% \end{macro} + +% Then, we use and configure |footmisc| as suggested +% \href{https://tex.stackexchange.com/questions/40072/incompatibility-between-footmisc-option-multiple-and-hyperref/62091#62091}{here}: +% \begin{macrocode} +\RequirePackage{perpage} +\RequirePackage[bottom,perpage,multiple]{footmisc} +\makeatletter + \let\yb@oldfootnote\footnote +\newcommand\yb@nexttoken\relax +\newcommand\yb@isfootnote{% + \ifx\footnote\yb@nexttoken\textsuperscript{,}\fi} +\renewcommand\footnote[1]{% + \yb@oldfootnote{#1}\futurelet\yb@nexttoken\yb@isfootnote} +\makeatother +% \end{macrocode} + +% \begin{macro}{\ybPrintBibliography} +% Then, we define |\ybPrintBibliography|, to print a list of references: +% \begin{macrocode} +\makeatletter\newcommand\ybPrintBibliography{% + \AtNextBibliography{\small}% + \raggedright% + \ifyb@manuscript% + \setlength\bibitemsep{0pt}% + \newpage% + \begin{multicols}{2} + {\setstretch{1.0}\printbibliography} + \end{multicols} + \else + \printbibliography + \fi +}\makeatother +% \end{macrocode} +% \end{macro} + +% Then, a few layout configurations at the beginning of the document: +% \begin{macrocode} +\AtBeginDocument{% + \raggedbottom% + \setlength\topskip{0mm}% + \setlength\parindent{0pt}% + \setlength\fboxsep{0pt}% + \setlength\parskip{6pt}% + \interfootnotelinepenalty=10000% +} +% \end{macrocode} + +% Finally, a few meta commands with default values: +% \begin{macrocode} +\newcommand*\thetitle{\textbackslash{}thetitle} +\newcommand*\thevolume{} +\newcommand*\thedate{} +\newcommand*\theversion{\textbackslash{}theversion} +\newcommand*\theauthor{\textbackslash{}theauthor} +\newcommand*\thereviewer{\textbackslash{}thereviewer} +% \end{macrocode} + +% \Finale + +%\clearpage +% +%\PrintChanges +%\clearpage +%\PrintIndex diff --git a/macros/latex/contrib/yb-book/yb-book.ins b/macros/latex/contrib/yb-book/yb-book.ins new file mode 100644 index 0000000000..a84a03f901 --- /dev/null +++ b/macros/latex/contrib/yb-book/yb-book.ins @@ -0,0 +1,55 @@ +%% (The MIT License) +%% +%% Copyright (c) 2021-2022 Yegor Bugayenko +%% +%% Permission is hereby granted, free of charge, to any person obtaining a copy +%% of this software and associated documentation files (the 'Software'), to deal +%% in the Software without restriction, including without limitation the rights +%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +%% copies of the Software, and to permit persons to whom the Software is +%% furnished to do so, subject to the following conditions: +%% +%% The above copyright notice and this permission notice shall be included in all +%% copies or substantial portions of the Software. +%% +%% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +%% SOFTWARE. + +\input docstrip.tex +\keepsilent +\usedir{macros/latex/contrib/yb-book} +\preamble +(The MIT License) + +Copyright (c) 2021-2022 Yegor Bugayenko + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the 'Software'), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +\endpreamble +\generate{\file{yb-book.cls}{\from{yb-book.dtx}{class}}} +\obeyspaces +\Msg{*** To finish the installation you have to move the ".cls"} +\Msg{*** file into a directory searched by TeX. To produce the} +\Msg{*** documentation run the file ".dtx" through LaTeX. If any} +\Msg{*** questions, submit a new GitHub issue.} +\endbatchfile diff --git a/macros/latex/contrib/yb-book/yb-book.pdf b/macros/latex/contrib/yb-book/yb-book.pdf Binary files differindex cde5f931f5..fa56f44647 100644 --- a/macros/latex/contrib/yb-book/yb-book.pdf +++ b/macros/latex/contrib/yb-book/yb-book.pdf diff --git a/macros/latex/contrib/yb-book/yb-book.tex b/macros/latex/contrib/yb-book/yb-book.tex deleted file mode 100644 index 0937552058..0000000000 --- a/macros/latex/contrib/yb-book/yb-book.tex +++ /dev/null @@ -1,79 +0,0 @@ -% (The MIT License) -% -% Copyright (c) 2021-2022 Yegor Bugayenko -% -% Permission is hereby granted, free of charge, to any person obtaining a copy -% of this software and associated documentation files (the 'Software'), to deal -% in the Software without restriction, including without limitation the rights -% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -% copies of the Software, and to permit persons to whom the Software is -% furnished to do so, subject to the following conditions: -% -% The above copyright notice and this permission notice shall be included in all -% copies or substantial portions of the Software. -% -% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -% SOFTWARE. - -\documentclass[compact,manuscript]{./yb-book} -\usepackage{ffcode} -\usepackage{href-ul} -\renewcommand*\theversion{0.1.0} -\renewcommand*\thedate{2022/01/03} -\renewcommand*\thetitle{\LaTeX{} Class \ff{yb-book}} -\renewcommand*\theauthor{Yegor Bugayenko} - -\begin{document} - -\includegraphics[height=6em]{yb-book-logo.pdf} -\vspace*{24pt} - -\maketitle - -\index{Amazon} -The provided class \ff{yb-book} helps me design -\href{https://www.yegor256.com/books.html}{my books} and -publish them -\href{https://www.amazon.com/Yegor-Bugayenko/e/B01AM1QMDK}{on Amazon}. - -There are a few class options you can use: - -\ff{compact} --- when you need to make text more compact -and take less vertical space; - -\ff{manuscript} --- when the format is not for Amazon printing, -but for some other purposes (the page size is A4), like the document -you are reading right now; - -\ff{draft} --- when it's a draft for reviewers (the page size is A4) -and you want to have a watermark and a compact form of the content; - -\section*{Printers} - -There are a number of printers, commands that print large blocks of text -in the expected format: - -\ff{\textbackslash{}ybPrintTitlePage} --- prints the first page of a book. - -\ff{\textbackslash{}ybPrintTOC} --- prints the table of contents. - -\ff{\textbackslash{}ybQuote} --- prints a side quote. - -\ff{\textbackslash{}ybPrintBibliography} --- prints the list of bib references. - -\ff{\textbackslash{}ybPrintIcons} --- prints your social icons. - -\ff{\textbackslash{}ybPrintIndex[1]} --- prints index with an optional name of the section (instead of ``Index''). - -For more samples, check the directory \ff{samples/}. - -You are welcome to suggest additional commands, but the style -of my books is intentionally as simple as possible, avoiding formatting -as much as possible. - -\end{document}
\ No newline at end of file |