summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/kdpcover/kdpcover.cls
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/kdpcover/kdpcover.cls')
-rw-r--r--macros/latex/contrib/kdpcover/kdpcover.cls147
1 files changed, 147 insertions, 0 deletions
diff --git a/macros/latex/contrib/kdpcover/kdpcover.cls b/macros/latex/contrib/kdpcover/kdpcover.cls
new file mode 100644
index 0000000000..9f3355f026
--- /dev/null
+++ b/macros/latex/contrib/kdpcover/kdpcover.cls
@@ -0,0 +1,147 @@
+% (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.
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{kdpcover}[2021/09/02 0.2.2 Cover for Kindle Direct Publishing books]
+\LoadClass{article}
+
+\newcommand*\kdppages{100}
+\newlength\kdpxsize
+\newlength\kdpysize
+
+\RequirePackage{iexec}
+\RequirePackage{xkeyval}
+\DeclareOptionX{6x9}{\setlength\kdpxsize{6in}\setlength\kdpysize{9in}}
+\DeclareOptionX{7x10}{\setlength\kdpxsize{7in}\setlength\kdpysize{10in}}
+\DeclareOptionX{8x10}{\setlength\kdpxsize{8in}\setlength\kdpysize{10in}}
+\DeclareOptionX{pages}{\renewcommand*\kdppages{#1}}
+\DeclareOptionX{pdf}{\renewcommand*{\kdppages}{\iexec{qpdf --show-npages #1 | tr -d '[[:space:]]' | \{ cat; echo \%; \}}}}
+\ProcessOptionsX\relax
+
+\RequirePackage{anyfontsize}
+\RequirePackage{tikz}
+\RequirePackage[letterspace=-50]{microtype}
+\RequirePackage{xifthen}
+\RequirePackage{xcolor}
+\RequirePackage{graphicx}
+\RequirePackage{setspace}
+ \setstretch{1.2}
+% The height of the page is 9 inches plus 0.125 "bleed" on top and
+% on the bottom.
+% Check this doc: https://kdp.amazon.com/en_US/help/topic/G201953020
+\newlength\kdpheight
+\setlength\kdpheight{0.125in + \kdpysize + 0.125in}
+% The width is 6 inches plus 0.125 "bleed" on each side. The width of the
+% "spine" depends on the amount of pages in the book. Also, there is a
+%
+\newlength\kdpwidth
+\setlength\kdpwidth{0.125in + \kdpxsize + 0.0025in * \kdppages + \kdpxsize + 0.125in}
+\RequirePackage{geometry}
+ \geometry{paperwidth=\kdpwidth,paperheight=\kdpheight,left=0pt,right=0pt,top=0pt,bottom=0pt}
+\RequirePackage[absolute]{textpos}
+ \TPGrid{16}{16}
+
+\newcommand\putSpine[2][kdpcover-signature]{
+ \begin{textblock}{2.4}[0.5,0](8,0)
+ \begin{tikzpicture}
+ \node [rectangle, inner sep=0em, fill=black, minimum width=2.4\TPHorizModule, minimum height=16\TPVertModule] at (0,0) {};
+ \end{tikzpicture}
+ \end{textblock}
+ \begin{textblock}{1}[0.5,0](8,2)
+ \begin{tikzpicture}
+ \node [color=white, inner sep=0cm, outer sep=0cm, rotate=270, minimum height=\TPHorizModule] at (0,0) {
+ \Large #1
+ };
+ \end{tikzpicture}
+ \end{textblock}
+ \begin{textblock}{2.4}[0.5,1](8,14)
+ \centerline{\includegraphics[width=0.32in]{#1}}
+ \end{textblock}
+}
+
+\newcommand\putPicture[1]{
+ \begin{textblock}{4}(10,2)
+ \includegraphics[width=\textwidth]{#1}
+ \end{textblock}
+}
+
+\newcommand\putVolume[1]{
+ \begin{textblock}{2}[1,1](15,14)
+ \raggedleft
+ \includegraphics[height=0.4in]{kdpcover-vol-#1}
+ \end{textblock}
+}
+
+\newcommand\putPrice[1]{
+ \begin{textblock}{4}[0,1](1,2)
+ \small #1
+ \end{textblock}
+}
+
+\newcommand\putBack[1]{
+ \begin{textblock}{5}[0,0](1,3)
+ \small #1
+ \end{textblock}
+}
+
+\newcommand\putTitle[1]{
+ \begin{textblock}{5}(10,9)
+ \fontsize{32}{32}\selectfont #1
+ \end{textblock}
+}
+
+\newcommand\putAuthor[1]{
+ \begin{textblock}{4}(10,10)
+ \large by #1
+ \end{textblock}
+}
+
+\newcommand\putTLDR[1]{
+ \begin{textblock}{5}(10,11)
+ TL;DR #1
+ \end{textblock}
+}
+
+\newcommand\putVersion[1]{
+ \begin{textblock}{4}[0,1](10,14)
+ #1
+ \quad
+ \iexec{git log -n 1 --pretty='format:\%ad' --date='format:\%e-\%b-\%Y'}
+ \end{textblock}
+}
+
+\newcommand\putCopyright[2]{
+ \begin{textblock}{4}[0,1](1,14)
+ \small (c)
+ #1 #2
+ \end{textblock}
+}
+
+\AtBeginDocument{
+ \ttfamily%
+ \raggedright%
+ \setlength\parindent{0pt}%
+ \setlength\parskip{0pt}%
+ \interfootnotelinepenalty=10000
+}
+
+\endinput