diff options
author | Karl Berry <karl@freefriends.org> | 2021-06-04 20:18:49 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-06-04 20:18:49 +0000 |
commit | ed959bb1db76420d8fa3355a822dda795cadf253 (patch) | |
tree | 1acd42975fbbec3aa5c398457d8fe4a61b92b230 | |
parent | 2780bb0724f1de19cc4b7b5dec2feb6134eceda5 (diff) |
kdpbook (4jun21)
git-svn-id: svn://tug.org/texlive/trunk@59466 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/texmf-dist/doc/latex/kdpbook/DEPENDS.txt | 11 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/kdpbook/README.md | 34 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/kdpbook/images/signature.pdf | bin | 0 -> 7256 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/kdpbook/images/volume-1.pdf | bin | 0 -> 8540 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/kdpbook/images/volume-2.pdf | bin | 0 -> 6504 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/kdpbook/images/volume-3.pdf | bin | 0 -> 7156 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/kdpbook/images/volume-4.pdf | bin | 0 -> 6723 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/kdpbook/kdpcover.pdf | bin | 0 -> 104845 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/kdpbook/kdpcover.tex | 82 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/kdpbook/kdpcover.cls | 161 | ||||
-rwxr-xr-x | Master/tlpkg/bin/tlpkg-ctan-check | 2 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/collection-publishers.tlpsrc | 1 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/kdpbook.tlpsrc | 15 |
13 files changed, 305 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/latex/kdpbook/DEPENDS.txt b/Master/texmf-dist/doc/latex/kdpbook/DEPENDS.txt new file mode 100644 index 00000000000..2be9f7df5ef --- /dev/null +++ b/Master/texmf-dist/doc/latex/kdpbook/DEPENDS.txt @@ -0,0 +1,11 @@ +hard shellesc +hard xkeyval +hard anyfontsize +hard tikz +hard microtype +hard xifthen +hard xcolor +hard graphicx +hard setspace +hard geometry +hard textpos diff --git a/Master/texmf-dist/doc/latex/kdpbook/README.md b/Master/texmf-dist/doc/latex/kdpbook/README.md new file mode 100644 index 00000000000..5c5765b4fcc --- /dev/null +++ b/Master/texmf-dist/doc/latex/kdpbook/README.md @@ -0,0 +1,34 @@ +[![make](https://github.com/yegor256/kdpcover/actions/workflows/make.yml/badge.svg)](https://github.com/yegor256/kdpcover/actions/workflows/make.yml) +[![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/yegor256/kdpcover/blob/master/LICENSE.txt) + +This LaTeX class I use to format covers for [my books](https://www.yegor256.com/books.html), +which I sell [on Amazon](https://www.amazon.com/Yegor-Bugayenko/e/B01AM1QMDK). +The problem this class solves is [the necessity](https://kdp.amazon.com/en_US/help/topic/G201953020) +to change the size of the cover PDF respectfully +to the number of pages in the book — the bigger +the book, the larger must be the cover. The provided class makes necessary +calculations on-fly, using the `qpdf` took from GhostScript. Obviously, +you need to have it installed. Also, you must +run `pdflatex` with the `--shell-escape` option, in order to allow LaTeX to run `qpdf`. + +First, [install it](https://en.wikibooks.org/wiki/LaTeX/Installing_Extra_Packages) +from [CTAN](https://ctan.org/pkg/kdpcover) +and then use in the preamble: + +```tex +\documentclass[pdf=my-book.pdf]{kdpcover} +\begin{document} +% Here you print the cover as you with, but I recommend +% you to use the commands available in the class, such as: +\putSpine{my book, vol. 1} +\putAuthor{Yegor Bugayenko} +\end{document} +``` + +The full example and all commands are available in the `kdpcover.tex` file. + +If you want to contribute yourself, make a fork, then create a branch, +then run `make` in the root directory. +It should compile everything without errors. If not, submit an issue and wait. +Otherwise, make your changes and then run `make` again. If the build is +still clean, submit a pull request. diff --git a/Master/texmf-dist/doc/latex/kdpbook/images/signature.pdf b/Master/texmf-dist/doc/latex/kdpbook/images/signature.pdf Binary files differnew file mode 100644 index 00000000000..af185666b22 --- /dev/null +++ b/Master/texmf-dist/doc/latex/kdpbook/images/signature.pdf diff --git a/Master/texmf-dist/doc/latex/kdpbook/images/volume-1.pdf b/Master/texmf-dist/doc/latex/kdpbook/images/volume-1.pdf Binary files differnew file mode 100644 index 00000000000..8ccf53f5174 --- /dev/null +++ b/Master/texmf-dist/doc/latex/kdpbook/images/volume-1.pdf diff --git a/Master/texmf-dist/doc/latex/kdpbook/images/volume-2.pdf b/Master/texmf-dist/doc/latex/kdpbook/images/volume-2.pdf Binary files differnew file mode 100644 index 00000000000..4dd3c14199e --- /dev/null +++ b/Master/texmf-dist/doc/latex/kdpbook/images/volume-2.pdf diff --git a/Master/texmf-dist/doc/latex/kdpbook/images/volume-3.pdf b/Master/texmf-dist/doc/latex/kdpbook/images/volume-3.pdf Binary files differnew file mode 100644 index 00000000000..a554387e498 --- /dev/null +++ b/Master/texmf-dist/doc/latex/kdpbook/images/volume-3.pdf diff --git a/Master/texmf-dist/doc/latex/kdpbook/images/volume-4.pdf b/Master/texmf-dist/doc/latex/kdpbook/images/volume-4.pdf Binary files differnew file mode 100644 index 00000000000..a2d12b0d430 --- /dev/null +++ b/Master/texmf-dist/doc/latex/kdpbook/images/volume-4.pdf diff --git a/Master/texmf-dist/doc/latex/kdpbook/kdpcover.pdf b/Master/texmf-dist/doc/latex/kdpbook/kdpcover.pdf Binary files differnew file mode 100644 index 00000000000..7c9f844d5a5 --- /dev/null +++ b/Master/texmf-dist/doc/latex/kdpbook/kdpcover.pdf diff --git a/Master/texmf-dist/doc/latex/kdpbook/kdpcover.tex b/Master/texmf-dist/doc/latex/kdpbook/kdpcover.tex new file mode 100644 index 00000000000..ef2c073d608 --- /dev/null +++ b/Master/texmf-dist/doc/latex/kdpbook/kdpcover.tex @@ -0,0 +1,82 @@ +% (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[pages=200,6x9]{kdpcover} +\begin{document} +% Here we put the vertical black spine line with two white elements +% inside: the text at the top and the logo at the bottom. Make sure +% the text is short enough so that it doesn't touch the logo. It's +% a good practice to mention the volume number at the end of the text, +% if you have more than one volume, e.g. "my book, vol. 1". I suggest +% using small caps in the text only. +\putSpine{kdpcover, a LaTeX class for KDP books}{./images/signature} + +% This one prints the volume picture. It is intentionally made large, +% in order to make it obvious. +\putVolume{1} + +% Here we print the version and it will also add the date of the latest +% Git commit in the current directory. If it's not a Git repository, +% the date won't be printed. +\putVersion{0.1.0} + +% This prints the price, which is a good practice to mention, I believe. +\putPrice{\$0.00} + +% This one prints the copyright short message with the year and the +% name of the autor. +\putCopyright{\the\year}{Yegor Bugayenko} + +% Here we print the title of the book +\putTitle{kdpcover} + +% Here we print the author. +\putAuthor{Yegor Bugayenko} + +% Here we print the TL;DR paragraph, which summarizies the message +% of the entire book. +\putTLDR{I use this LaTeX class to design covers for my books published +by Kindle Direct Publishing; you also can do it, provided you like the layout and the style.} + +% The picture. +\putPicture{cactus.pdf} + +% This is the text on the back of the book, which usually I suggest +% to omit and keep the back empty and white. +\putBack{ + You need to either specify the number of pages + in your PDF book, or provide the path to the PDF. + In the latter case, the pages will be counted using + "qpdf," which has to be installed: + \newline\newline + \char`\\documentclass[pages=200,pdf=book.pdf]\string{kdpcover\string}\newline + \char`\\begin\string{document\string}\newline + \char`\\putSpine\string{my book\string}\newline + \char`\\end\string{document\string} + \newline\newline + See the file "kdpcover.tex" for a full example with all + available commands and class options. + \newline\newline + Even more details you can find on GitHub:\newline + https://github.com/yegor256/kdpcover +} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/kdpbook/kdpcover.cls b/Master/texmf-dist/tex/latex/kdpbook/kdpcover.cls new file mode 100644 index 00000000000..91603e47bf9 --- /dev/null +++ b/Master/texmf-dist/tex/latex/kdpbook/kdpcover.cls @@ -0,0 +1,161 @@ +% (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/06/04 0.1.0 Cover for KDP book] +\LoadClass{article} + +\newcommand*\kdppages{100} +\newlength\kdpxsize +\newlength\kdpysize + +\RequirePackage{shellesc} +\RequirePackage{xkeyval} +\DeclareOptionX{6x9}{ + \setlength\kdpxsize{6in} + \setlength\kdpysize{9in} +} +\DeclareOptionX{pages}{\renewcommand*\kdppages{#1}} +\makeatletter\newcommand{\kdpexec}[3][1=]{% + \begingroup + \let\%\@percentchar + \let\{\@charlb + \let\}\@charrb + \ShellEscape{#3 > #2}% + \endgroup% + \ifthenelse{\isempty{#1}}{\input{#2}}{}% +}\makeatother +\makeatletter\let\primitiveinput\@@input\makeatother% +\DeclareOptionX{pdf}{ + \kdpexec[noprint]{totalpages.exc}{qpdf --show-npages #1 | tr -d '[[:space:]]' | \{ cat; echo \%; \}}% + \renewcommand{\kdppages}{\primitiveinput totalpages.exc } +} +\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]{ + \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]{#2}} + \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]{images/volume-#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 + \kdpexec[]{date.exc}{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 diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index 42ed576be98..10843922a5b 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -417,7 +417,7 @@ my @TLP_working = qw( jslectureplanner jumplines junicode jupynotex jura juraabbrev jurabib juramisc jurarsp js-misc jvlisting kalendarium kanaparser kantlipsum karnaugh karnaugh-map karnaughmap kastrup - kblocks kdgdocs kerkis kerntest ketcindy + kblocks kdgdocs kdpbook kerkis kerntest ketcindy keycommand keyfloat keyindex keyreader keystroke keyval2e keyvaltable kix kixfont knitting knittingpattern knowledge diff --git a/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc b/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc index 8d2e41c2410..abcea165ee7 100644 --- a/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc @@ -109,6 +109,7 @@ depend jmlr depend jnuexam depend jpsj depend kdgdocs +depend kdpbook depend kluwer depend ksp-thesis depend ku-template diff --git a/Master/tlpkg/tlpsrc/kdpbook.tlpsrc b/Master/tlpkg/tlpsrc/kdpbook.tlpsrc new file mode 100644 index 00000000000..ecfc789d334 --- /dev/null +++ b/Master/tlpkg/tlpsrc/kdpbook.tlpsrc @@ -0,0 +1,15 @@ +#depend shellesc +depend tools +depend xkeyval +depend anyfontsize +#depend tikz +depend pgf +depend microtype +depend xifthen +depend xcolor +#depend graphicx +depend graphics.sty +depend setspace +depend geometry +depend textpos + |