diff options
author | Karl Berry <karl@freefriends.org> | 2018-03-27 21:21:56 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2018-03-27 21:21:56 +0000 |
commit | 3e4f442d1ed8ac2a1395a7c1485740c3d2f66691 (patch) | |
tree | 9bf352dbb78f4536a00e8117fc0792573c3302e8 /Master/texmf-dist | |
parent | 829f96cd9688f9aac395c58003ead406cdf29125 (diff) |
novel (27mar18)
git-svn-id: svn://tug.org/texlive/trunk@47146 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
71 files changed, 5886 insertions, 4415 deletions
diff --git a/Master/texmf-dist/doc/lualatex/novel/extras/crgb.icc b/Master/texmf-dist/doc/lualatex/novel/extras/crgb.icc Binary files differdeleted file mode 100644 index 642b061543e..00000000000 --- a/Master/texmf-dist/doc/lualatex/novel/extras/crgb.icc +++ /dev/null diff --git a/Master/texmf-dist/doc/lualatex/novel/extras/novel-cover-template.tex b/Master/texmf-dist/doc/lualatex/novel/extras/novel-cover-template.tex deleted file mode 100644 index 43e7f6aa0fc..00000000000 --- a/Master/texmf-dist/doc/lualatex/novel/extras/novel-cover-template.tex +++ /dev/null @@ -1,16 +0,0 @@ -% !TeX TS-program = LuaLaTeX -% !TeX encoding = UTF-8 -% IF YOU COMPILE THIS DOCUMENT: Be sure that this file, and its generated PDF, -% have read/write permissions for any user. If they don't, then -% compile will fail at the point where files are written. -\documentclass[coverart]{novel} % v. 1.46.2 -\SetMediaSize{width}{height} % includes bleed -\SetTrimSize{width}{height} % without bleed -\SetTitle{example} % title required, might not be book title -% \SetAuthor{you} % optional -\SetPDFX[CGATSTR001]{X-1a:2001} % or whatever -\SetCoverImage{yourimage-cmyk240.jpg} % CMYK jpg, if PDF/X-1a. -% \SetApplication{whatever} % rarely used -% \SetProducer{whatever} % rarely used -\begin{document}\end{document} % nothing else in between - diff --git a/Master/texmf-dist/doc/lualatex/novel/extras/novel-example.tex b/Master/texmf-dist/doc/lualatex/novel/extras/novel-example.tex index 9652439a206..c514c84be91 100644 --- a/Master/texmf-dist/doc/lualatex/novel/extras/novel-example.tex +++ b/Master/texmf-dist/doc/lualatex/novel/extras/novel-example.tex @@ -6,7 +6,7 @@ % IF YOU COMPILE THIS DOCUMENT: Be sure that this file, and its generated PDF, % have read/write permissions for any user. If they don't, then % compile will fail at the point where files are written. -\documentclass{novel} % v. 1.46.2 +\documentclass{novel} % v. 1.50 \SetTitle{Dark and Stormy} \SetSubtitle{A Tale of Nights} \SetAuthor{Dirk Hardcase} @@ -20,7 +20,7 @@ \vspace*{6\nbs} \hfill\charscale[1.8]{\textbf{Dark and}}\par \vspace{\nbs} -\hfill\charscale[2.4]{\textbf{Stormy}}\par +\hfill\charscale[2.4]{\textbf{\color{gray}Stormy}}\par \clearpage % ii. Blank page: @@ -34,7 +34,7 @@ \begin{center} \charscale[3.6]{\textbf{Dark and}}\par \vspace{2\nbs} -\charscale[4.8]{\textbf{Stormy}}\par +\charscale[4.8]{\textbf{\color{gray}Stormy}}\par \vspace{1.5\nbs} \charscale[1.6]{A Tale of Nights}\par \vspace{4\nbs} @@ -123,7 +123,5 @@ Lord Withens, wet and bruised, finally arrived at his destination. The reason he \lipsum -\cleartoend % ensures final page is blank verso - \end{document} diff --git a/Master/texmf-dist/doc/lualatex/novel/extras/novel-extras-README.html b/Master/texmf-dist/doc/lualatex/novel/extras/novel-extras-README.html index e22d9e6cc92..b9472a0a130 100644 --- a/Master/texmf-dist/doc/lualatex/novel/extras/novel-extras-README.html +++ b/Master/texmf-dist/doc/lualatex/novel/extras/novel-extras-README.html @@ -9,32 +9,25 @@ <h2>README for novel extras</h2> -<p>This folder contains items that may be helpful, but are not essential to operation of the <i>novel</i> document class.</p> +<p>This folder contains items that may be helpful, but are not essential to operation of the <i>novel</i> document class. Version 1.50.</p> -<p>File <i>novel-example.tex</i> is a fake short novel. If you wish to compile it, place a copy in your user home folder (or other place where you have read/write privilege) and compile it there. On some operating systems, you cannot compile the original in its <i>extras</i> folder.</p> +<p>File <i>novel-example.tex</i> is a fake short novel. If you wish to compile it, place a copy in your user home folder (or other place where you have read/write privilege) and compile it there.</p> -<p>File <i>novel-testsuite.tex</i> exercises the various capabilities of the document class. You can look at the code, and see how it compiles. You may also change settings, to see what they do. It requires file <i>novel-testimage.png</i>. If you wish to compile it, place a copy (along with image) in your user home folder (or other place where you have read/write privilege) and compile it there. On some operating systems, you cannot compile the original in its <i>extras</i> folder.</p> - -<p>File <i>novel-cover-template.tex</i> may be used for creating a cover, once you have a CMYK image. If you wish to compile it, place a copy in your user home folder (or other place where you have read/write privilege) and compile it there. On some operating systems, you cannot compile the original in its <i>extras</i> folder.</p> +<p>File <i>novel-testsuite.tex</i> exercises the various capabilities of the document class. You can look at the code, and see how it compiles. You may also change settings, to see what they do. It requires file <i>novel-testimage.png</i>. If you wish to compile it, place a copy (along with image) in your user home folder (or other place where you have read/write privilege) and compile it there.</p> <p>File <i>novel-decoglyphs.pdf</i> shows the decorative characters in the <i>NovelDeco.otf</i> file, along with the codes needed to retrieve them.</p> -<p>File <i>novel-Gallery-ChapterStart.pdf</i> shows a number of different ways to begin a chapter, making use of the ChapterStart environment and related commands.</p> +<p>File <i>novel-Gallery-ChapterStart.pdf</i> shows a number of different ways to begin a chapter, making use of the ChapterStart environment and related commands. These are only suggestions.</p> <p>File <i>CPmodified.otf</i> is not (normally) for use in TeX. I use it when editing my work in a word processor, prior to TeX markup. To use it, install the font in your operating system (not in TeX) where a word processor can find it. This font is nearly-monospaced, with exaggerated punctuation marks. I have found that punctuation errors are most frequently overlooked during editing, since they are so small in many fonts, and the spell-check software doesn't find the errors.</p> -<div style="margin:16px; padding:16px; border:1px solid #000000;"> -<h3>Included icc color profiles:</h3> -<p>Note that the ink limit file, mentioned in <i>novel</i> documentation, cannot be included here, as the license does not allow bundling with other software (such as the <i>novel</i> document class). You have to go get it yourself. Links provided in the documentation.</p> -<p>File <i>srgb.icc</i> is a re-named copy of file <a href="https://github.com/ellelstone/elles_icc_profiles/blob/master/profiles/sRGB-elle-V2-srgbtrc.icc">sRGB-elle-V2-srgbtrc.icc</a> by Elle Stone.</p> -<p>File <i>crgb.icc</i> is a re-named copy of file <a href="https://github.com/ellelstone/elles_icc_profiles/blob/master/profiles/ClayRGB-elle-V2-srgbtrc.icc">ClayRGB-elle-V2-srgbtrc.icc</a> by Elle Stone.</p> -<p><b>License granted by Elle Stone:</b></p> -<p>The ICC profiles that are included with the profile-making code are released under the Creative Commons Attribution-Share-Alike Unported license, version 3.0 <a href="https://creativecommons.org/licenses/by-sa/3.0/legalcode">https://creativecommons.org/licenses/by-sa/3.0/legalcode</a>.</p> -</div> - - - +<div> +<h3>novel-scripts.zip</h3> +<p>This zip archive contains Windows batch scripts, and Linux BASH scripts, for automatic image conversion. Since the BASH scripts do not require version 4, they should also work on OSX (not tested).</p> +<p>The scripts are meant to ensure that your use of images complies with commercial printing standards. In particular, they provide a method for converting color cover artwork to CMYK at 240% ink limit, in a PDF/X-1a:2001 file.</p> +<p>Complete usage instructions are documented within the zip archive.</p> +</div> diff --git a/Master/texmf-dist/doc/lualatex/novel/extras/novel-scripts.zip b/Master/texmf-dist/doc/lualatex/novel/extras/novel-scripts.zip Binary files differnew file mode 100644 index 00000000000..4d68c055258 --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/extras/novel-scripts.zip diff --git a/Master/texmf-dist/doc/lualatex/novel/extras/novel-testsuite.tex b/Master/texmf-dist/doc/lualatex/novel/extras/novel-testsuite.tex index c31bd467d8c..6c3fdb36f9b 100644 --- a/Master/texmf-dist/doc/lualatex/novel/extras/novel-testsuite.tex +++ b/Master/texmf-dist/doc/lualatex/novel/extras/novel-testsuite.tex @@ -21,7 +21,7 @@ % It is grayscale png, 150x150 pixels, with resolution 300pdi. % % The `test' class option is required. You may add others. -\documentclass[test]{novel} % v. 1.46.2. +\documentclass[test]{novel} % v. 1.50. \SetTitle{Test Suite} \SetSubtitle{Novel Document Class} \SetAuthor{Author Name} @@ -88,29 +88,20 @@ If you change the font size or number of lines per page, then the tilted phrase % NEXT PAGE: -This page tests \string\BlockImage\space effects. Remember that \textit{novel} uses its own methods of placing images. +This page tests \string\FloatImage\space effects. Remember that \textit{novel} uses its own methods of placing images. -\BlockImage[r]{novel-testimage.png}[\pushtextdown{\nbs}Text accompanying image. This text appears to the left of the image. One line above this text was skipped.\par] +There will be a gap before the image appears. In the tex code, find \string\vspace\space there, and change the space. At some point, the image will float to the top of the following page. -Above, the top of the image sits where the baseline of text would be. The current paragraph comfortably clears the bottom of the image. +\vspace{7\nbs} -\null - -In the following example, the accompanying text fills all available lines. This is \textit{not} the same as float/caption in other classes! +\FloatImage[ht]{novel-testimage.png} -\BlockImage[r]{novel-testimage.png}[Text accompanying image. The fact that this text fills the available area is not automated.\par I first compiled with some random amount of text, then adjusted it so that it filled.\par] +Above, the top of the image sits where the baseline of text would be. If the image fits where placed, then this paragraph comfortably clears the bottom of the image. If the gap is increased so that the image flats to the top of the next page, then this paragraph will be directly beneath the preceding paragraph. -If you change the font size or lines per page, then the accompanying text, above, probably won't fill its space. Or, it may overflow, and mingle with this paragraph. So, this is not a technique with wide applicability. - -\null -Below, the image is centered: - -\BlockImage[c]{novel-testimage.png}[\pushtextdown{\nbs}This text overlies the image.\par] \clearpage - % NEXT PAGE: This page tests \string\InlineImage\space effects. Note that the command also has a starred version. The difference: Unstarred, the width of the image is taken into account. Starred, the width of the image is ignored. @@ -136,6 +127,16 @@ In all of the above, the alignments will change, if you change the text size or % NEXT PAGE: +This page tests \string\WrapImage. The command is written following the paragraph you are now reading. + +\WrapImage[r]{novel-testimage.png} + +The image will appear at right, with this text flowing around it. the first few lines will be at the left of the image. Then, as the paragraph continues, it eventually is restored to full text width, once it gets pas the bottom of the image. Note that the top of the image is aligned to the X-height of the first line of text. + +\clearpage + +% NEXT PAGE: + This page tests the footnote and endnote capabilities.\footnote{This is the first sample footnote. Unless you change the marker style, it will be marked with an asterisk.} Two footnotes have been placed.\footnote{This is the second footnote. Unless you change the marker style, it will be marked by a dagger.} \scenebreak @@ -260,7 +261,6 @@ First, add \lnum{\string\SetPDFX[CGATSTR001]\{X-1a:2001\}} to the Preamble. Then Note that if you use an image other then the included \textit{novel-testimage.png}, then your own image must be prepared according to the specification in \textit{novel} documentation. Otherwise, an incorrectly prepared image will cause PDF/X compliance to fail. -\cleartoend % ensures final page is blank verso \end{document} diff --git a/Master/texmf-dist/doc/lualatex/novel/extras/srgb.icc b/Master/texmf-dist/doc/lualatex/novel/extras/srgb.icc Binary files differdeleted file mode 100644 index a8f1c645af2..00000000000 --- a/Master/texmf-dist/doc/lualatex/novel/extras/srgb.icc +++ /dev/null diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/I-shade.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/I-shade.png Binary files differnew file mode 100644 index 00000000000..b22694e83f7 --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/I-shade.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/Iboxcap.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/Iboxcap.png Binary files differnew file mode 100644 index 00000000000..f23548fe79b --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/Iboxcap.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/alphabetagamma.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/alphabetagamma.png Binary files differnew file mode 100644 index 00000000000..da3750d6183 --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/alphabetagamma.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/bixby-compare.jpg b/Master/texmf-dist/doc/lualatex/novel/html-resources/bixby-compare.jpg Binary files differdeleted file mode 100644 index 5e947b3c7bf..00000000000 --- a/Master/texmf-dist/doc/lualatex/novel/html-resources/bixby-compare.jpg +++ /dev/null diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/bixby-original.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/bixby-original.png Binary files differnew file mode 100644 index 00000000000..60b88ab0198 --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/bixby-original.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/bixby-softproof.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/bixby-softproof.png Binary files differnew file mode 100644 index 00000000000..e30c22804c9 --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/bixby-softproof.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/colormap-brown.jpg b/Master/texmf-dist/doc/lualatex/novel/html-resources/colormap-brown.jpg Binary files differdeleted file mode 100644 index a11678047da..00000000000 --- a/Master/texmf-dist/doc/lualatex/novel/html-resources/colormap-brown.jpg +++ /dev/null diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/colormax-original.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/colormax-original.png Binary files differnew file mode 100644 index 00000000000..f7ba4e22da6 --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/colormax-original.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/colormax-softproof.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/colormax-softproof.png Binary files differnew file mode 100644 index 00000000000..cd0072ecd5a --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/colormax-softproof.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/colorsampler-softproof.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/colorsampler-softproof.png Binary files differnew file mode 100644 index 00000000000..ecc217db4c9 --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/colorsampler-softproof.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/colorsampler.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/colorsampler.png Binary files differnew file mode 100644 index 00000000000..bc1850a71d7 --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/colorsampler.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/cropmarkgap.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/cropmarkgap.png Binary files differdeleted file mode 100644 index 2f3768a0473..00000000000 --- a/Master/texmf-dist/doc/lualatex/novel/html-resources/cropmarkgap.png +++ /dev/null diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/cropmarks.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/cropmarks.png Binary files differindex cf2ddd5a3d7..56bb38f4c04 100644 --- a/Master/texmf-dist/doc/lualatex/novel/html-resources/cropmarks.png +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/cropmarks.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/doordie.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/doordie.png Binary files differindex b21515ad219..7d2682b3acd 100644 --- a/Master/texmf-dist/doc/lualatex/novel/html-resources/doordie.png +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/doordie.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/dropcap-antestar.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/dropcap-antestar.png Binary files differnew file mode 100644 index 00000000000..8032e77c392 --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/dropcap-antestar.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/dropcap-gap.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/dropcap-gap.png Binary files differnew file mode 100644 index 00000000000..f224662d6cb --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/dropcap-gap.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/dropcap-scalebloat.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/dropcap-scalebloat.png Binary files differnew file mode 100644 index 00000000000..10642ee2123 --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/dropcap-scalebloat.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/dropcap.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/dropcap.png Binary files differnew file mode 100644 index 00000000000..19343ec8238 --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/dropcap.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/font-tree.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/font-tree.png Binary files differindex 34205f3aae7..8dfd2601976 100644 --- a/Master/texmf-dist/doc/lualatex/novel/html-resources/font-tree.png +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/font-tree.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/footjump2.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/footjump2.png Binary files differdeleted file mode 100644 index 6a1c92104f3..00000000000 --- a/Master/texmf-dist/doc/lualatex/novel/html-resources/footjump2.png +++ /dev/null diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/head-foot-jumps.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/head-foot-jumps.png Binary files differnew file mode 100644 index 00000000000..d7f3495735f --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/head-foot-jumps.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/headfoot5.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/headfoot5.png Binary files differindex 4eb1f39ff8b..c8ddd6f1bcb 100644 --- a/Master/texmf-dist/doc/lualatex/novel/html-resources/headfoot5.png +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/headfoot5.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/headjump1.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/headjump1.png Binary files differdeleted file mode 100644 index d152fe68960..00000000000 --- a/Master/texmf-dist/doc/lualatex/novel/html-resources/headjump1.png +++ /dev/null diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/jackbequick.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/jackbequick.png Binary files differnew file mode 100644 index 00000000000..5a63e4d37e4 --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/jackbequick.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/jump-change.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/jump-change.png Binary files differnew file mode 100644 index 00000000000..e9bf5a1b72e --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/jump-change.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/medieval-painting.jpg b/Master/texmf-dist/doc/lualatex/novel/html-resources/medieval-painting.jpg Binary files differdeleted file mode 100644 index f8686c62231..00000000000 --- a/Master/texmf-dist/doc/lualatex/novel/html-resources/medieval-painting.jpg +++ /dev/null diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/monitorgamut.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/monitorgamut.png Binary files differnew file mode 100644 index 00000000000..0bbabd4a942 --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/monitorgamut.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/no-brainer.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/no-brainer.png Binary files differnew file mode 100644 index 00000000000..7bf7f96468f --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/no-brainer.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/novel-color-sampler.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/novel-color-sampler.png Binary files differnew file mode 100644 index 00000000000..259d4e1ed7b --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/novel-color-sampler.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/parascale.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/parascale.png Binary files differnew file mode 100644 index 00000000000..53252307e3c --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/parascale.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/printgamut.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/printgamut.png Binary files differnew file mode 100644 index 00000000000..3b14f073653 --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/printgamut.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/raffaelino-original.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/raffaelino-original.png Binary files differnew file mode 100644 index 00000000000..4767d1290fd --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/raffaelino-original.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/raffaelino-softproof.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/raffaelino-softproof.png Binary files differnew file mode 100644 index 00000000000..b542d6097cd --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/raffaelino-softproof.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/shademargins.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/shademargins.png Binary files differindex 018133b7b4d..a0b48f41c13 100644 --- a/Master/texmf-dist/doc/lualatex/novel/html-resources/shademargins.png +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/shademargins.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/skygrad.jpg b/Master/texmf-dist/doc/lualatex/novel/html-resources/skygrad.jpg Binary files differnew file mode 100644 index 00000000000..14cc5b7014f --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/skygrad.jpg diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/topmargins.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/topmargins.png Binary files differnew file mode 100644 index 00000000000..7f4ecfc34bd --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/topmargins.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/trimsize.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/trimsize.png Binary files differnew file mode 100644 index 00000000000..b21a18b026f --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/trimsize.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/unsafe-vs-margin.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/unsafe-vs-margin.png Binary files differnew file mode 100644 index 00000000000..1b70d3c3506 --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/unsafe-vs-margin.png diff --git a/Master/texmf-dist/doc/lualatex/novel/html-resources/wrapme.png b/Master/texmf-dist/doc/lualatex/novel/html-resources/wrapme.png Binary files differnew file mode 100644 index 00000000000..b2f433cefbc --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/novel/html-resources/wrapme.png diff --git a/Master/texmf-dist/doc/lualatex/novel/novel-documentation.html b/Master/texmf-dist/doc/lualatex/novel/novel-documentation.html index 495e11a50c9..cc855a37baf 100644 --- a/Master/texmf-dist/doc/lualatex/novel/novel-documentation.html +++ b/Master/texmf-dist/doc/lualatex/novel/novel-documentation.html @@ -4,7 +4,7 @@ <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <title>Document class "novel" - documentation</title> -<style type="text/css"> +<style> body {font-family:sans-serif; line-height:150%; font-size:14pt; color:#000000; background:#ffffff none;} p {font-family:sans-serif,sans-serif; font-size:1em; margin:0px 16px 0px 16px; text-indent:16px;} ol, ul {list-style-type:none; margin:0px; padding:0px;} @@ -23,14 +23,14 @@ img.nodisplaynav {display:none; height:1em;} img.openclose {display:none; height:1em;} *.noimg {padding-left:1.5em;} div.d1 {margin:0px 16px 16px 16px;} -div.d2 {margin:0px 0px 16px 16px; padding-bottom:0.5em; border-top:0; border-right: 0px; border-bottom:1px dotted #666666; border-left:1px dotted #666666;} -div.d3 {margin:0px 0px 16px 16px; padding-bottom:0.5em; border-top:0; border-right: 0px; border-bottom:1px dotted #666666; border-left:1px dotted #666666;} -div.d4 {margin:0px 0px 16px 16px; padding-bottom:0.5em; border-top:0; border-right: 0px; border-bottom:1px dotted #666666; border-left:1px dotted #666666;} -div.d5 {margin:0px 0px 16px 16px; padding-bottom:0.5em; border-top:0; border-right: 0px; border-bottom:1px dotted #666666; border-left:1px dotted #666666;} -div.d6 {margin:0px 0px 16px 16px; padding-bottom:0.5em; border-top:0; border-right: 0px; border-bottom:1px dotted #666666; border-left:1px dotted #666666;} +div.d2 {margin:0px 0px 16px 16px; padding-bottom:1em; border-top:0; border-right: 0px; border-bottom:1px dotted #666666; border-left:1px dotted #666666;} +div.d3 {margin:0px 0px 16px 16px; padding-bottom:1em; border-top:0; border-right: 0px; border-bottom:1px dotted #666666; border-left:1px dotted #666666;} +div.d4 {margin:0px 0px 16px 16px; padding-bottom:1em; border-top:0; border-right: 0px; border-bottom:1px dotted #666666; border-left:1px dotted #666666;} +div.d5 {margin:0px 0px 16px 16px; padding-bottom:1em; border-top:0; border-right: 0px; border-bottom:1px dotted #666666; border-left:1px dotted #666666;} +div.d6 {margin:0px 0px 16px 16px; padding-bottom:1em; border-top:0; border-right: 0px; border-bottom:1px dotted #666666; border-left:1px dotted #666666;} div.page {padding:16px 0px 16px 0px; border-top:4px solid #505050;} div.codeblock {overflow:auto; margin:16px; padding: 8px; border: 1px solid #000000;} -code {font-family:monospace,monospace; color:#200050; background:transparent none; padding:0px 3px 0px 3px;} +code {font-size:1em; font-family:monospace,monospace; color:#200050; background:transparent none; padding:0px 3px 0px 3px;} *.smaller {font-weight:normal; font-size:88%;} *.noindent {text-indent:0px;} *.noindent1 {text-indent:0px; margin-top:8px;} @@ -52,6 +52,7 @@ span.ap {color: #996633;} /* percent comment in code */ *.n {display:none; border:1px solid #990000; font-family:monospace,monospace; font-size:0.92em; font-weight:bold; padding: 0 0.3em 0 0.3em; color:#990000; background: #ffdddd none; margin-right:0.5em;} p.centerimg {text-indent:0px; text-align:center; margin-top:0.5em; margin-bottom:0.5em;} p.code {text-indent:0px; margin: 4px 16px 4px 16px; padding-left:32px;} +p.item {text-indent:0px; padding-top:8px;} b em {font-weight:normal;} hr.newpage {margin-top:2em; margin-bottom:2em; height:4px; color:#505050; background:#505050;} p.overhang {margin-left:32px; text-indent:-16px;} @@ -67,7 +68,7 @@ div.codeblock p {text-indent:0px;} *.screennoscript {display:none;} </style> -<style id="screenstyle" type="text/css"> +<style id="screenstyle"> @media screen { body {color:#203310; background:#cccccc none;} #toc {display:block; font-size:14pt; width:30%; background:#ffffff none; position:fixed; overflow:scroll; height:98%;} @@ -78,13 +79,13 @@ div.codeblock p {text-indent:0px;} *.toptitle {display:none;} } </style> -<script type="text/javascript">var doprint=false;</script> +<script>var doprint=false;</script> <!-- Trouble Printing? Remove the following line, and another one below: --> <!-- REMOVE ME -<style type="text/css"> +<style> body {color:#000000; background:#ffffff none;} #toc {display:block; font-size:1em; width:auto; background:#ffffff none; position:static; overflow:auto; height:auto;} #toc li ul li {display:none;} @@ -94,13 +95,13 @@ div.codeblock p {text-indent:0px;} *.toptitle {display:block;} *.notprinted {display:none;} </style> -<script type="text/javascript">doprint=true;</script> +<script>doprint=true;</script> REMOVE ME TOO --> <!-- Also remove the above line, if trouble printing. Then load with JavaScript off. --> -<script type="text/javascript"> +<script> if(!doprint) {window.onload = loadnav;} function loadnav() { nspans = document.getElementsByClassName("n"); @@ -161,48 +162,47 @@ function closeall() { <ul><!-- master toc ul --> - <li id="l1"><span class="n"></span><a href="#h1"><b>1. Overview</b></a> + <li id="l0"><a href="#h0"><b>“Novel” Document Class</b></a></li> + + <li id="l1"><span class="n"></span><a href="#h1"><b>1. Before You Begin</b></a> <ul id="u1"> - <li id="l1.1"><span class="n"></span><a href="#h1.1">1.1 Description</a> + <li id="l1.1"><span class="n"></span><a href="#h1.1">1.1 Do These Things</a> <ul id="u1.1"> - <li><a href="#h1.1.1">1.1.1 Installation</a></li> - <li><a href="#h1.1.2">1.1.2 Licensing</a></li> - <li><a href="#h1.1.3">1.1.3 Credits</a></li> - <li><a href="#h1.1.4">1.1.4 Success Story</a></li> + <li><a href="#h1.1.1">1.1.1 LuaLateX Compiler</a></li> + <li><a href="#h1.1.2">1.1.2 UTF-8 Encoding</a></li> + <li><a href="#h1.1.3">1.1.3 Polyglossia</a></li> + <li><a href="#h1.1.4">1.1.4 Open Type Fonts</a></li> + <li><a href="#h1.1.5">1.1.5 Book Design</a></li> </ul> </li><!-- end 1.1 --> - <li id="l1.2"><span class="n"></span><a href="#h1.2">1.2 Important Behavior</a> + <li id="l1.2"><span class="n"></span><a href="#h1.2">1.2 Avoid These Things</a> <ul id="u1.2"> - <li><a href="#h1.2.1">1.2.1 Always UTF-8, No fontenc</a> - <ul id="u1.2.1"> - <li><a href="#h1.2.1.1">1.2.1.1 Polyglossia Languages</a></li> - </ul> - </li> - <li><a href="#h1.2.2">1.2.2 Fonts Not Loaded by \usepackage or \RequirePackage</a></li> - <li><a href="#h1.2.3">1.2.3 LuaLaTeX, Open Type Fonts</a></li> - <li><a href="#h1.2.4">1.2.4 Standard TeX Size Commands Disabled</a></li> - <li><a href="#h1.2.5">1.2.5 Academic Style Commands Disabled</a></li> - <li><a href="#h1.2.6">1.2.6 Raster png/jpg Images Only</a></li> - <li><a href="#h1.2.7">1.2.7 Beware of Special Characters</a></li> - <li><a href="#h1.2.8">1.2.8 Avoid TeX Editors, IDEs</a></li> - <li><a href="#h1.2.9">1.2.9 Write Using Word Processor</a></li> - <li><a href="#h1.2.10">1.2.10 Think for Yourself</a></li> + <li><a href="#h1.2.1">1.2.1 Non-Fontspec Font Loader</a></li> + <li><a href="#h1.2.2">1.2.2 TeX Font Sizes</a></li> + <li><a href="#h1.2.3">1.2.3 Academic Structures</a></li> + <li><a href="#h1.2.4">1.2.4 TeX Editors and IDEs</a></li> </ul> </li><!-- end 1.2 --> + <li id="l1.3"><span class="n"></span><a href="#h1.3">1.3 Beware of These Things</a> + <ul id="u1.3"> + <li><a href="#h1.3.1">1.3.1 TeX Special Characters</a></li> + <li><a href="#h1.3.2">1.3.2 Layout Surprises</a></li> + </ul> + </li><!-- end 1.3 --> </ul> </li><!-- end 1 --> <li id="l2"><span class="n"></span><a href="#h2"><b>2. Document Class Options</b></a> <ul id="u2"> <li><a href="#h2.1">2.1 draft</a></li> - <li><a href="#h2.2">2.2 graytext</a></li> + <li><a href="#h2.2">2.2 sandbox</a></li> <li><a href="#h2.3">2.3 shademargins</a></li> <li><a href="#h2.4">2.4 cropmarks</a></li> <li><a href="#h2.5">2.5 cropview</a></li> <li><a href="#h2.6">2.6 closecrop</a></li> <li><a href="#h2.7">2.7 xml</a></li> <li><a href="#h2.8">2.8 coverart</a></li> - <li><a href="#h2.9">2.9 unblock (dev)</a></li> + <li><a href="#h2.9">2.9 developer options</a></li> </ul> </li><!-- end 2 --> @@ -248,9 +248,8 @@ function closeall() { <ul id="u4"> <li id="l4.1"><span class="n"></span><a href="#h4.1">4.1 Book Dimensions</a> <ul id="u4.1"> - <li><a href="#h4.1.1">4.1.1 Trim Size</a></li> - <li><a href="#h4.1.2">4.1.2 Media Size, TrimBox</a></li> - <li><a href="#h4.1.3">4.1.3 Advanced: Cropmark Gap</a></li> + <li><a href="#h4.1.1">4.1.1 Trim Size, TrimBox</a></li> + <li><a href="#h4.1.2">4.1.2 Media Size, MediaBox</a></li> </ul> </li><!-- end 4.1 --> <li id="l4.2"><span class="n"></span><a href="#h4.2">4.2 Fonts, Normal Font Size</a> @@ -272,6 +271,7 @@ function closeall() { <li><a href="#h4.3.1">4.3.1 Margins</a> <ul id="u4.3.1"> <li><a href="#h4.3.1.1">4.3.1.1 Gutter? Which?</a></li> + <li><a href="#h4.3.1.2">4.3.1.2 Unsafe Zone</a></li> </ul> </li> <li><a href="#h4.3.2">4.3.2 Lines Per Page</a></li> @@ -368,11 +368,11 @@ function closeall() { <li><a href="#h6.2.1">6.2.1 Italics and Emphasis</a></li> <li><a href="#h6.2.2">6.2.2 Bold and Semibold</a></li> <li><a href="#h6.2.3">6.2.3 Underlining</a></li> - <li><a href="#h6.2.4">6.2.4 Small Caps, Acronyms</a></li> + <li><a href="#h6.2.4">6.2.4 Small Caps, Midcase</a></li> <li><a href="#h6.2.5">6.2.5 Local Tracking</a></li> <li><a href="#h6.2.6">6.2.6 Local Font Selection</a></li> <li><a href="#h6.2.7">6.2.7 Local Font Features</a></li> - <li><a href="#h6.2.8">6.2.8 Text Color (grayscale)</a></li> + <li><a href="#h6.2.8">6.2.8 Grayscale Text</a></li> </ul> </li><!-- end 6.2 --> <li id="l6.3"><span class="n"></span><a href="#h6.3">6.3 Positioning and Alignment</a> @@ -401,106 +401,26 @@ function closeall() { </ul> </li><!-- end 6 --> - <li id="l7"><span class="n"></span><a href="#h7"><b>7. Interior Images, Cover Artwork</b></a> + <li id="l7"><span class="n"></span><a href="#h7"><b>7. Images</b></a> <ul id="u7"> - <li id="l7.1"><span class="n"></span><a href="#h7.1">7.1 Raster Images Only</a> + <li id="l7.1"><span class="n"></span><a href="#h7.1">7.1 Technical Requirements</a> <ul id="u7.1"> - <li><a href="#h7.1.1">7.1.1 Use PNG or JPG</a></li> - <li><a href="#h7.1.2">7.1.2 Saving the Resolution</a></li> - <li><a href="#h7.1.3">7.1.3 Removing Private Metadata</a></li> + <li><a href="#h7.1.1">7.1.1 Interior B/W, Grayscale</a></li> + <li><a href="#h7.1.2">7.1.2 Color Cover</a></li> </ul> </li><!-- end 7.1 --> - <li id="l7.2"><span class="n"></span><a href="#h7.2">7.2 Interior Image Workflow</a> + <li id="l7.2"><span class="n"></span><a href="#h7.2">7.2 Placing Interior Images</a> <ul id="u7.2"> - <li><a href="#h7.2.1">7.2.1 Line Art in GIMP</a></li> - <li><a href="#h7.2.2">7.2.2 Grayscale in GIMP</a></li> + <li><a href="#h7.2.1">7.2.1 Image-Like Text</a></li> + <li><a href="#h7.2.2">7.2.2 \InlineImage</a></li> + <li><a href="#h7.2.3">7.2.3 Text Over \InlineImage</a></li> + <li><a href="#h7.2.4">7.2.4 \FloatImage</a></li> + <li><a href="#h7.2.5">7.2.5 \WrapImage</a></li> </ul> </li><!-- end 7.2 --> - <li id="l7.3"><span class="n"></span><a href="#h7.3">7.3 Placing Images</a> - <ul id="u7.3"> - <li><a href="#h7.3.1">7.3.1 \charscale Text</a></li> - <li><a href="#h7.3.2">7.3.2 \InlineImage</a></li> - <li><a href="#h7.3.3">7.3.3 Text Over \InlineImage</a></li> - <li><a href="#h7.3.4">7.3.4 \BlockImage</a></li> - <li><a href="#h7.3.5">7.3.5 \BlockImage With Text</a></li> - </ul> - </li><!-- end 7.3 --> - <li id="l7.4"><span class="n"></span><a href="#h7.4">7.4. Color Cover Artwork</a> - <ul id="u7.4"> - <li id="l7.4.1"><a href="#h7.4.1">7.4.1 Begin with PNG</a></li> - <li id="l7.4.2"><a href="#h7.4.2">7.4.2 Get Some Software</a></li> - <li id="l7.4.3"><a href="#h7.4.3">7.4.3 CMYK at Ink Limit</a></li> - <li id="l7.4.4"><a href="#h7.4.4">7.4.4 Convert to PDF/X</a></li> - <li id="l7.4.5"><a href="#h7.4.5">7.4.5 Final Check</a></li> - </ul> - </li><!-- end 7.4 --> </ul> </li><!-- end 7 --> - <li id="l8"><span class="n"></span><a href="#h8"><b>8. Book Design</b></a> - <ul id="u8"> - <li id="l8.1"><span class="n"></span><a href="#h8.1">8.1 Terminology</a> - <ul id="u8.1"> - <li><a href="#h8.1.1">8.1.1 Sheet, Page, Leaf</a></li> - <li><a href="#h8.1.2">8.1.2 Folio, Spine</a></li> - <li><a href="#h8.1.3">8.1.3 Signature, Imposition</a></li> - </ul> - </li><!-- end 8.1 --> - <li id="l8.2"><span class="n"></span><a href="#h8.2">8.2 Book Manufacture</a> - <ul id="u8.2"> - <li><a href="#h8.2.1">8.2.1 Perfect Binding</a></li> - <li><a href="#h8.2.2">8.2.2 Library Binding</a></li> - <li><a href="#h8.2.3">8.2.3 Other Bindings</a></li> - <li><a href="#h8.2.4">8.2.4 Paper, Cover Materials</a></li> - </ul> - </li><!-- end 8.2 --> - <li id="l8.3"><span class="n"></span><a href="#h8.3">8.3 Interior Structure</a> - <ul id="u8.3"> - <li id="l8.3.1"><span class="n"></span><a href="#h8.3.1">8.3.1 Display, Chapter-Like</a> - <ul id="u8.3.1"> - <li><a href="#h8.3.1.1">8.3.1.1 Display Pages</a></li> - <li><a href="#h8.3.1.2">8.3.1.2 Chapter-Like Sections</a></li> - </ul> - </li> - <li id="l8.3.2"><span class="n"></span><a href="#h8.3.2">8.3.2 Front Matter</a> - <ul id="u8.3.2"> - <li><a href="#h8.3.2.1">8.3.2.1 Half-Title, i</a></li> - <li><a href="#h8.3.2.2">8.3.2.2 Blank, ii</a></li> - <li><a href="#h8.3.2.3">8.3.2.3 Title Page, iii</a></li> - <li><a href="#h8.3.2.4">8.3.2.4 Copyright Page, iv</a></li> - <li><a href="#h8.3.2.5">8.3.2.5 Dedication</a></li> - <li><a href="#h8.3.2.6">8.3.2.6 Epigraph</a></li> - <li><a href="#h8.3.2.7">8.3.2.7 Table of Contents</a></li> - <li><a href="#h8.3.2.8">8.3.2.8 Foreword, Preface, Intro</a></li> - <li><a href="#h8.3.2.9">8.3.2.9 Acknowledgements</a></li> - <li><a href="#h8.3.2.10">8.3.2.10 Author's Note</a></li> - <li><a href="#h8.3.2.11">8.3.2.11 Map</a></li> - <li><a href="#h8.3.2.12">8.3.2.12 Second Half-Title</a></li> - <li><a href="#h8.3.2.13">8.3.2.13 End of Front Matter</a></li> - </ul> - </li> - <li id="l8.3.3"><span class="n"></span><a href="#h8.3.3">8.3.3 Main Matter</a> - <ul id="u8.3.3"> - <li><a href="#h8.3.3.1">8.3.3.1 Half-Title in Main</a></li> - <li><a href="#h8.3.3.2">8.3.3.2 Part Separator</a></li> - <li><a href="#h8.3.3.3">8.3.3.3 Introduction</a></li> - <li><a href="#h8.3.3.4">8.3.3.4 Prologue</a></li> - <li><a href="#h8.3.3.5">8.3.3.5 Chapters</a></li> - <li><a href="#h8.3.3.6">8.3.3.6 Epilogue, Conclusion</a></li> - <li><a href="#h8.3.3.7">8.3.3.7 End Notes, Appendix</a></li> - </ul> - </li> - <li id="l8.3.4"><span class="n"></span><a href="#h8.3.4">8.3.4 At Very End</a> - <ul id="u8.3.4"> - <li><a href="#h8.3.4.1">8.3.4.1 Back Matter? Not!</a></li> - <li><a href="#h8.3.4.2">8.3.4.2 About the Author</a></li> - </ul> - </li> - </ul> - </li><!-- end 8.3 --> - </ul> - </li><!-- end 8 --> - <li><i>Appendices:</i></li> <li id="lA"><span class="n" style="visibility:hidden"></span><a href="#hA"><b>A. Sample Document</b></a> @@ -521,11 +441,67 @@ function closeall() { </ul> </li><!-- end C --> - <li id="lD"><span class="n"></span><a href="#hD"><b>D. 240% Ink Limit</b></a> + <li id="lD"><span class="n"></span><a href="#hD"><b>D. Book Design</b></a> <ul id="uD"> - <li><a href="#hD.1">D.1 Bright Colors Preserved</a></li> - <li><a href="#hD.2">D.2 Natural Light Preserved</a></li> - <li><a href="#hD.3">D.3 Dark, Rich Colors Lost</a></li> + <li id="lD.1"><span class="n"></span><a href="#hD.1">D.1 Terminology</a> + <ul id="uD.1"> + <li><a href="#hD.1.1">D.1.1 Sheet, Page, Leaf</a></li> + <li><a href="#hD.1.2">D.1.2 Folio, Spine</a></li> + <li><a href="#hD.1.3">D.1.3 Signature, Imposition</a></li> + </ul> + </li><!-- end D.1 --> + <li id="lD.2"><span class="n"></span><a href="#hD.2">D.2 Book Manufacture</a> + <ul id="uD.2"> + <li><a href="#hD.2.1">D.2.1 Perfect Binding</a></li> + <li><a href="#hD.2.2">D.2.2 Library Binding</a></li> + <li><a href="#hD.2.3">D.2.3 Other Bindings</a></li> + <li><a href="#hD.2.4">D.2.4 Paper, Cover Materials</a></li> + </ul> + </li><!-- end D.2 --> + <li id="lD.3"><span class="n"></span><a href="#hD.3">D.3 Interior Structure</a> + <ul id="uD.3"> + <li id="lD.3.1"><span class="n"></span><a href="#hD.3.1">D.3.1 Display, Chapter-Like</a> + <ul id="uD.3.1"> + <li><a href="#hD.3.1.1">D.3.1.1 Display Pages</a></li> + <li><a href="#hD.3.1.2">D.3.1.2 Chapter-Like Sections</a></li> + </ul> + </li> + <li id="lD.3.2"><span class="n"></span><a href="#hD.3.2">D.3.2 Front Matter</a> + <ul id="uD.3.2"> + <li><a href="#hD.3.2.1">D.3.2.1 Half-Title, i</a></li> + <li><a href="#hD.3.2.2">D.3.2.2 Blank, ii</a></li> + <li><a href="#hD.3.2.3">D.3.2.3 Title Page, iii</a></li> + <li><a href="#hD.3.2.4">D.3.2.4 Copyright Page, iv</a></li> + <li><a href="#hD.3.2.5">D.3.2.5 Dedication</a></li> + <li><a href="#hD.3.2.6">D.3.2.6 Epigraph</a></li> + <li><a href="#hD.3.2.7">D.3.2.7 Table of Contents</a></li> + <li><a href="#hD.3.2.8">D.3.2.8 Foreword, Preface, Intro</a></li> + <li><a href="#hD.3.2.9">D.3.2.9 Acknowledgements</a></li> + <li><a href="#hD.3.2.10">D.3.2.10 Author's Note</a></li> + <li><a href="#hD.3.2.11">D.3.2.11 Map</a></li> + <li><a href="#hD.3.2.12">D.3.2.12 Second Half-Title</a></li> + <li><a href="#hD.3.2.13">D.3.2.13 End of Front Matter</a></li> + </ul> + </li> + <li id="lD.3.3"><span class="n"></span><a href="#hD.3.3">D.3.3 Main Matter</a> + <ul id="uD.3.3"> + <li><a href="#hD.3.3.1">D.3.3.1 Half-Title in Main</a></li> + <li><a href="#hD.3.3.2">D.3.3.2 Part Separator</a></li> + <li><a href="#hD.3.3.3">D.3.3.3 Introduction</a></li> + <li><a href="#hD.3.3.4">D.3.3.4 Prologue</a></li> + <li><a href="#hD.3.3.5">D.3.3.5 Chapters</a></li> + <li><a href="#hD.3.3.6">D.3.3.6 Epilogue, Conclusion</a></li> + <li><a href="#hD.3.3.7">D.3.3.7 End Notes, Appendix</a></li> + </ul> + </li> + <li id="lD.3.4"><span class="n"></span><a href="#hD.3.4">D.3.4 At the End</a> + <ul id="uD.3.4"> + <li><a href="#hD.3.4.1">D.3.4.1 Back Matter? Not!</a></li> + <li><a href="#hD.3.4.2">D.3.4.2 About the Author</a></li> + </ul> + </li> + </ul> + </li><!-- end D.3 --> </ul> </li><!-- end D --> @@ -547,6 +523,21 @@ function closeall() { </ul> </li><!-- end E --> + <li id="lF"><span class="n"></span><a href="#hF"><b>F. Drop Caps</b></a> + <ul id="uF"> + <li><a href="#hF.1">F.1 Built-In vs Lettrine</a></li> + <li><a href="#hF.2">F.2 \dropcap[]{}</a></li> + <li><a href="#hF.3">F.3 \dropcap*[]{}</a></li> + <li><a href="#hF.4">F.4 Drop Cap Font, Color</a></li> + <li><a href="#hF.5">F.5 Drop Cap and First Line</a></li> + </ul> + </li><!-- end F --> + + <li id="lY"><span class="n" style="visibility:hidden"></span><a href="#hY"><b>Y. Licensing and Credits</b></a> + </li><!-- end Y --> + + <li id="lZ"><span class="n" style="visibility:hidden"></span><a href="#hZ"><b>Z. Important Changes</b></a> + </li><!-- end Z --> </ul><!-- end master toc ul --> @@ -560,151 +551,128 @@ function closeall() { <div id="main"> <!-- **************************************************************************************** --> -<h1 id="h0">Document class <i>novel</i> - documentation</h1> -<p class="noindent">Version: 1.46.2, 2018/01/14. <span id="screennoscript" class="screennoscript"><b>For enhanced navigation of this file, turn on JavaScript.</b></span></p> -<div><script type="text/javascript">if(document.getElementById("screennoscript")){document.getElementById("screennoscript").style.display="none";}</script></div> -<p>An example document is <i>novel-example.tex</i>, which can be found in the <i>extras</i> folder within this documentation.</p> -<p class="notprinted"><b>Printing this file:</b> A printed version (PDF or paper) has condensed Table of Contents, and inactive hyperlinks. If your user agent has trouble printing, do this: In a UNIX-compatible plain text editor, edit this file. About 83 lines from the top you will see a block of style that is commented out. Remove the comments so that the block is effective. Load the edited HTML file with JavaScript turned off.</p> -<p class="notprinted">Some user agents have difficulty previewing this HTML file for print, or printing it. If you wish to print (to PDF or paper) then try this: Copy the HTML file, and name the copy <i style="white-space:nowrap">novel-documentation-print.html</i>. That might (or might not) help. In any case, the printable format of this file has an abbreviated list of contents at the top, not as a sidebar.</p> -<p> </p> +<h1 id="h0" style="padding-top:16px">Document class <i>novel</i> - documentation. <span style="font-size:75%">V. 1.50, 2018/03/28</span></h1> +<p class="noindent"><span id="screennoscript" class="screennoscript"><b>For enhanced navigation of this file, turn on JavaScript.</b></span></p> +<div><script>if(document.getElementById("screennoscript")){document.getElementById("screennoscript").style.display="none";}</script></div> +<p class="item">ALERT: If you have been using this document class prior to version 1.50, see <a href="#hZ">Appendix Z</a> for important changes.</p> +<!-- ********************************************************************** --> <div id="page01" class="page"> +<p class="noindent">The <i>novel</i> document class is for authors of text-intensive original fiction, such as detective novels, murder mysteries, romance, sci-fi, and collections of short stories. Academic works and graphic novels are excluded.</p> +<p>The resulting PDF uses built-in technology to produce PDF/X compliant files for print-on-demand (P.O.D.) services. There is no capability for E-books, and never will be.</p> +<p>To use <i>novel</i>, you need TeXLive 2016 or later, or recent MikTeX. Open your TeX package manager, and install both <i>novel</i> and <i>libertinus</i>.</p> + -<h2 id="h1">1. Overview</h2> +<h2 id="h1">1. Before You Begin</h2> <div class="d2" id="d1"> +<p class="noindent"><img src="html-resources/doordie.png" class="floatright" width="167" height="171" title="TeX Commandments" alt="TeX Commandments"/>This documentation assumes that you have some familiarity with TeX, but not much expertise.</p> +<p>You usually cannot take an existing document, written with some other class, and just change it to <i>novel</i>. The command set used by <i>novel</i> is very different from that used by others.</p> +<p>Before you wonder why your document doesn't work, you need to understand the differences. All of these are features, not bugs. They are done with the intent of making <i>novel</i> best for its intended purpose. But if you have been in the habit of writing academic papers, the differences may surprise you.</p> -<h3 id="h1.1">1.1. Description</h3> + +<h3 id="h1.1">1.1. Do These Things</h3> <div class="d3" id="d1.1"> -<p class="noindent">The <i>novel</i> document class is intended for writers of original fiction, such as novels and collections of short stories. For this purpose, it provides easy-to-use settings that are pre-configured for the most common book Trim Sizes, according to publishing standards.</p> -<p>The class uses the advanced typographic features of <i>LuaTeX</i>, <i>fontspec</i>, and <i>microtype</i>, and has the built-in capability to produce files compliant with PDF/X. All these capabilities are accessed via simple front-end commands that do the work for you, thereby reducing the learning curve.</p> -<p>You will be using utf-8 encoding throughout, and Open Type fonts (or TrueType). That means built-in support for many languages.</p> -<p>PDF/A and other formats pertaining to digital publication (e-books) are not supported, and never will be. If that is what you need, then this is the wrong document class for you.</p> -<p>Bibliography, Floats, Tables, Math Mode, automatic generation of title page and table of contents... Forget them! Many of the TeX features used for academic work have reduced functionality, or are entirely disabled, in <i>novel</i> class. There is a reason for this. If you need those capabilities, find another document class. There is some support for page-bottom footnotes, but good support for raster (not vector) images.</p> -<p>The class makes typographic choices that are best suited to <em>original</em> fiction, where you can easily resolve problematic typesetting by re-writing your own work. Note that modern commercial publishing is often very tolerant of widows and orphans, so <i>novel</i> makes no effort to control them.</p> -<p>The <i>novel</i> class has a lot of possible settings, and a command structure that differs from other document classes in many ways. So, there is a lot of documentation. But you probably do not have to read most of it.</p> -<p>Before you panic, look at the <i>novel-example.tex</i> demonstration file, in the documentation <i>extras</i> folder. It uses mostly default settings. See how easy that can be?</p> -<p>If you are ready to typeset your great detective novel, or your collection of sci-fi short stories, then <i>novel</i> is for you. And, if you are unfamiliar with the terminology of commercial book publishing, have no fear! This documentation is here to help you.</p> - -<h4 id="h1.1.1">1.1.1. Installation</h4> + +<h4 id="h1.1.1">1.1.1. Use the LuaLaTeX Compiler</h4> <div class="d4" id="d1.1.1"> -<p class="noindent">Your TeX installation must be based on TeXLive 2016 or later (including any recent MiKTeX). If you are on Linux and your distro is something such as Ubuntu 16.04 LTS (Xenial), then the distro version of TeXLive is too old. However, you can still install a more recent version of TeXLive manually, to your home directory, from <a class="external" rel="external" target="new" href="https://www.tug.org/texlive/">tug.org</a>.</p> -<p>The <i>novel</i> package is not (yet) included with default TeX distribution. Once you have TeX working, use its package manager to install <i>novel</i>. The TeX package will be placed in <i>(texroot)/tex/lualatex/novel/</i>, the documentation will be placed in <i>(texroot)/doc/lualatex/novel/</i>, and the included font will be placed in <i>(texroot)/fonts/opentype/novel/</i>.</p> -<p>Fonts from the <i>libertinus</i> package are required, and may be installed via your TeX package manager. Note that a <i>novel</i> document does not request the package, so you will not see an error if the fonts are not installed! Instead, if you have not manually specified which fonts to use, it will automatically look for pre-installed Libertinus fonts (or Linux Libertine O) as defaults.</p> -<p>Since you will be using LuaLaTeX, the font cache will be updated to include the newly-installed fonts, the next time you run this software. However, I recommend that you force a full cache refresh, by locating the <i>luatex-cache</i> directory, and discard its contents. The cache may be anywhere (sadly), so you will have to hunt for it. If you have never used LuaLaTeX before, it may not exist. If there are any updates to the fonts, then a manual cache refresh is necessary.</p> +<p class="item"><b>A.</b> At the top of your *.tex main document, before the document class, place these lines:</p> +<p class="code"><code>% !TeX TS-program = LuaLaTeX</code><br/> +<code>% !TeX encoding = UTF-8</code></p> +<p>Those instructions are read and understood by many TeX editors, and also serve as a reminder to yourself.</p> +<p class="item"><b>B.</b> If you compile by command line, try this:</p> +<p class="code"><code>lualatex yourdocument.tex</code><p> +<p class="item"><b>C.</b> If using a service such as ShareLaTeX online, open the Menu, and scroll down to where you can choose the compiler. Set it to LuaLaTeX.</p> </div><!-- end 1.1.1 --> -<h4 id="h1.1.2">1.1.2. Licensing</h4> +<h4 id="h1.1.2">1.1.2. Use UTF-8 Encoding</h4> <div class="d4" id="d1.1.2"> -<p class="noindent">The <i>novel</i> document class, including software, examples, documentation and supporting images, is distributed under the terms of the LaTeX Project Public License, either version 1.3c of this license or (at your option) any later version. The exception is the included font NovelDeco.otf, which is distributed under terms of the SIL Open Font License, v.1.1.</p> -<p>To ensure that your book may be sold commercially, be careful to use only fonts that allow commercial usage. That may exclude some of the fonts in the LaTeX font catalog. See this documentation regarding fonts.</p> +<p class="item"><b>A.</b> You must create your document in <span style="white-space:nowrap">utf-8</span> encoding. No OT1, no T1, no LY1, or other TeX font encoding that pre-dates cell phones. Do not call for <i>fontenc</i> in your Preamble, because <span style="white-space:nowrap">utf-8</span> is <span style="white-space:nowrap">pre-configured</span>.</p> +<p class="item"><b>B.</b> If you use a plain text editor, or TeXWorks, or export plain text from a word processor, be sure that your text is encoded as <span style="white-space:nowrap">utf-8</span>, <i>without</i> byte order mark (BOM).</p> +<p class="item"><b>C.</b> Instead of typing TeX codes such as <code>\`{e}</code> you can simply paste <code>è</code> from a Unicode character map. Other alphabets such as Greek and Cyrillic are directly supported, as long as you choose fonts that support those character sets.</p> +<p class="item"><b>D.</b> If you are on Windows, <i>do not</i> use Notepad! The free <a class="external" rel="external" target="new" href="https://notepad-plus-plus.org">Notepad++</a> (also <a class="external" rel="external" target="new" href="https://portableapps.com/apps/development/notepadpp_portable">Portable</a> version) is a suitable plain text editor. Configure it as specified, with utf-8 but without BOM. Does not matter whether UNIX or DOS line endings, as long as you are consistent.</p> </div><!-- end 1.1.2 --> -<h4 id="h1.1.3">1.1.3. Credits</h4> +<h4 id="h1.1.3">1.1.3. Use Polyglossia Language Support</h4> <div class="d4" id="d1.1.3"> -<p class="noindent">My method of "programming" largely involves using or modifying code provided by others under allowable license terms. Thus, within the TeX code files, you will find places where small or large pieces of code are the work of someone else. Names or organizations are credited in-place within the TeX code, according to license.</p> -<p>Various clipart graphics were obtained from <a class="external" rel="external" target="new" href="https://openclipart.org">openclipart.org</a>. The <i>NovelDeco.otf</i> font is partly derived from <i>Linux Libertine O</i>, using <a class="external" rel="external" target="new" href="https://fontforge.github.io/en-US/">FontForge.</a></p> -<p>I read popular fiction a lot, usually books from my local public library. Even if I do not read a particular book, I often look a how it is designed. Throughout this documentation, where I recommend a design or style, it is most often based on the preponderance of designs/styles as I have seen in softcover or hardcover popular fiction, from major publishers in the U.S.A. That does not include "mass-market paperback" versions (the kind seen at supermarkets, rather than at bookstores). I may mention several common alternatives.</p> -<p>I have also consulted the authoritative <i>Chicago Manual of Style</i> (CMoS) hardcover 16th Edition. In the case of fiction, <i style="cursor:help" title="Chicago Manual of Style">CMoS</i> notes that publishers sometimes don't do things the official way.</p> -<p>Although I have looked at a variety of web sites concerning book design, I give these the least credence, because (a) often they merely duplicate each other's opinions, right or wrong, and (b) they may simply echo <i style="cursor:help" title="Chicago Manual of Style">CMoS</i>.</p> +<p class="item"><b>A.</b> The pre-loaded <i>polyglossia</i> package provides language support. By default, <i>novel</i> is configured for American English.</p> +<p class="item"><b>B.</b> If your document's language is something else, or if you will be writing in multiple languages, see the <i>polyglossia</i> package documentation regarding <code>\setdefaultlanguage</code> and related commands.</p> </div><!-- end 1.1.3 --> -<h4 id="h1.1.4">1.1.4. Success Story</h4> +<h4 id="h1.1.4">1.1.4. Use Open Type Fonts</h4> <div class="d4" id="d1.1.4"> -<p class="noindent">In August 2017, an original novel using this document class was published. The text block used nearly all the default settings, and was electronically submitted as PDF/X-1a:2001.</p> -<p>The color cover image was designed in RGB using <a class="external" rel="external" target="new" href="https://inkscape.org">Inkscape</a> and <a class="external" rel="external" target="new" href="https://www.gimp.org">GIMP</a>, converted to CMYK at 240% ink limit using <a class="external" rel="external" target="new" href="http://www.graphicsmagick.org">GraphicsMagick</a> and the methods described in this documentation, then finally converted to PDF/X-1a:2001 using this document class.</p> -<p>Both files were automatically reviewed and accepted <i>on first attempt</i>, with the actual printed books for sale within a few days of file submission.</p> +<p class="item"><b>A.</b> The built-in <i>fontspec</i> package requires utf-8 encoding. It is able to load Open Type fonts, and access their internal feature sets. Forget Type 1 fonts and special encodings! If you wish to use Greek or Cyrillic, all you need are compatible fonts.</p> +<p class="item"><b>B.</b> If you accept the pre-configured fonts (from <i>libertinus</i>), then you do not need to know anything about <i>fontspec</i>. But if you wish to configure your own fonts, <a href="#hE">Appendix E</a> reviews the most important parts of <i>fontspec</i> syntax.</p> +<div style="clear:both"></div> </div><!-- end 1.1.4 --> + +<h4 id="h1.1.5">1.1.5. Read About Book Design</h4> +<div class="d4" id="d1.1.5"> +<p class="item"><b>A.</b> This documentation has an extensive section regarding <a href="#hD">book design</a>. Read it.</p> +<p class="item"><b>B.</b> In particular, you will learn how to format pages according to their position and purpose in the book; you will learn how to construct a table of contents; you will learn how you must end your document.</p> +<div style="clear:both"></div> +</div><!-- end 1.1.5 --> </div><!-- end 1.1 --> -<h3 id="h1.2">1.2. Important Behavior</h3> + +<h3 id="h1.2">1.2. Avoid These Things</h3> <div class="d3" id="d1.2"> -<p class="noindent">There are several ways that <i>novel</i> is very different from other TeX document classes. Before you wonder why your document doesn't work, you need to understand the differences. All of these are features, not bugs. They are done with the intent of making <i>novel</i> best for its intended purpose.</p> -<p>At the top of your *.tex main document, place these lines:</p> -<p class="code"><code>% !TeX TS-program = LuaLaTeX<br/> -% !TeX encoding = UTF-8 -</code></p> -<p>Those instructions are read and understood by many TeX editors, and also serve as a reminder to yourself. However, they do nothing when the document is processed by command line.</p> -<h4 id="h1.2.1">1.2.1. Always Use UTF-8, Without fontenc</h4> +<h4 id="h1.2.1">1.2.1. Avoid Non-Fontspec Font Loaders</h4> <div class="d4" id="d1.2.1"> -<p class="noindent">You must create your document in utf-8 encoding. No OT1, no T1, no LY1, or other TeX font encoding that pre-dates cell phones.</p> -<p>Instead of typing TeX codes such as <code>\`{e}</code> you can simply paste <code>è</code> from a Unicode character map. Other alphabets such as Greek and Cyrillic are directly supported, as long as you choose fonts that support those character sets.</p> -<p>Do not call for <i>fontenc</i> in your Preamble. The <i>novel</i> class is pre-configured for utf-8.</p> -<p>If you use a plain text editor, or TeXWorks, or export plain text from a word processor, be sure that your text is encoded as utf-8, without byte order mark (BOM).</p> -<p>If you are on Windows, do not use Notepad! The free <a class="external" rel="external" target="new" href="https://notepad-plus-plus.org">Notepad++</a> (also <a class="external" rel="external" target="new" href="https://portableapps.com/apps/development/notepadpp_portable">Portable</a> version) is a suitable plain text editor. Configure it as specified, with utf-8 and without BOM. Does not matter whether UNIX or DOS line endings, as long as you are consistent.</p> - -<h5 id="h1.2.1.1">1.2.1.1. Polyglossia Language Support</h5> -<div class="d5" id="d1.2.1.1"> -<p class="noindent">The pre-loaded <i>polyglossia</i> package (not <i>babel</i>) provides language support. By default, <i>novel</i> is configured for American English.</p> -<p>If your document's language is something else, or if you will be writing in multiple languages, see the <i>polyglossia</i> package documentation regarding <code>\setdefaultlanguage</code> and other commands.</p> -</div><!-- end 1.2.1.1 --> +<p class="item"><b>A.</b> The method for loading fonts is described in <a href="#h4.2">section 4.2</a>. Be sure you read it.</p> +<p class="item"><b>B.</b> Do not load fonts via <code>\usepackage</code> or <code>\RequirePackage</code>, or by <code>\setmainfont</code>.</p> </div><!-- end 1.2.1 --> -<h4 id="h1.2.2">1.2.2. Do Not Load Fonts via <code>\usepackage</code> or <code>\RequirePackage</code></h4> +<h4 id="h1.2.2">1.2.2. Avoid TeX Font Sizes</h4> <div class="d4" id="d1.2.2"> -<p class="noindent">The method for loading fonts is described elsewhere on this page. Be sure you read that! For example, you cannot load a font with <code>\usepackage{<em>fontname</em>}</code> in this document class.</p> +<p class="item"><b>A.</b> Standard text size commands, such as <code>\small</code> or <code>\LARGE</code>, will be ignored. The text will appear at its normal size, just as if the commands did not exist.</p> +<p class="item"><b>B.</b> <i>Novel</i> provides its own capability to size text, using <a href="#h6.1">different commands</a>.</p> +<p class="item" style="position:relative"><b>C.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> The <i>novel</i>-specific size commands maintain text line grid, where possible. This is important for printed fiction.</p> </div><!-- end 1.2.2 --> -<h4 id="h1.2.3">1.2.3. Use LuaLaTeX and Open Type fonts</h4> +<h4 id="h1.2.3">1.2.3. Avoid Academic Structures</h4> <div class="d4" id="d1.2.3"> -<p class="noindent"><img class="floatright" src="html-resources/doordie.png" width="279" height="300" alt="Thou Shalt"/> With <i>novel</i>, you will be using the <i>LuaLaTeX</i> engine, whether you like it or not. No <i>pdfTeX</i>, no <i>XeTeX</i>, no <i>dvips</i>. You do not have to understand <i>Lua</i> code, since the heavy lifting is already done for you. Just follow the instructions in this documentation.</p> -<p>The built-in <i>fontspec</i> package handles modern Open Type fonts, and is able to access their internal features. The syntax is easy to learn, and very powerful. And, you can directly include text with diacritical marks, Greek, Cyrillic, and most other utf-8 encoded characters in your document. All you need are the fonts, and you probably have them. You will wonder why you never did this before.</p> +<p class="item"><img class="floatright" src="html-resources/fpaper.png" width="134" height="215" alt="flunked math"/><b>A.</b> Commands such as <code>\section</code>, <code>\chapter</code>, <code>\abstract</code>, <code>\index</code>, <code>\tableofcontents</code>, <code>\maketitle</code>, and many other structural commands will not work with <i>novel</i>. This is intentional.</p> +<p class="item"><b>B.</b> The <i>float</i>, <i>picture</i>, and <i>table</i> environments are disallowed, unless you are in <a href="#h2.2">sandbox</a> mode. This is intentional. In <i>novel</i> there are specific ways to <a href="#h7.3">place images</a> or construct a <a href="#hD.3.2.7">table of contents</a>.</p> +<p class="item"><b>C.</b> <i>Novel</i> has <a href="#h5">chapter-related commands</a> specifically created for the needs of fictional works.</p> +<p class="item" style="position:relative"><b>D.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> <i>Novel</i> is focused on doing one thing well, rather than many things poorly. That is why so many "academic" commands have been discarded. They are not necessary in popular fiction.</p> +<div style="clear:both"></div> </div><!-- end 1.2.3 --> -<h4 id="h1.2.4">1.2.4. Disabled standard text size commands</h4> +<h4 id="h1.2.4">1.2.4. Avoid TeX Editors and IDEs</h4> <div class="d4" id="d1.2.4"> -<p class="noindent">Would you like to size text, using command such as <code>\small</code> or<code> \LARGE</code> ? Bah! They will be ignored. Write these commands, and the text will appear at its usual size, just as if the commands did not exist.</p> -<p>There is a reason for this behavior, related to the need for constant line spacing. Thus, <i>novel</i> provides its own capability to size text, using different commands.</p> +<p class="item"><b>A.</b> Many TeX editors assume that you are using a standard TeX document class. They may attempt to insert code that does not work in <i>novel</i> class. Or, they may not understand the commands specific to <i>novel</i>. Do not use those editors.</p> +<p class="item"><b>B.</b> The TeXWorks editor is satisfactory. Be sure that you do not run scripts that change the content of your document.</p> </div><!-- end 1.2.4 --> +</div><!-- end 1.2 --> + -<h4 id="h1.2.5">1.2.5. Disabled academic-purpose commands</h4> -<div class="d4" id="d1.2.5"> -<p class="noindent"><img class="floatright" src="html-resources/fpaper.png" width="134" height="215" alt="flunked math"/> Commands such as <code>\section</code>, <code>\chapter</code>, <code>\abstract</code>, <code>\index</code>, <code>\tableofcontents</code>, <code>\maketitle</code>, and many other structural commands will not work with <i>novel</i>. Those are for academic papers. The results they would produce (if enabled) would be inappropriate for fiction. If you attempt to use them, you will either get an error message, or they will simply be ignored.</p> -<p>Novelists do not need many ways to distinguish chapters. With <i>novel</i> there are commands specifically created for the needs of fictional works. They are described below.</p> -<p>Also, the <i>float</i> and <i>table</i> environments are ineffective. In <i>novel</i> there are specific ways to place images or construct a table of contents.</p> -</div><!-- end 1.2.5 --> - -<h4 id="h1.2.6">1.2.6. Images must be raster png or jpg</h4> -<div class="d4" id="d1.2.6"> -<p class="noindent">You read that correctly. Sometimes fiction uses images, especially for the title page and chapter titles. With <i>novel</i>, do not use vector formats such as <i>eps</i>, <i>svg</i>, or <i>pdf</i> images. Use raster images in <i>png</i> or <i>jpg</i> format.</p> -<p>There is a reason for this, explained below, where the use of images is discussed in detail. Be sure to read it, as <i>novel</i> has its own way to place images, in a way that is most likely to work well with fiction.</p> -</div><!-- end 1.2.6 --> - -<h4 id="h1.2.7">1.2.7. Beware of $, %, and Other TeX Special Characters</h4> -<div class="d4" id="d1.2.7"> -<p class="noindent">This is standard TeX behavior. Just a reminder!</p> -<p><img class="floatright" src="html-resources/trdol.png" width="238" height="67" alt="dollar is math mode"/> TeX has a number of special characters. If you type them in a document, they will not appear as an ordinary printed character, but will do something else. These are:</p> +<h3 id="h1.3">1.3. Beware of These</h3> +<div class="d3" id="d1.3"> + +<h4 id="h1.3.1">1.3.1. Beware of $, %, and Other TeX Special Characters</h4> +<div class="d4" id="d1.3.1"> +<p class="item"><b>A.</b> This is standard TeX behavior. Just a reminder!</p> +<p class="item"><img class="floatright" src="html-resources/trdol.png" width="238" height="67" alt="dollar is math mode"/><b>B.</b> TeX has a number of special characters. If you type them in a document, they will not appear as an ordinary printed character, but will do something else. These are:</p> <p class="code"><code>$ % # _ ^ & ~ \ { }</code> and sometimes <code>[ ]</code></p> -<p>In most cases, an incorrect usage will provide an error message that can be easily deciphered. However, the dollar sign and percent symbol are tricky. Incorrect use of the dollar sign may either place your text in math mode (not your intent) or produce a baffling error message that points to an innocent package. The percent symbol normally produces no error, since it is a comment character. But then, whatever text follows on that line will be missing from your PDF.</p> -<p>Special characters, other than the backslash, are escaped by placing a backslash in front, thus: <code>\$</code> for the dollar sign, <code>\%</code> for percent. If you must print a backslash, <code>\string\</code> does it.</p> -<p class="noindent"><b>• Tip:</b> To avoid unforeseen problems, you should review your document in a text editor, prior to compiling. Search for any instances of special characters, particularly dollar and percent. Backslash them as needed.</p> -</div><!-- end 1.2.7 --> - -<h4 id="h1.2.8">1.2.8. Avoid TeX Editors and IDEs</h4> -<div class="d4" id="d1.2.8"> -<p class="noindent">You must create your document in utf-8 encoding. You may use a plain text editor (with or without TeX code highlighting), export plain text from a word processor (recommended), or use the minimal <i>TeXWorks</i> GUI. If you use <i>TeXWorks</i>, be sure that you are not running scripts that change the content of your document.</p> -<p>Do not use another TeX editor, such as <i>Lyx</i> or <i>TeXstudio</i>, or an Integrated Development Environment (IDE). Those programs are often capable of inserting standard LaTeX code from menus. However, <i>novel</i> does not necessarily use that standard LaTeX code. The result may be unexpected.</p> -</div><!-- end 1.2.8 --> - -<h4 id="h1.2.9">1.2.9. Suggestion: Write Using a Word Processor</h4> -<div class="d4" id="d1.2.9"> -<p class="noindent">I suggest that you write your novel in a word processor rather than in a text editor. <i>MS Word</i> and similar programs work. I use <a class="external" rel="external" target="new" href="https://www.libreoffice.org">LibreOffice</a> (also <a class="external" rel="external" target="new" href="https://portableapps.com/apps/office/libreoffice_portable">Portable</a> version). If you use <i>LibreOffice</i>, version 5.3 or later is much better than earlier versions.</p> -<p>Why begin with a word processor? These programs can automatically substitute curly quotes and other characters. Remember than since you are using utf-8 encoding, you don't need to use TeX code for that, since you can simply insert the character directly. And, word processors have much better support for spell checking (and sometimes grammar). Just be sure that the word processor does not <i>automatically</i> correct your spelling, because any TeX code won't be in its dictionary.</p> -<p>Remember that TeX closes paragraphs by skipping lines, or by <code>\par</code>. Also remember that in most word processors, the emdash is <i>two</i> hyphens, not the three used in TeX. You can always insert an emdash (or endash) directly. You can write TeX code into the word processor, where it will be treated like ordinary text, so use <code>\textit{<em>text</em>}</code> or similar command, rather than the word processor's italics menu.</p> -<p>In any case, be sure to export plain text as utf-8, then compile it with <i>lualatex</i>.</p> -<p class="noindent"><b>• Tip:</b> For the editing and proofreading phase, where spelling and grammar are carefully reviewed, I use a special font <i>CPmodified.otf</i>. This is my custom derivative of the <a class="external" rel="external" target="new" href="https://quoteunquoteapps.com/courierprime/">Courier Prime</a> regular font. <i>Cpmodified</i> can be found in the documentation <i>extras</i> folder. It is released under the SIL Open Font License v.1.1. To use this font for editing, install it in your <i>operating system</i>, not TeX. Then, call it from your word processor. The font includes Latin-1 and ANSI characters, and a few others. It is not quite monospaced (the em dash and ellipsis are longer). Punctuation is highly exaggerated, so you can see it more easily. My own experience is that most errors in the nearly-finished document involve punctuation.</p> -<p class="noindent"><b>• Tip:</b> Word processors usually make an incorrect substitution for certain English elisions (possibly in other languages also). When you type "Give 'em hell," the substitution may provide <i>Give ‘em hell</i>, but the correct rendition is <i>Give ’em hell</i>. Can you see the tiny difference in the direction of the single quote? Probably not on your computer screen, but it will be noticeable in print. The <i>CPmodified.otf</i> font makes the difference obvious.</p> -</div><!-- end 1.2.9 --> - -<h4 id="h1.2.10">1.2.10. Think for yourself</h4> -<div class="d4" id="d1.2.10"> -<p>When TeX processes a document on a paragraph-by-paragraph basis, it chooses the layout that has the least total "penalty." Penalties are assessed based on factors such as word spacing, inter-line spacing, hyphenation, widows, and orphans. You may choose the value of each penalty.</p> -<p>With <i>novel</i>, inter-line spacing is fixed, and there is no padding between paragraphs. No plus-or-minus. Hyphens are allowed, but strongly penalized. A reasonable amount of altered word spacing is allowed, and the built-in <i>microtype</i> package allows reasonable changes to letter spacing and the letters themselves. These choices achieve a high level of visual appeal and readability for flowing text.</p> -<p>However, there is little penalty for widows or orphans. When you process a document with <i>novel</i> you are likely to find widows and orphans on many pages. This choice was made for several reasons. First, attention to widows and orphans would reduce the effectiveness of the other, more important, layout penalties. Second, fiction often has numerous short paragraphs (especially with dialogue), and it is very difficult for software to deal with all of them. Third, a great deal of contemporary fiction has widows and orphans. Fourth, it's your book... You can rewrite it!</p> -</div><!-- end 1.2.10 --> -</div><!-- end 1.2 --> +<p class="item"><b>C.</b> In some cases, an incorrect usage will provide an error message that can be easily deciphered.</p> +<p class="item"><b>D.</b> Incorrect use of the dollar sign may either place your text in math mode (not your intent) or produce a baffling error message that points to an innocent package.</p> +<p class="item"><b>E.</b> The percent symbol normally produces no error, since it is a comment character. But then, whatever text follows on that line will be missing from your PDF. Unless you carefully review the PDF, you might not notice that text is missing.</p> +<p class="item"><b>F.</b> Special characters, other than the backslash, are escaped by placing a backslash in front, thus: <code>\$</code> for the dollar sign, <code>\%</code> for percent. If you must print a backslash, <code>\string\</code> does it.</p> +<p class="item" style="position:relative"><b>G.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> To avoid unforeseen problems, you should review your document in a text editor, prior to compiling. Search for any instances of special characters, particularly dollar and percent. Backslash them as needed.</p> +<div style="clear:both"></div> +</div><!-- end 1.3.1 --> + + +<h4 id="h1.3.2">1.3.2. Beware of Layout Surprises</h4> +<div class="d4" id="d1.3.2"> +<p class="item"><b>A.</b> In <i>novel</i>, inter-line spacing is fixed. There is no padding between paragraphs. No plus/minus "flexible glue." This is standard for printed fiction.</p> +<p class="item"><b>B.</b> When TeX processes a document on a paragraph-by-paragraph basis, it chooses the layout that has the least total "penalty." Penalties are assessed based on factors such as word spacing, hyphenation, widows, and orphans (clubs). <i>Novel</i> applies a moderately strong penalty to hyphens; they are allowed, but discouraged. Widows and orphans are penalized very little. Word spacing, and even the spacing and characters within words, are controlled by moderate settings of the built-in <i>microtype</i> package.</p> +<p class="item" style="position:relative"><b>C.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> You are likely to find widows and orphans on many pages. If you wish to remove them, you must edit your text. This choice was made for several reasons: First, attention to widows and orphans would reduce the effectiveness of the other, more important, layout penalties. Second, fiction often has numerous short paragraphs (especially with dialogue), and it is very difficult for software to deal with all of them. Third, a great deal of contemporary fiction allows widows and orphans, when they are not distracting.</p> +</div><!-- end 1.3.2 --> +</div><!-- end 1.3 --> </div><!-- end 1 --> @@ -715,85 +683,97 @@ function closeall() { <h2 id="h2">2. Document Class Options</h2> <div class="d2" id="d2"> -<p class="noindent">As with other LaTeX classes, <i>novel</i> is called this way:</p> -<p><code>\documentclass[options]{novel}</code></p> -<p>As with other document classes, <i>novel</i> chooses a default paper size, and font size, if you do not make the choice. But there, the similarity ends. The default paper size in <i>novel</i> is 5.5" wide by 8.5" high, which is a popular book Trim Size for softcover fiction in the US, and close to the Demy Octavo (C novel) British size. And, the default font size is not an integer point size!</p> -<p>In fact, you <em>cannot</em> set either the paper size or font size in the class options. You set them via other commands, in the Preamble. The commands are explained on other pages of this documentation.</p> -<p>Still, there are a number of class options. As usual, options must be enclosed in braces and be separated by commas.</p> -<p>Note: The <i>debug</i> option, unique to version 1.38, has been removed.</p> +<p class="item"><b>A.</b> As with other LaTeX classes, <i>novel</i> is called this way:</p> +<p><code>\documentclass[options,separated,by,commas]{novel}</code></p> +<p class="item"><b>B.</b> You do NOT use class options to choose paper size, font size, or any other dimensions. The settings are described in <a href="#h4">section 4</a>.</p> +<p class="item"><b>C.</b> Default sizes are appropriate for most print-on-demand, softcover fiction.</p> <h3 id="h2.1">2.1. draft</h3> <div class="d3" id="d2.1"> -<p class="noindent">The word DRAFT will appear at the upper left of each page.</p> -<p>In draft mode, a little black bar will be placed at the right side of text that didn't quite fit on the line. These locations are reported in the log file as "overfull hbox" warnings. The black bar is called an "overflow rule".</p> +<p class="item"><b>A.</b> May NOT be used for final, print-ready PDF.</p> +<p class="item"><b>B.</b> The word DRAFT will appear at the upper left of each page.</p> +<p class="item"><b>C.</b> When text cannot be precisely wrapped, a small black bar (overflow rule) appears at right. These locations are reported in the log file as "overfull hbox" warnings. Example:</p> <p class="centerimg"><img src="html-resources/overflowrule.png" width="525" height="155" title="draft mode, overflow rule" alt="overflow rule"/></p> -<p>Some packages take note of whether or not the document is in draft mode, and change their behavior accordingly. However, the included <i>microtype</i> package will always be in final mode, and the included <i>hyperref</i> package will always be in draft mode.</p> -<p>In draft mode, PDF/X compliance is turned off, no matter what you specify.</p> +<p class="item"><b>D.</b> Some class options are only effective when used with <i>draft</i> option.</p> +<p class="item"><b>E.</b> PDF/X compliance is turned <i>off</i>. This over-rides any PDF/X setting.</p> +<p class="item"><b>F.</b> Some packages take note of whether or not the document is in draft mode, and change their behavior accordingly. However, the included <i>microtype</i> package will always be in final mode, and the included <i>hyperref</i> package will always be in draft mode.</p> </div><!-- end 2.1 --> -<h3 id="h2.2">2.2. graytext</h3> +<h3 id="h2.2">2.2. sandbox</h3> <div class="d3" id="d2.2"> -<p class="noindent">The <i>novel</i> document class is intended for black/white book interiors. Normally, any color command, even gray, will be ignored, and the text will be rendered black. This does not affect images.</p> -<p>The <i>graytext</i> option over-rides this restriction, and obeys grayscale color commands from the <i>xcolor</i> package, which is already loaded with the class. Non-grayscale colors will be converted to shades of gray.</p> -<p class="centerimg"><img src="html-resources/graytext.png" width="512" height="54" title="graytext" alt="graytext"/></p> -<p>Your book will not be printed with "gray ink." Instead, anything other than pure black will be emulated by a pattern of black dots. This is known as "halftone." It causes a reduction in resolution, so your gray text will appear somewhat fuzzy. Therefore, do not use very small text, or characters with fine lines.</p> -<p>Sometimes the halftone operation extends to nearby text that is not gray. So: Unlike the example shown above, it is a bad idea to mingle gray with the ordinary flow of black text. The most appropriate use of gray text is for special items such as chapter titles.</p> -<p>You may place darker text over a lighter background. But even though the resulting PDF meets standards, lighter text over darker background is unlikely to print as intended.</p> -<p>See also <a href="#h7.3.3">section 7.3.3</a>.</p> +<p class="noindent">This option is new in version 1.50.</p> +<p class="item"><b>A.</b> In <code>sandbox</code> mode, you can use many packages that would otherwise be prohibited. This will allow you to create tables and diagrams using nearly any methods ordinarily available in most other document classes. Of course, you may have to load some additional packages.</p> +<p class="item"><b>B.</b> The <code>sandbox</code> is limited to 4 pages of output, regardless of document length. So, you cannot use <code>sandbox</code> for your whole book. Instead, create one or more separate <code>sandbox</code> files.</p> +<p class="item"><b>C.</b> Your <code>sandbox</code> document should have the same layout as your full document. Then it is a drawing canvas. On a per-page basis, whatever fits in <code>sandbox</code> will also fit in your main document.</p> +<p class="item"><b>D.</b> If you also enable draft mode and shademargins, you can see the size of available space on the <code>sandbox</code> pages.</p> +<p class="item"><b>E.</b> When not in draft mode, the <code>sandbox</code> pages will have empty headers and footers (no matter which style you use).</p> +<p class="item"><b>F.</b> Post-process your <code>sandbox</code> PDF using <i style="white-space:nowrap">novel-scripts</i>. Then you will obtain black/white or grayscale raster images, with surrounding white space trimmed away. These images can be placed as ordinary images in your main document.</p> +<p class="item" style="position:relative"><b>G.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Why <code>sandbox</code>? Certain ordinary TeX commands and environments will disturb the <i>novel</i> page layout. Others will invalidate PDF/X. When you create something in <code>sandbox</code>, then convert it to a raster image, those bad effects are neutralized.</p> + </div><!-- end 2.2 --> <h3 id="h2.3">2.3. shademargins</h3> <div class="d3" id="d2.3"> -<p class="noindent">This option is ignored unless using draft mode. It is not necessary to use the <i>graytext</i> option.</p> -<p><img class="floatright" style="margin-top:6px" src="html-resources/shademargins.png" width="132" height="205" title="shademargins" alt="shademargins"/> The <i>shademargins</i> option is simple: The margins will have a light gray background.</p> -<p>Note that <em>margins</em> refers to the area between the live text area (including head/foot, if any) and the TrimBox, which is the finished size of your book. If you are using <code>\SetMediaSize</code> to request paper larger than your book's Trim Size, the excess area is <em>not</em> considered to be margins; it is discarded paper, so it is not gray.</p> -<p>Some commands (in particular, images) allow their content to overflow the textblock area. With <i>shademargins</i> you can see where such object intrude into the margins.</p> -<p>Sometimes it is hard to see whether a centered object is really centered, because the left-right margins are not the same width. With <i>shademargins</i> you can more easily see centering.</p> -<p>Note that headers and footers are not part of the margins.</p> +<p class="item"><img class="floatright" style="margin-top:6px" src="html-resources/shademargins.png" width="132" height="205" title="shademargins" alt="shademargins"/><b>A.</b> Only effective with <i>draft</i> option.</p> +<p class="item"><b>B.</b> Helps to visualize and detect possible layout problems.</p> +<p class="item"><b>C.</b> Applies dark gray shade to unsafe areas (if set). Applies medium gray shade to margin areas. Applies light gray shade to header/footer areas. +<p class="item"><b>D.</b> <a href="#h4.3.1">Margins</a> include areas inside and outside the <a href="#h4.3.1.2">unsafe zones</a>.</p> +<p class="item"><b>E.</b> If <a href="#h4.1.2">Media Size</a> exceeds <a href="#h4.1.1">Trim Size</a>, the area outside the Trim Size will <em>not</em> be gray, because it is not part of the finished book.</p> +<p class="item" style="position:relative"><b>F.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Technical Info: During page shipout, the gray areas are added as background colors, with a white box above it, then text (and images, if any) on top.</p> +<div style="clear:both"></div> </div><!-- end 2.3 --> -<h3 id="h2.4">2.4. cropmarks</h3> +<h3 id="h2.4">2.4. cropmarks <em>(do not use unless required)</em></h3> <div class="d3" id="d2.4"> -<p class="noindent"><img class="floatright" style="margin-top:6px" src="html-resources/cropmarks.png" width="205" height="265" title="cropmarks" alt="cropmarks"/> This option is ignored if the TrimSize is the same as the MediaSize (the usual situation). It works whether or not in draft mode.</p> -<p>If the PDF Media Size is larger than its finished TrimSize, you can place crop marks (also known as trim marks) to indicate where the paper will be cut. The <i>cropmarks</i> option makes the marks visible. If this option is not used, then no marks are placed, regardless of any other commands.</p> -<p>Note that most print-on-demand book printers <em>do not want crop marks</em>. The process flow is automated, and trim data is read from within the PDF. Crop marks may actually interfere with proper layout, if your PDF is re-formatted to share a large sheet of paper along with other pages. So, do not use <i>cropmarks</i> unless you must. For this reason, the built-in capability for cropmarks is very basic.</p> -<p><img class="floatright" style="margin-top:6px" src="html-resources/cropmarkgap.png" width="140" height="141" title="cropmark gap" alt="cropmark gap"/> There is only one configurable setting, which may be used in the Preamble:</p> -<p class="code"><code>\SetCropmarkGap{<em>length</em>}</code></p> -<p>The cropmark gap is the distance between the Trim Box and where the crop lines begin. The purpose of the gap is so that the marks do not show on the trimmed paper, if the cut is a little bit off. In all cases, the far end of the cropmarks is 0.5in from the Trim Area. The gap is marked G in this diagram. The length must be least 0pt, and is more typically 0.125in or 0.250in. The default is 0.125in. </p> -<p>If your Trim is placed off-center in the Media, then only one pair of cropmarks will be visible.</p> +<p class="item"><img class="floatright" style="margin-top:6px" src="html-resources/cropmarks.png" width="205" height="265" title="cropmarks" alt="cropmarks"/><b>A.</b> May be used with or without <i>draft</i> option.</p> +<p class="item"><b>B.</b> Marks are 0.25pt weight, 0.125in long, beginning 0.125in from the <a href="#h4.1.1">TrimBox</a>, ending 0.25in away from TrimBox.</p> +<p>The illustration shows a document with <a href="#h4.1.1">Trim Size</a> floated in a larger <a href="#h4.1.2">Media Size</a>. The invisible <a href="#h4.1.1">TrimBox</a> is outlined in green. The tiny crop marks sit outside the TrimBox.</p> +<p class="item" style="position:relative"><b>C.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Do not load any package that provides other cropmarks. They are incompatible, whether or not you use the <code>cropmarks</code> option.</p> +<p class="item"><b>D.</b> Most print-on-demand services do NOT want crop marks (also known as trim marks). Do not use this option unless you are certain that you need crop marks!</p> +<p class="item"><b>E.</b> Whether or not you use <code>cropmarks</code> option: In PDF/X, the file contains invisible information (TrimBox) that is understood by automatic print/cut machines.</p> +<p class="item"><b>F.</b> The PDF term CropBox is related to <a href="#h2.5">cropview</a>, NOT crop marks.</p> </div><!-- end 2.4 --> <h3 id="h2.5">2.5. cropview</h3> <div class="d3" id="d2.5"> -<p class="noindent"><img class="floatright" style="margin-top:6px" src="html-resources/cropview.png" width="132" height="203" title="cropview" alt="cropview"/> This option is ignored if the TrimSize is the same as the MediaSize (the usual situation), because it is unnecessary. Also, it is ignored unless using draft mode.</p> -<p>With <i>cropview</i>, there is an internal instruction to PDF viewers, requesting that only the Trim Size be displayed on the screen, rather than the whole Media Size. This is useful during the layout phase, because it is hard to visualize layout when you have a small finished size floating in a much larger paper size. Nothing else is changed.</p> -<p>The accompanying image is the <i>cropview</i> display of the same page that was used to illustrate the <i>cropmarks</i> command. However, you do not need to have cropmarks, to use <i>cropview</i>.</p> +<p class="item"><img class="floatright" style="margin-top:6px" src="html-resources/cropview.png" width="132" height="203" title="cropview" alt="cropview"/><b>A.</b> Only effective with <i>draft</i> option.</p> +<p class="item"><b>B.</b> Ignored if <a href="#h4.1.1">Trim Size</a> is same as <a href="#h4.1.2">Media Size</a>.</p> +<p class="item"><b>C.</b> Instructs PDF viewer: Only display Trim Size on screen.</p> +<p class="item"><b>D.</b> Helps to visualize trimmed book size, when Media Size is larger than Trim Size.</p> +<p class="item" style="position:relative"><b>E.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Technical Info: Normally, the PDF CropBox is equal to the MediaBox. This option sets the CropBox equal to the TrimBox.</p> +<div style="clear:both"></div> </div><!-- end 2.5 --> <h3 id="h2.6">2.6. closecrop</h3> <div class="d3" id="d2.6"> -<p class="noindent"><img class="floatright" style="margin-top:6px" src="html-resources/closecrop.png" width="110" height="186" title="closecrop" alt="closecrop"/> This option is only effective in draft mode. When used, the layout of your text is unchanged, but the surrounding margins are shrunk so that they just clear the live text area (which includes header and footer, if present). Also, the TrimSize is shrunk accordingly. The resulting PDF will be easier to read on a handheld device.</p> -<p>This does <em>not</em> produce an E-book, since the file will be missing some things that an E-book ought to have. The sole purpose of this option is to create a conveniently-sized file that you can carry around while you are thinking about edits and revisions.</p> +<p class="item"><img class="floatright" style="margin-top:6px" src="html-resources/closecrop.png" width="110" height="186" title="closecrop" alt="closecrop"/><b>A.</b> Only effective with <i>draft</i> option.</p> +<p class="item"><b>B.</b> Minimizes white space surrounding the text/header/footer, so that the result may be viewed on a hand-held device at largest practical text size.</p> +<p class="item"><b>C.</b> Purpose: Helps you to visualize your own book, while traveling, before you make final edits.</p> +<p class="item"><b>D.</b> This is NOT an e-book. It does not meet e-book standards, and cannot be changed to meet e-book standards.</p> +<p class="item" style="position:relative"><b>E.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Technical Info: First, the live area (text plus head/foot) is calculated from the original settings. Then, small margins are added, and the Trim Size is reduced to fit. So, the closecrop PDF size is not the same as in the print-ready PDF, although the page layout is the same.</p> +<div style="clear:both"></div> </div><!-- end 2.6 --> <h3 id="h2.7">2.7. xml</h3> <div class="d3" id="d2.7"> -<p class="noindent">If you request your PDF to comply with PDF/X standards, it will automatically include XMP Metadata that can be seen as document properties in some (mostly professional) PDF reader software. The <i>xml</i> option exports this data with an xml header added, so that it can be independently viewed in software such as a browser.</p> -<p>This option is only for your information; the exported xml file is not necessary. Whether or not you choose this option will not affect the structure or content of your PDF. If you set PDF/X compliance to <i>off</i>, then there will be no exported xml file.</p> -<p>The exported file will be named <i>jobname-XMPasXML.xml</i>, where <i>jobname</i> is the file name of your *.tex document. If you wish to obtain the XMP packet, without the xml header, you can easily do that with a Unicode-compatible text editor. The necessary editing is obvious.</p> +<p class="item"><b>A.</b> Only effective with PDF/X. Only effective when NOT in draft mode.</p> +<p class="item"><b>B.</b> Copies internal XMP Metadata to a separate <i>jobname-XMPasXML.xml</i> file.</p> +<p class="item"><b>C.</b> Not necessary. Only informative. Does not affect structure or content of PDF.</p> +<p class="item" style="position:relative"><b>D.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Technical Info: XMP packet may be isolated by editing the *.xml file, in a plain text editor (requires utf-8). Necessary edits are obvious.</p> </div><!-- end 2.7 --> <h3 id="h2.8">2.8. coverart</h3> <div class="d3" id="d2.8"> -<p class="noindent">This option is only used for cover artwork. See section 12.</p> +<p class="item">This option is only used for cover artwork. See <a href="#h7.1.2">section 7.1.2</a>.</p> </div><!-- end 2.8 --> -<h3 id="h2.9">2.9. unblock (primarily for developer use)</h3> +<h3 id="h2.9">2.9. Developer Options</h3> <div class="d3" id="d2.9"> -<p class="noindent">A number of LaTeX packages are known to be incompatible with <i>novel</i>, because "the way those packages do things" conflicts with "the way <i>novel</i> does things." If you attempt to load one of those packages, then the results you get may not be in agreement with the formats and styles described in this documentation, because the other package over-rides some of <i>novel's</i> own macros.</p> -<p>Therefore, at the end of your Preamble, <i>novel</i> reviews the loaded packages, and throws an error message if you included any of them via <code>\usepackage</code> or <code>\RequirePackage</code>. That also applies if you call some other package that chain-loads one of the forbidden packages.</p> -<p>The odds that you will need a forbidden package are small, because they generally pertain to layout for mathematical and academic papers (tables, floats, equations, diagrams, etc.).</p> -<p>If you specify document class option <i>unblock</i> then the list of forbidden packages will be disregarded by <i>novel</i>. Use at your own risk! This option is really intended for the convenience of developers, rather than ordinary users.</p> +<p class="noindent">These options are primarily used for developer testing, not user production. Using them may cause compilation to fail, or produce an undesirable result. That is not considered a bug.</p> +<p class="item"><b>A.</b> <code>mtoff</code> The <i>microtype</i> package will not be loaded.</p> +<p class="item"><b>B.</b> <code>polyoff</code> The <i>polyglossia</i> package will not be loaded.</p> +<p class="item"><b>C.</b> <code>test</code> Only used with file <i>novel-testsuite.tex</i>.</p> +<p class="item"><b>D.</b> <code>unblock</code> Allows use of some packages that would otherwise be blocked.</p> </div><!-- end 2.9 --> @@ -804,9 +784,9 @@ function closeall() { <h2 id="h3">3. Metadata, File Data, and PDF/X</h2> <div class="d2" id="d3"> -<p class="noindent">The commands described on this page are used only in the Preamble.</p> -<p>These commands write non-printing information to the PDF file. Some of the information is used to identify and classify the file. Other information is read by the printer, to assist it with printing choices.</p> -<p>Unfortunately, some of the terms have slightly different meaning, depending on whether they are used in the context of printing, book distribution, or ebooks. To avoid confusion <em>within this documentation</em> I will use different terms when they mean different things. When you are communicating with your printing and distribution service, take care to ensure that your understanding of terminology is what they really mean.</p> +<p class="item"><b>A.</b> The commands described on this page are used only in the Preamble.</p> +<p class="item"><b>B.</b> These commands write non-printing information to the PDF file. Some of the information is used to identify and classify the file. Other information is read by the printer, to assist it with printing choices.</p> +<p class="item" style="position:relative"><b>C.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Some of the terms have different meanings, depending on whether they are used in the context of printing, book distribution, or ebooks. To avoid confusion <em>within this documentation</em> I will use different terms when they mean different things. When you are communicating with your printing and distribution service, take care to ensure that your understanding of terminology is what they really mean.</p> <h3 id="h3.1">3.1. Definition of Terms</h3> <div class="d3" id="d3.1"> @@ -814,63 +794,78 @@ function closeall() { <h4 id="h3.1.1">3.1.1. ISBN Metadata</h4> <div class="d4" id="d3.1.1"> -<p class="noindent"><img class="floatright" src="html-resources/bookmanglerdashboard.png" width="500" height="309" alt="online form for ISBN metadata"/> When you obtain the ISBN for your book, either directly through the issuing agency or via your chosen print service, you will enter <em>ISBN Metadata</em> in an online form. This metadata will go into a database, and identify your printed book in distribution and sales channels. It neither knows nor cares about PDF. (If you were marketing a PDF ebook, instead of print, that would be a different story.)</p> -<p>ISBN Metadata includes title, author(s), subtitle if any, ISBN, other identifying information, and a description. The description is by way of advertising, and can usually be changed later; it need not appear anywhere in your book or PDF file, although some authors might use the description on the book's rear cover or cover flap.</p> -<p>Note: The ISBN refers to your <em>printed book</em>, not to the PDF file. You are not selling copies of the PDF.</p> +<p class="item"><b>A.</b> When you obtain the ISBN for your book, either directly through the issuing agency or via your chosen print service, you will enter <em>ISBN Metadata</em> in an online form.</p> +<p class="item"><img class="floatright" src="html-resources/bookmanglerdashboard.png" width="500" height="309" alt="online form for ISBN metadata"/><b>B.</b> This metadata goes into a database, and identifies your printed book in distribution and sales channels. It neither knows nor cares about PDF. (If you were marketing a PDF ebook, instead of print, that would be a different story.)</p> +<p class="item"><b>C.</b> ISBN Metadata includes title, author(s), subtitle if any, ISBN, and other identifying information. Once the book is released, this information (normally) cannot be changed.</p> +<p class="item"><b>D.</b> You may also enter a description, genre classification, and other information that will help people find your book by browsing, and help to sell your book. This information can usually be changed at a later date.</p> +<p class="item" style="position:relative"><b>E.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> The ISBN refers to your <em>printed book</em>, not to the PDF file. You are not selling copies of the PDF.</p> +<div style="clear:both"></div> </div><!-- end 3.1.1 --> <h4 id="h3.1.2">3.1.2. Printed Metadata</h4> <div class="d4" id="d3.1.2"> -<p class="noindent"><img class="floatright" src="html-resources/megatitlepagesm.png" width="165" height="256" alt="printed metadata, cover page"/> <em>Printed Metadata</em> refers to the information that can be seen on paper, in expected places: the book cover, the title page, and the copyright page. Whether your book was printed from a PDF file, or by some other method, is not relevant.</p> -<p>Your print service will insist that the title, subtitle (if any), author, and ISBN in these places exactly match what appears in the ISBN database. Of course, you can (and usually will) use styling or images to make the Printed Metadata more attractive than the plain-text ISBN Metadata.</p> -<p>Some print services may object to artwork that is too fancy, on the grounds that it is difficult to discern the title and author. Although this is very unlikely, it is better to ask before committing resources.</p> +<p class="item"><b>A.</b> <em>Printed Metadata</em> refers to the information that can be seen on paper, in expected places: the book cover, the title page, and the copyright page.</p> +<p class="item"><img class="floatright" src="html-resources/megatitlepagesm.png" width="165" height="256" alt="printed metadata, cover page"/><b>B.</b> Whether your book was printed from a PDF file, or by some other method, is not relevant.</p> +<p class="item"><b>C.</b> Your print service will insist that the title, subtitle (if any), author, and ISBN in these places exactly match what appears in the ISBN database. Of course, you can (and usually will) use styling or images to make the Printed Metadata more attractive than the plain-text ISBN Metadata.</p> +<p class="item"><b>D.</b> Some print services may object to artwork that is too fancy, on the grounds that it is difficult to discern the title and author. Although this is very unlikely, it is better to ask before committing resources.</p> +<div style="clear:both"></div> </div><!-- end 3.1.2 --> <h4 id="h3.1.3">3.1.3. File Data (PDF Metadata)</h4> <div class="d4" id="d3.1.3"> -<p class="noindent"><img class="floatright" src="html-resources/megadocprops.png" width="298" height="215" alt="PDF metadata"/> When your PDF file is produced, internal metadata will be automatically created for the benefit of PDF reader software. <em>To avoid confusion, this documentation uses the term "File Data" to mean this internal PDF metadata.</em> You can see some of the File Data when you open the PDF in any reader, and go to File>Properties. To see all of it, you need professional software (such as Adobe Acrobat Pro).</p> -<p>Be sure to read the rules for File Data, below. Some of it is generic, and some is particular to TeX or to the <i>novel</i> class.</p> +<p class="item"><b>A.</b> Your PDF has internal metadata, which can been seen by PDF reader software.</p> +<p class="item"><img class="floatright" src="html-resources/megadocprops.png" width="298" height="215" alt="PDF metadata"/><b>B.</b> To avoid confusion, this documentation uses the term <i>File Data</i> to mean this internal PDF Metadata.</p> +<p class="item"><b>C.</b> You can see some of the File Data when you open the PDF in any reader, and go to <i>File>Properties</i>. To see all of it, you need professional software (such as Adobe Acrobat Pro).</p> +<p class="item" style="position:relative"><b>D.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Be sure to read the rules for File Data, below. Some of it is generic, and some is particular to TeX or to the <i>novel</i> class.</p> +<div style="clear:both"></div> </div><!-- end 3.1.3 --> </div><!-- end 3.1 --> <h3 id="h3.2">3.2. Rules for File Data</h3> <div class="d3" id="d3.2"> -<p class="noindent">File Data must conform to several specifications, in terms of what you may or may not write. Some of the limitations are imposed by the book distribution industry, which stores information in its databases a certain way.</p> +<p class="item">File Data must conform to several specifications, in terms of what you may or may not write. Some of the limitations are imposed by the book distribution industry, which stores information in its databases a certain way.</p> +<p>What File Data do you need, if any? Ask your print service.</p> <h4 id="h3.2.1">3.2.1. Required, Prohibited, Optional?</h4> <div class="d4" id="d3.2.1"> -<p class="noindent">If PDF/X compliance is required, then you <em>must</em> at least set the title in File Data, using the <code>\SetTitle</code> command. Note that this title is not styled in any way.</p> -<p>Some print services require a minimum amount of file data, particularly title and author, which must match the printed metadata and ISBN metadata for these fields. Other services may require that the book's ISBN number, with something like <i>_text</i> added, be used in place of the title (remember that underscore is a special character in LaTeX, so it must be preceded by a backslash). You will have to communicate with your service, and determine their requirements.</p> -<p>Many print services do not care about File Data, one way or the other. Your PDF is passed through production according to its file name, not its internals. In such a case, assume that title and author are required.</p> -<p>Caution: Be sure that any included images are stripped of their own image metadata. The procedure is described on farther along in this documentation.</p> +<p class="item"><b>A.</b> If PDF/X compliance is required, then you <em>must</em> at least set the title in File Data, using the <code><a href="#h3.3.1">\SetTitle</a></code> command. Note that this title is not styled in any way.</p> +<p class="item"><b>B.</b> Some print services require a minimum amount of file data, particularly title and author, which must match the printed metadata and ISBN metadata for these fields.</p> +<p class="item"><b>C.</b> Other services may require that the book's ISBN number, with something like <i>_text</i> added, be used in place of the title. Remember that underscore is a special character in LaTeX, so it must be preceded by a backslash.</p> +<p class="item"><b>D.</b> Many print services do not care about File Data, one way or the other. Your PDF is passed through production according to its file name, not its internals. In such a case, assume that title and author are required.</p> +<p class="item" style="position:relative"><b>E.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Be sure that any included images are stripped of their own image metadata, such as EXIF. The procedure is described in <i>novel-scripts</i>.</p> </div><!-- end 3.2.1 --> <h4 id="h3.2.2">3.2.2. Limited to Latin-1?</h4> <div class="d4" id="d3.2.2"> -<p class="noindent">At least in the USA, your print service may require that File Data be limited to characters in the Latin-1 set. This is because their production and distribution software uses Latin-1 for the database. Note that Latin-1 does not include curly quotes or em dash. You will still be using utf-8 encoding in your document files, but your choice of characters is restricted.</p> -<p>If it were not for the database limitation to Latin-1, you could give your book a Greek or Cyrillic title, because <i>novel</i> can do it, and so can the PDF.</p> -<p>If your book has File Data using quotes, then use the special commands <code>\straightquote{}</code> and <code>\straightdblquote{}</code>. Be sure to use the braces, so that you don't have to worry about gobbled space. When you use these commands instead of typing <code>'</code> or <code>"</code> you eliminate the risk that your software will automatically convert them to the forbidden curly quotes. Example title:</p> +<p class="item"><b>A.</b> At least in the USA, your print service may require that File Data be limited to characters in the Latin-1 set. This is because their production and distribution software uses Latin-1 for the database.</p> +<p class="item"><b>B.</b> Latin-1 does not include curly quotes or em dash. You will still be using utf-8 encoding in your document files, but your choice of characters is restricted.</p> +<p class="item"><b>C.</b> <i>Novel</i> allows the title, and other File Data, to be in alphabets such as Greek or Cyrillic. If you are limited to Latin-1, the limitation has nothing to do with TeX or PDF.</p> +<p class="item"><b>D.</b> If your book has File Data using quotes, then use the special commands <code>\straightquote{}</code> and <code>\straightdblquote{}</code>. Be sure to use the braces, so that you don't have to worry about gobbled space. When you use these commands, you eliminate the risk that your software will automatically convert them to the forbidden curly quotes. Example:</p> <p class="code"><code>\SetTitle{That\straightquote{}s Amore} % That's Amore</code></p> -<p>If you are limited to Latin-1 in File Data, you can still use curly quotes and em dash on the cover and title page, and in headings. In <i>novel</i> there is no <code>\maketitle</code> command, so you may (and should) apply styling to the printed title, even though the File Data title cannot be styled.</p> +<p class="item"><b>E.</b> If you are limited to Latin-1 in File Data, you can still use curly quotes and em dash on the cover and title page, and in headings.</p> +<p class="item" style="position:relative"><b>F.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> There is no <code>\maketitle</code> command in <i>novel</i>. You may (and should) apply styling to the printed title, even though the File Data title cannot be styled.</p> </div><!-- end 3.2.2 --> <h4 id="h3.2.3">3.2.3. TeX escapes</h4> <div class="d4" id="d3.2.3"> -<p class="noindent">In File Data, you must obey the same TeX rules that apply everywhere: Certain characters have special meaning, and must be preceded by a backslash, if you wish to use them as ordinary characters. These are:</p> -<p><code># $ % & _ { }</code> (hash, dollar, percent, ampersand, underscore, left and right curly brackets)</p> +<p class="item"><b>A.</b> In File Data, you must obey the same TeX rules that apply everywhere: Certain characters have special meaning, and must be preceded by a backslash, if you wish to use them as ordinary characters.</p> +<p class="item"><b>B.</b> The list of special characters:</p> +<p><code># $ % & _</code> (hash, dollar, percent, ampersand, underscore)</p> <p>Example: The title <em>Doing 9% & Gone</em> is coded:</p> <p class="code"><code>\SetTitle{Doing 9\% \& Gone}</code></p> -<p>The above characters are rarely needed in File Data. Sometimes they must be spelled out, in order to agree with your book's ISBN Metadata. For example, you may need to write "and" rather than the ampersand.</p> +<p class="item"><b>C.</b> The above characters are rarely needed in File Data. Sometimes they must be spelled out, in order to agree with your book's ISBN Metadata. For example, you may need to write "and" rather than the ampersand, "dollar" rather than the dollar symbol, and "percent" or "per-cent" rather than the percent symbol.</p> +<p class="item"><b>D.</b> Fun fact: <i>The Seven-Per-Cent Solution</i> and <i>The 7% Solution</i> are different books, in entirely different gnres.</p> + </div><!-- end 3.2.3 --> <h4 id="h3.2.4">3.2.4. Forbidden Characters</h4> <div class="d4" id="d3.2.4"> -<p class="noindent">• Do not use the backslash <code>\</code> except as described above.</p> -<p class="noindent">• Do not use the tilde <code>~</code> or the circumflex <code>^</code>.</p> -<p class="noindent">• Do not use TeX code, such as <code>\`e</code> for e with grave; instead paste <code>è</code> directly from a character map.</p> -<p class="noindent">• Do not use styling, such as <code>{\small text}</code> or <code>\textit{text}</code>.</p> -<p class="noindent">• Use only <code>\straightquote{}</code> and <code>\straightdblquote{}</code> if necessary, not TeX code for apostrophe or quote.</p> -<p class="noindent">• Do not use multiple hyphens to create longer dashes. Do not use em dash or en dash.</p> +<p class="item"><b>A.</b> Do not use the backslash <code>\</code> except as described above.</p> +<p class="item"><b>B.</b> Do not use the tilde <code>~</code> or the circumflex <code>^</code>.</p> +<p class="item"><b>C.</b> Do not use TeX code, such as <code>\`e</code> for e with grave; instead paste <code>è</code> directly from a character map.</p> +<p class="item"><b>D.</b> Do not use styling, such as <code>{\small text}</code> or <code>\textit{text}</code>.</p> +<p class="item"><b>E.</b> If necessary, use <code>\straightquote{}</code> and <code>\straightdblquote{}</code>. Do not use TeX code for apostrophe or quote.</p> +<p class="item"><b>F.</b> Do not use multiple hyphens to create longer dashes. Do not use em dash or en dash.</p> </div><!-- end 3.2.4 --> </div><!-- end 3.2 --> @@ -880,88 +875,126 @@ function closeall() { <h4 id="h3.3.1">3.3.1. <code>\SetTitle{<em>text</em>}</code></h4> <div class="d4" id="d3.3.1"> -<p class="noindent">If you do not use the <code>\SetTitle{}</code> command, or leave it empty or blank, then the resulting PDF cannot comply with PDF/X standards. In <i>very rare</i> cases, that is desirable.</p> -<p>This information is not automatically transferred to your book's title page. It will be used as default in certain page heading styles, but you can over-ride it. The information can be retrieved as <code>\theTitle</code> anywhere in your document.</p> +<p class="item"><b>A.</b> The <i>novel</i> document class does not have <code>\maketitle</code>. The title is <i>not</i> automatically transferred to a title page, because there is no automatic title page.</p> +<p class="item"><b>B.</b> The title can be retrieved as <code>\theTitle</code> anywhere in your document.</p> +<p class="item"><b>C.</b> In certain page layouts, the title is used as default text in recto page headings. You may <a href="#h4.3.4.6">over-ride</a> this behavior.</p> +<p class="item" style="position:relative"><b>D.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> You may set the title as empty (or blank space). In <i>very rare</i> cases, that is useful. However, if you do that, then you must follow <code>\SetTitle{}</code> with <code>\SetPDFX{off}</code>, or an error will result. This is because PDF/X standards require a real title.</p> </div><!-- end 3.3.1 --> <h4 id="h3.3.2">3.3.2. <code>\SetAuthor{<em>text</em>}</code></h4> <div class="d4" id="d3.3.2"> -<p class="noindent">This information is not automatically transferred to your book's title page. It will be used as default in certain page heading styles, but you can over-ride it. The information can be retrieved as <code>\theAuthor</code> anywhere in your document.</p> -<p>Use the name as it is spoken. Correct: Mary Smith. Incorrect: Smith, Mary. Possibly correct, if true: Mary Smith, Ph. D. (ask your print service).</p> +<p class="item"><b>A.</b> The default author is empty (no author).</p> +<p class="item"><b>B.</b> In certain page layouts, the author is used as default text in verso page headings. You may <a href="#h4.3.4.6">over-ride</a> this behavior.</p> +<p class="item"><b>C.</b> The author can be retrieved as <code>\theAuthor</code> anywhere in your document.</p> +<p class="item"><b>D.</b> If in doubt, use the name as it is spoken. <i>Correct:</i> Mary Smith. <i>Incorrect:</i> Smith, Mary. <i>Possibly correct, if true:</i> Mary Smith, Ph. D.</p> +<p class="item"><b>E.</b> Your PDF file is <i>not</i> seen by a public database. Instead, the public database contains the <a href="#h3.1.1">information you entered</a>, when you obtained the ISBN. So, if you have multiple authors or minor contributors, that is the place to provide search information.</p> +<p class="item"><b>F.</b> Ask your print service about how to enter multiple authors, and how to display them in print. Do not assume that authorship rules pertaining to academic papers will also apply to your novel.</p> +<p class="item" style="position:relative"><b>G.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Print-On-Demand services do not like to split royalty payments among multiple authors. Instead, the entire account is the responsibility of one main author or editor.</p> +<p>If anyone else is involved, that is a matter of private contract betwen the one main author/editor, and any other contributors. The print service neither knows nor cares about such agreements, and will do nothing to cooperate.</p> +<p>[DISCLAIMER] Here is my amateur advice: Consider using other contributors on a <i><span style="white-space:nowrap">work-for-hire</span></i> basis. This involves a written contract, prior payment of a fixed amount that does not depend on sales, and no grant of rights. You also need written assurance that the hired persons have the right to sell you the work they provide. If you need professional advice, then consult a professional.</p> </div><!-- end 3.3.2 --> <h4 id="h3.3.3">3.3.3. <code>\SetSubtitle{<em>text</em>}</code></h4> <div class="d4" id="d3.3.3"> -<p class="noindent">There is no file data for subtitle! The only reason for using this command is if you wish to later retrieve the information as <code>\theSubtitle</code> in your document.</p> +<p class="item"><b>A.</b> The subtitle can be retrieved as <code>\theSubtitle</code> anywhere in your document.</p> +<p class="item"><b>B.</b> The subtitle does <i>not</i> appear in File Data, and does <i>not</i> appear anywhere in your book, unless you manually write it there (either manually, or via <code>\theSubtitle</code>.</p> +<p class="item"><b>C.</b> If you want the subtitle to appear in File Data, manually include it via <code>\SetTitle</code>. Example:</p> +<p class="code"><code>\SetTitle{Megabarf: The Green Plague of London}</code></p> +<p>Then, you may need to <a href="#h4.3.4.6">adjust page headings</a> so that only the main title appears.</p> +<p class="item" style="position:relative"><b>D.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Usually, there is no benefit to including the subtitle in File Data. The search database does not read your PDF. It reads the information you entered as <a href="#h3.1.1">ISBN Metadata</a>, which does have an entry for subtitle.</p> </div><!-- end 3.3.3 --> <h4 id="h3.3.4">3.3.4 Advanced: <code>\SetApplication{<em>text</em>}</code> and <code>\SetProducer{<em>text</em>}</code></h4> <div class="d4" id="d3.3.4"> -<p class="noindent">The <i>Application</i>, also known as <i>CreatorTool</i>, is the program used to create your source document. Text editors, word processors, and page layout programs are the most common Applications (not specific to TeX). The PDF <i>Producer</i> is the program that converts the source document to PDF. In many cases, the Producer is a back-end, directly linked to the Application.</p> -<p>These details are automatically created when you compile your document, without any input from you. However, if you have the need to provide a custom text string for the Application or Producer, these commands will do it.</p> +<p class="item"><b>A.</b> The <i>Application</i>, also known as <i>CreatorTool</i>, is the program used to create your source document. Text editors, word processors, and page layout programs are the most common Applications (not specific to TeX).</p> +<p class="item"><b>B.</b> The PDF <i>Producer</i> is the program that converts the source document to PDF. In many cases, the Producer is a back-end, directly linked to the Application.</p> +<p class="item"><b>C.</b> These details are automatically created when you compile your document, without any input from you. However, if you have the need to provide a custom text string for the Application or Producer, these commands will do it.</p> </div><!-- end 3.3.4 --> </div><!-- end 3.3 --> <h3 id="h3.4">3.4. PDF/X</h3> <div class="d3" id="d3.4"> -<p class="noindent">Commercial printers are very likely to require PDF/X compliance. This ensures that your PDF meets a variety of criteria, by containing those things it must contain, and omitting those things it must not contain. Most perfectly valid PDF files are <em>not</em> PDF/X compliant, simply because they are not intended for commercial printing.</p> +<p class="item"><b>A.</b> Commercial printers are very likely to require PDF/X compliance. This ensures that your PDF meets a variety of criteria, by containing those things it must contain, and omitting those things it must not contain.</p> +<p class="item"><b>B.</b> Most perfectly valid PDF files are <em>not</em> PDF/X compliant, simply because they are not intended for commercial printing.</p> +<p class="item"><b>C.</b> To set PDF/X compliance, use this command in Preamble:</p> <p class="code"><code>\SetPDFX[<em>OutputIntent</em>]{<em>ComplianceStandard</em>}</code> and starred version</p> -<p>If the <code>\SetPDFX</code> command is not used, it is <i>off</i> by default. Note that a non-compliant file is not a defective file! It complies with PDF standards, but not PDF/X standards. Some print services insist on PDF/X, and others don't care as long as the fonts are embedded (which they always are).</p> +<p class="item" style="position:relative"><b>D.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> A non-PDF/X file is not a defective file! It complies with PDF standards, but not PDF/X standards. Some print services insist on PDF/X. Others don't care, as long as the fonts are embedded (which they always are).</p> +<p class="item" style="position:relative"><b>E.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Some document class options are not used for final print production. When you use these options, PDF/X will be temporarily turned <i>off</i>, regardless of your setting.</p> <h4 id="h3.4.1">3.4.1. Compliance Standards</h4> <div class="d4" id="d3.4.1"> -<p class="noindent">The following choices are available:</p> -<p><code>X-1a:2001</code></p> +<p class="item"><b>A.</b> The following choices are available:</p> +<p><code>X-1a:2001</code> (default)</p> <p><code>X-1a:2003</code></p> <p><code>X-3:2002</code></p> <p><code>X-3:2003</code></p> -<p><code>off</code> (default)</p> -<p>The first of these is the one that is most widely accepted in commercial printing. Anything meeting X-1a:2001 necessarily meets the other standards. If your book involved complicated color artwork, then the correct choice might be crucial. But for a black and white book block, <span style="white-space:nowrap">X-1a:2001</span> is the preferred choice unless your print service says otherwise.</p> +<p><code>off</code></p> +<p class="item"><b>B.</b> The first of these is the one that is most widely accepted in commercial printing. Anything meeting X-1a:2001 necessarily meets the other standards.</p> +<p class="item"><b>C.</b> If your book involved complicated color artwork, then the correct choice might be crucial. But for a black and white book block, <span style="white-space:nowrap">X-1a:2001</span> is the preferred choice, unless your print service says otherwise.</p> </div><!-- end 3.4.1 --> <h4 id="h3.4.2">3.4.2. Output Intent</h4> <div class="d4" id="d3.4.2"> -<p class="noindent">Unless compliance is <i>off</i>, an Output Intent is always required. However, <i>novel</i> treats this as an optional argument, because it will automatically use <i>CGATSTR001</i> as default Output Intent.</p> -<p>Output Intent informs the printer that you "intend" your PDF to be printed according to certain printer capabilities. If you took the trouble to soft-proof your PDF on a color-calibrated monitor using color-managed software, and if the printer's capabilities actually correspond to the intent, then the printed result will closely match what you expected. This is very important in commercial color printing (such as for cover artwork), but nearly irrelevant for a black and white book block. Nevertheless, an Output Intent is required to meet PDF/X compliance.</p> +<p class="item"><b>A.</b> Output Intent informs the printer that you "intend" your PDF to be printed according to certain technical capabilities, particularly regarding color.</p> +<p class="item"><b>B.</b> If your are using color-managed workflow with a calibrated monitor and color profile, and if the actual printer matches your intent, then you can expect accurate printed colors within the technical limits.</p> +<p class="item"><b>C.</b> If the intended printer does not match the actual printer, there are three possible results: (1) The file will still be printed, but colors may be inaccurate. Home and office printers do this routinely. (2) If the printer is very advanced, it will adjust its properties to emulate the intended printer. (3) The printer may reject the print job, because it knows that it cannot produce the intended results.</p> +<p class="item"><b>D.</b> The above considerations are very important for glossy fashion magazines, somewhat important for color book covers, and unimportant for non-color book text. Nevertheless, an Output Intent is required to meet PDF/X compliance, even when it does not matter.</p> +<p class="item"><b>E.</b> The Output Intent is an optional argument to <code>\SetPDFX</code>, because a default will be used when the Intent is not specified.</p> </div><!-- end 3.4.2 --> <h4 id="h3.4.3">3.4.3. Built-in Output Intent Codes</h4> <div class="d4" id="d3.4.3"> -<p class="noindent">There are three pre-defined choices:</p> -<p><code>CGATSTR001</code> (default)</p> +<p class="item"><b>A.</b> There are three pre-defined choices for Output Intent:</p> +<p><code>CGATS TR 001</code> (default) (can also use CGATSTR001)</p> <p><code>FOGRA39</code></p> <p><code>JC200103</code></p> -<p>The first of these, more properly named "CGATS TR 001" with spaces, is also known as "US Web Coated SWOP v2" in the USA, and is the most commonly-used American print standard for this kind of book. The second is widely used in Europe, the third in Japan.</p> +<p class="item"><b>B.</b> The first of these is known as "US Web Coated SWOP v2" in the USA, and is the most commonly-used American print standard for this kind of book.</p> +<p class="item"><b>C.</b> The second is widely used in Europe, the third in Japan.</p> </div><!-- end 3.4.3 --> -<h4 id="h3.4.4"> -3.4.4. Other Output Intents</h4><div class="d4" id="d3.4.4"> -<p class="noindent">If you are required to use an Output Intent that is not one of the above three, then you have to code it yourself. Have a look at the three pre-configured Output Intents (files <span style="white-space:nowrap"><i>novel-CGATSTR001.clo</i></span>, <span style="white-space:nowrap"><i>novel-FOGRA39.clo</i></span>, and <span style="white-space:nowrap"><i>novel-JC200103.clo</i>).</span> Instructions are inside the files. There are several places where you can find the necessary data; the most comprehensive is at the <a class="external" rel="external" target="new" href="http://www.color.org/index.xalter">International Color Consortium</a>.</p> -<p>In essence: If you create a custom Output Intent file named <span style="white-space:nowrap"><em>novel-MyFunkyPrinter.clo</em></span>, then you request <i>MyFunkyPrinter</i> (without the preceding <i>novel-</i> or the <i>.clo</i> extension) as Output Intent, and that file will be loaded.</p> +<h4 id="h3.4.4">3.4.4. Other Output Intents</h4><div class="d4" id="d3.4.4"> +<p class="item"><b>A.</b> If you are required to use an Output Intent that is not one of the above three, then you have to code it yourself.</p> +<p class="item"><b>B.</b> In a place where TeX can find it, create a plain text file with its file name in the following format:</p> +<p class="code">File name begins with <code>novel-</code> (note the hyphen).</p> +<p class="code">No spaces or underscores in file name, no matter what the Intent.</p> +<p class="code">File extension is <code>.clo</code></p> +<p class="item"><b>C.</b> Example valid file name: <code>novel-YourIntent.clo</code>.</p> +<p class="code">The above file is loaded using <code>\SetPDFX[YourIntent]{<em>compliance</em>}</code>.</p> +<p class="item"><b>D.</b> The file contains (up to) five <code>\gdef</code> commands. The <code>\@OIidentifier</code> is called "reference name" by some authorities. Here is the code used for <code>CGATS TR 001</code>:</p>: +<div style="margin:0px 16px 0px 16px; background: #dddddd none"> +<p class="code"><code>\gdef\@OIidentifier{CGATS TR 001}</code></p> +<p class="code"><code>\gdef\@OIcondition{SWOP (Publication) printing in USA (Printing process definition: ANSI CGATS.6).}</code></p> +<p class="code"><code>\gdef\@OIinfo{U.S. Web Coated (SWOP) v2}</code></p> +<p class="code"><code>\gdef\@OIregistry{http://www.color.org}</code></p> +<p class="code"><code>\gdef\@OIprofile{USWebCoatedSWOP.icc}</code></p> +</div> +<p class="item"><b>E.</b> If the data contains any TeX special characters, such as underscore, percent, ampersand, or number sign, they must be escaped using a backslash.</p> +<p class="item"><b>F.</b> The necessary data may be provided by your print service, or perhaps can be found at resources such as the <a href="http://color.org/registry/index.xalter" rel="external" class="external" target="new">International Color Consortium</a>. Alas, this source (and others) do not make it easy to discern the data.</p> +<p class="item"><b>G.</b> Another place to look for Output Intent data is in your (texmf)/tex/latex/pdfx folder. This will be in your TeX system if package <i>pdfx</i> is installed (but do not load this package into <i>novel</i> class). Files <i>AdobeColorProfiles.tex</i> and <i>AdobeExternalProfiles.tex</i> contain code prepared by the author of the <i>pdfx</i> package. The macro names are not the same, but they are easy to decode: <code>\@OIidentifer</code> is <i>/OutputConditionIdentifier</i>; <code>\@OIcondition</code> is <i>/ProfileName</i>; <code>\@OIinfo</code> is <i>/OutputCondition</i>; <code>\@OIregistry</code> is <i>/RegistryName</i>; and <code>\@OIprofile</code> follows <i>\setCMYKcolorprofile</i>.</p> </div><!-- end 3.4.4 --> -<h4 id="h3.4.5"> -3.4.5. Whether or Not to Embed *.icc</h4><div class="d4" id="d3.4.5"> -<p class="noindent">Each Output Intent has a corresponding color profile, in the form of a file with extension <i>*.icc</i>.</p> -<p>You usually do not need it. In fact, unless your print service specifically asks you to embed the file, <i>don't do it</i>. When you use <code>\SetPDFX</code> in its un-starred form, the *.icc file will not be embedded.</p> -<p>If your print service demands that you embed the *.icc color profile, then use <code>\SetPDFX*</code> (with the asterisk).</p> -<p>Repeat: Do not embed the *.icc color profile unless specifically requested by your print service.</p> -<p>• If your printer requests "US Web Coated SWOP v2" and, as usual, requests that you <em>not</em> embed the corresponding *.icc color profile, then some software will read the Output Intent as "CGATS TR 001" instead of "US Web Coated SWOP v2". They are identical. But not everyone knows that.</p> +<h4 id="h3.4.5">3.4.5. Whether or Not to Embed *.icc</h4><div class="d4" id="d3.4.5"> +<p class="item"><b>A.</b> Each Output Intent has a color profile, in the form of a file with extension <i>*.icc</i>.</p> +<p class="item"><b>B.</b> You usually do not need the color profile, because the printer knows which profile corresponds with which standard Output Intent code.</p> +<p class="item"><b>C.</b> When you use <code>\SetPDFX</code> in its un-starred form, the *.icc color profile will not be embedded in the PDF. This is the normal situation.</p> +<p class="item"><b>D.</b> If your print service demands that you embed the *.icc color profile, then use <code>\SetPDFX*</code> (with the asterisk). You must have the actual *.icc file available where TeX can find it.</p> +<p class="item" style="position:relative"><b>E.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Do not embed the *.icc color profile unless specifically requested by your print service. If you embed it when you should not, the result may be worse!</p> +<p class="item" style="position:relative"><b>F.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> If your printer requests "US Web Coated SWOP v2" and, as usual, requests that you <em>not</em> embed the corresponding *.icc color profile, then some software will read the Output Intent as "CGATS TR 001" instead of "US Web Coated SWOP v2". They are identical.</p> </div><!-- end 3.4.5 --> -<h4 id="h3.4.6"> -3.4.6. Where to Find *.icc Files</h4><div class="d4" id="d3.4.6"> -<p class="noindent">You do not need an *.icc color profile unless you choose to embed it.</p> -<p>Although many *.icc files are freely available, they usually cannot be distributed within an open-source project. You might already have them in your system, wherever such files are stored. Note that TeX uses forward slash in file paths, not backslash, even if the platform is Windows:</p> +<h4 id="h3.4.6">3.4.6. Where to Find *.icc Files</h4><div class="d4" id="d3.4.6"> +<p class="item"><b>A.</b> You do not need an *.icc color profile unless you choose to embed it.</p> +<p class="item"><b>B.</b> Although many *.icc color profiles are freely available, they usually cannot be distributed within an open-source project. You might already have them in your system, wherever such files are stored. Note that TeX uses forward slash in file paths, not backslash, even if the platform is Windows:</p> <p class="isolate"> -Windows: <code>C:/Windows/System32/spool/drivers/color/</code> [older Windows: system32 instead of System32]<br/> +Windows: <code>C:/Windows/System32/spool/drivers/color/</code><br/> Linux: <code>/usr/share/color</code> or hidden <code>~/.local/share/icc/</code> or other places<br/> OSX: <code>/Library/Colorsync/Profiles/</code> or hidden <code>(username)/Library/Colorsync/Profiles/</code> </p> -<p>If you do not have the files, look on the Internet <a href="https://www.adobe.com/support/downloads/iccprofiles/icc_eula_win_end.html" target="new">here</a> and <a href="http://www.color.org/profiles.xalter" target="new">here</a>. These links also have many other profiles, beyond the basic three. In a few cases, your print service may provide the necessary file.</p> -<p>You want printer profiles, usually CMYK. Don't worry about the files being "for Windows," as they are actually cross-platform.</p> -<p>If your system has the necessary <i>*.icc</i> file for your Output Intent, but <i>novel</i> cannot find it, then copy the file to the same folder as your TeX document.</p> -<p>Again: Do not embed the color profile unless the printer requests it.</p> +<p class="item"><b>C.</b> If you do not have a file you need, look on the Internet <a href="https://www.adobe.com/support/downloads/iccprofiles/icc_eula_win_end.html" target="new">here</a> and <a href="http://www.color.org/profiles.xalter" target="new">here</a>. These links also have many other profiles, beyond the basic three.</p> +<p class="item"><b>D.</b> In a few cases, your print service may provide the necessary *.icc file.</p> +<p class="item"><b>E.</b> You want <i>printer</i> profiles, usually CMYK. Don't worry about the files being "for Windows," as they are actually cross-platform.</p> +<p class="item"><b>F.</b> If your system has the necessary <i>*.icc</i> file for your Output Intent, but <i>novel</i> cannot find it, then copy the file to the same folder as your TeX document.</p> +<p class="item" style="position:relative"><b>G.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Again: Do not embed the color profile unless the printer requests embedding.</p> </div><!-- end 3.4.6 --> </div><!-- end 3.4 --> @@ -979,34 +1012,35 @@ OSX: <code>/Library/Colorsync/Profiles/</code> or hidden <code>(username)/Librar <h3 id="h4.1">4.1. Book Dimensions</h3> <div class="d3" id="d4.1"> -<h4 id="h4.1.1">4.1.1. Trim Size</h4> +<h4 id="h4.1.1">4.1.1. Trim Size and TrimBox</h4> <div class="d4" id="d4.1.1"> -<p class="noindent"><b>Trim Size</b> is the finished size of your book, width and height (but not thickness). In the case of softcover books, it is the exact size. In the case of hardcover books, where the cover is larger than the contents, it is (usually) the cover size that is measured, with the internal trim size being slightly smaller than nominal (some of the margins shaved away).</p> -<p>Your print service has a list of standard trim sizes. For fiction, you probably want creme (off-white) paper, which eliminates a few of the choices. Choice of size may also be limited by the distribution channels you choose.</p> -<p>Trim Size is set using this command in Preamble:</p> +<p class="noindent">Trim Size is globally set in Preamble:</p> <p class="code"><code>\SetTrimSize{<em>width</em>}{<em>height</em>}</code></p> <p>The width and height must have dimensions, such as <i>in</i> or <i>cm</i>.</p> -<p>If you do not specify the Trim Size, the default is <i>5.5in</i> wide, <i>8.5in</i> high. This is a widely-used "trade" size for softcover print-on-demand fiction in the U.S.A. If in doubt, leave the default.</p> -<p>Do not request a <em>mass-market paperback</em> Trim Size unless you really, truly, know what you are doing. Since you are not a major writer for a major publishing house, you don't know; so, don't do it.</p> +<p class="item"><img src="html-resources/trimsize.png" class="floatright" width="130" height="190" alt="Trim Size" title="Trim Size"/><b>A.</b> <b>Trim Size</b> is the finished size of your book, width and height (but not thickness). In the case of softcover books, it is the exact size.</p> +<p>In the case of hardcover books, where the cover is slightly larger than the pages, your print service will tell you whether they mean the cover size or the page size.</p> +<p class="item"><b>B.</b> PDF/X internally specifies the Trim Size as a rectangular <b>TrimBox</b>. This provides invisible instructions to an automated cutting machine, when the Trim Size is smaller than the actual paper sheet. You do not set the TrimBox yourself.</p> +<p class="item"><b>C.</b> Your print service has a list of standard trim sizes. For fiction, you probably want "creme" (off-white) paper, which eliminates a few of the choices. Choice of size may also be limited by the distribution channels.</p> +<p class="item"><b>D.</b> If you do not specify the Trim Size, the default is <i>5.5in</i> wide, <i>8.5in</i> high. This is a widely-used "trade" size for softcover print-on-demand fiction in the U.S.A. If in doubt, leave the default.</p> +<p class="item" style="position:relative"><b>E.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Do not request a <i>mass-market paperback</i> Trim Size unless you really, truly, know what you are doing. Since you are not a major writer for a major publishing house, you don't know; so, don't do it.</p> </div><!-- end 4.1.1 --> -<h4 id="h4.1.2">4.1.2. Media Size and TrimBox</h4> +<h4 id="h4.1.2">4.1.2. Media Size, MediaBox, Bleed, and BleedBox</h4> <div class="d4" id="d4.1.2"> -<p class="noindent">In PDF terminology, <b>Media Size</b> is the size of the PDF page. By default, it is identical to the Trim Size.</p> -<p>Some print services insist that the Trim Size be floated in a larger Media Size, which is likely to be U.S. Letter or A4 paper. This quietly happens when you print at home: The printout is at tray paper size, whether you like it or not.</p> -<p><img class="floatright" src="html-resources/mediasize.png" width="202" height="264" title="Trim Size floated in larger Media Size" alt="Trim Size floated in larger Media Size"/>This is illustrated at right, where the Trim Size (green border) is centered in a larger PDF Media Size. The green border, known as the <b>TrimBox</b> is invisible, and does not print. Anything outside the green border does not appear when the book is finished.</p> -<p>If you are required to float the Trim Size in a larger Media Size, here is the command in Preamble:</p> -<p class="code"><code>\SetMediaSize[<em>alignment</em>]{<em>width</em>}{<em>height</em>}</code></p> -<p>If the optional <i>alignment</i> is set to <i>edge</i> then the Trim Size will be placed at the edge of the Media Size, rather than vertically and horizontally centered.</p> -<p>Again: You usually will <i>not</i> set Media Size manually.</p> +<p class="noindent"><b>PDF page size</b> is known as <b>Media Size</b>, defined by an invisible <b>MediaBox</b> in PDF internal code. It is known as <b>paperwidth</b> and <b>paperheight</b> in TeX terminology.</p> +<p class="item"><b>A.</b> For cover artwork, the PDF page size <i>must</i> be larger than the artwork <a href="#h4.1.1">Trim Size</a>, so that the image can <b>bleed</b> outside the <a href="#h4.1.1">TrimBox</a>. Use this command in Preamble:</p> +<p class="code"><code>\SetMediaSize{<i>width</i>}{<i>height</i>}</code></p> +<p>This will center the Trim Size in the larger Media Size.</p> +<p class="item"><b>B.</b> Generally, the American standard is 0.125in bleed on all four sides of the cover image; metric nations may use 3mm. Then, the Media Size would be 0.25in (or 6mm) larger than Trim Size in both dimensions.</p> +<p class="item"><b>C.</b> <b>Example:</b> Suppose that the Trim Size of your book is 5.5in wide x 8.5in high. Based on the number of pages, its spine width is 0.6in.</p> +<p>Then, the Trim Width of the (Perfect Print) cover will be 5.5in + 0.6in + 5.5in = 11.6in. The Trim Height is 8.5in.</p> +<p>If you are required to provide 0.125in bleed on all four sides, the Media Width is 0.125in + 11.6in + 0.125in = 11.85in. The Media Height is 0.125in + 8.5in + 0.125in = 8.75in. The commands:</p> +<p class="code"><code>\SetTrimSize{11.6in}{8.5in}</code></p> +<p class="code"><code>\SetMediaSize{11.85in}{8.75in}</code></p> +<p class="item"><b>D.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> If you fail to use <code>\SetMediaSize</code> with <code>coverart</code>, or choose surprising values, then you will get an error or warning from <i>novel</i>.</p> +<p class="item"><b>E.</b> For the interior book block, almost all P.O.D. services require that the PDF page size be identical to the <a href="#h4.1.1">Trim Size</a>. This is done automatically. You do not use <code>\SetMediaSize</code>.</p> +<p class="item"><b>F.</b> In rare cases, a P.O.D. service will ask you to float the interior book block in a larger, standard paper size. You may use <code>\SetMediaSize</code> for this purpose. The <i>novel</i> class does not support interior bleed, so when you are not using <code>coverart</code> mode, no BleedBox is set.</p> </div><!-- end 4.1.2 --> - -<h4 id="h4.1.3">4.1.3. Advanced: <code>\SetCropmarkGap{<em>length</em>}</code></h4> -<div class="d4" id="d4.1.3"> -<p class="noindent"><img class="floatright" src="html-resources/cropmarkgap.png" width="140" height="141" alt="media size larger than trim size"/> This command is only effective if you use the <i>cropmarks</i> class option, as described in <a href="#h2.4">section 2.4</a>. Note that user-provided cropmarks are <em>very unusual</em> in the print-on demand market. <i>Do not use them</i> unless your print service specifically requests them. The built-in cropmark capability is very elementary, and cannot be easily enhanced by adding other LaTeX packages.</p> -<p>In the accompanying image with cropmarks, a corner of the Trim Size is at lower right. The invisible TrimBox has been drawn with a green line. The cropmark gap is G.</p> -<p>Default gap is <i>0.125in</i>.</p> -</div><!-- end 4.1.3 --> </div><!-- end 4.1 --> <h3 id="h4.2">4.2. Fonts and Normal Font Size</h3> @@ -1014,61 +1048,56 @@ OSX: <code>/Library/Colorsync/Profiles/</code> or hidden <code>(username)/Librar <h4 id="h4.2.1">4.2.1. Parent (Main) Font and Size</h4> <div class="d4" id="d4.2.1"> -<p class="noindent">The <i>novel</i> class has its own way of specifying the main font. You do <i>not</i> write <code>\usepackage{fontname}</code> or <code>\RequirePackage{fontname}</code>. If you do that, then a warning or error will result, and in any case the font you get won't be the one you were expecting.</p> -<p>Choose only Open Type or TrueType fonts, not the ancient Type 1 (PostScript) or Metafonts. The font you choose does not have to be part of any TeX package, because you do not need any <i>*.sty</i> file or TeX metrics. All of that is built into the font itself. This is thanks to <i>LuaLaTeX</i> and the built-in <i>fontspec</i> package.</p> +<p class="item"><b>A.</b> In <i>novel</i> you do not directly set the main font (also known as <i>roman default</i>). Instead, you set a parent font, from which the main font is derived.</p> +<p class="item"><b>B.</b> The default parent font is <i>Libertinus Serif</i>, which is an updated branch of <i>Linux Libertine O</i>. You must install it as package <i>libertinus</i>.</p> +<p>Online services, such as ShareLaTeX, have <i>libertinus</i>.</p> +<p> If you do not have the Libertinus fonts, then <i>Latin Modern Roman</i> will be used as fallback. But LMR is not really suitable for use in printed fiction; it is allowed so that test documents can compile, until you choose a more suitable font.</p> +<p class="item"><b>C.</b> Choose only Open Type or TrueType fonts, not the ancient Type 1 (PostScript) or Metafonts. The font you choose does not have to be part of any TeX package, because you do not need any <i>*.sty</i> file or TeX metrics. All of that is built into the font itself. This is thanks to <i>LuaLaTeX</i> and the built-in <i>fontspec</i> package.</p> +<p class="item" style="position:relative"><b>D.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> You do <i>not</i> write <code>\usepackage{<i>fontname</i>}</code>, or <code>\RequirePackage{<i>fontname</i>}</code>, or <code>\setmainfont{<i>fontname</i>}</code>. If you do that, then a warning or error will result, and in any case the font you get won't be the one you were expecting.</p> <h5 id="h4.2.1.1">4.2.1.1. <code>\SetParentFont[<em>features</em>]{<em>fontname</em>}</code></h5> <div class="d5" id="d4.2.1.1"> -<p>In <i>novel</i> you set a parent font (<i>parentfont</i>), which is the ancestor of several pre-defined font styles, including the main text font. In Preamble:</p> +<p class="item"><b>A.</b> In <i>novel</i> you set a parent font, which is the ancestor of several pre-defined font styles, including the main font. In Preamble:</p> <p class="code"><code>\SetParentFont[<em>features</em>]{<em>fontname</em>}</code><p> -<p>The command uses <i>fontspec</i> syntax, which is reviewed in <a href="#hE">Appendix E</a>, and described in full detail by the <i>fontspec</i> package documentation.</p> -<p>When you use <code>\SetParentFont</code>, its features and fontname are stored as strings in macros <code>\parentfontfeatures</code> and <code>\parentfontname</code>. If you don't use <code>\SetParentFont</code> then the default values will be provided. In any case, you can use <code>\parentfontfeatures</code> and <code>\parentfontname</code> as arguments to other font commands.</p> -<p>IMPORTANT: In all font setting commands (<code>\SetParentFont</code> and others), you may <i>not</i> use a line break anywhere in the command. If you wish to break your code into multiple lines for ease of reading in the source document, be sure to use the percent symbol % at the end of each line, so that the line return character is nullified, like this:</p> -<p class="code"><code> -\SetParentFont[%<br/> -Feature=Setting,%<br/> -AnotherFeature=Setting,%<br/> -]{fontname} -</code></p> -<p><b>Don't be intimidated.</b> If you don't use this command, then <i>novel</i> will attempt to use <i>Libertinus Serif</i> as the parent font family. It carries the SIL Open Font License, and was carefully chosen for its suitability in free-flowing text, such as a novel. It is a recent fork of the <i>Linux Libertine O</i> font family, which will be used as second choice default if <i>Libertinus Serif</i> is not installed.</p> -<p>The last-choice default is <i>Latin Modern Roman</i>, which really is not suitable for novels; but surely your TeX installation has it.</p> -<p>If you have the proper license, you can use a commercial font. For example:</p> +<p class="item"><b>B.</b> The command uses <i>fontspec</i> syntax, which is reviewed in <a href="#hE">Appendix E</a>, and described in full detail by the <i>fontspec</i> package documentation.</p> +<p class="item"><b>C.</b> Whether you use <code>\SetParentFont</code> or accept the default, the features and fontname are stored as strings in macros <code>\parentfontfeatures</code> and <code>\parentfontname</code>. You may use <code>\parentfontfeatures</code> and <code>\parentfontname</code> as arguments to other font commands.</p> +<p class="item"><b>D.</b> If you have the proper license, you can use a commercial font. For example:</p> <p class="code"><code>\SetParentFont{Adobe Garamond Pro}</code></p> -<p><b>See how easy that is?</b> By default, <i>novel</i> will apply TeX Ligatures and Kerning to the <i>parentfont</i> and all its descendants. Common Ligatures and OldStyle numbers will be added for the main <i>textfont</i>. This is ideal for fiction.</p> - +<p>See how easy that is? By default, <i>novel</i> will apply TeX Ligatures and Kerning to the parent font and all its descendants. Common Ligatures and OldStyle numbers will be added for the main font. This is ideal for fiction.</p> </div><!-- end 4.2.1.1 --> <h5 id="h4.2.1.2">4.2.1.2. <code>\SetFontSize{<em>length</em>}</code></h5> <div class="d5" id="d4.2.1.2"> -<p class="noindent">In the <i>novel</i> document class, you do not set point size as a class option. Instead you use <code>\SetFontSize</code> in the Preamble. It applies to the parent (main) font, and is used as the basis for scaling font sizes.</p> -<p>The size may be any units TeX understands, including decimal values. So, <i>12.8bp</i> and <i>13.1pt</i> are acceptable. This is because you will be using scalable, Open Type and TrueType fonts throughout your document. They do not need TeX metrics.<p> -<p>If you insist on using ancient TeX fonts, then you may need to specify a convenient integer font size such as 11pt or 12pt. But why? Forget those fonts! Welcome to the Twenty-First Century.</p> -<p>The minimum normal font size is <i>8pt</i>, and the maximum is <i>18bp</i>. On a local basis, text may be larger or smaller than this.</p> -<p>If you do not use this command, the default font size will be set to <i>11.4pt</i> more or less. That is, the size is calculated from other layout settings. When there is less available text area, the default size is <i>11pt</i>. For larger books, the default is <i>12pt</i>.</p> -<p>Once you have set the Trim Size, margins, and parent font, set the font size for readability. Depending on whom you ask, each line of free-running text should average 60 to 66 characters (including spaces). If you use all of the <i>novel</i> default settings, including <i>Libertinus Serif</i> parent font, that's what you will get. But if you change anything, then do a test document to see what font size works best.</p> +<p class="item"><b>A.</b> In the <i>novel</i> document class, you do not set point size as a class option. Instead you use <code>\SetFontSize</code> in the Preamble. It applies to the parent (main) font, and is used as the basis for scaling font sizes.</p> +<p class="item"><b>B.</b> The size may be any units TeX understands, including decimal values. So, <i>12.8bp</i> and <i>13.1pt</i> are acceptable. This is because you will be using scalable, Open Type and TrueType fonts throughout your document. They do not need TeX metrics.<p> +<p class="item"><b>C.</b> If you insist on using ancient TeX fonts, then you may need to specify a convenient integer font size such as 11pt or 12pt. But why? Forget those fonts! Welcome to the Twenty-First Century.</p> +<p class="item"><b>D.</b> The minimum global font size is <i>8pt</i>, and the maximum is <i>18bp</i>. On a local basis, text may be larger or smaller than this.</p> +<p class="item"><b>E.</b> If you do not use <code>\SetFontSize</code>, the default will be <i>11.4pt</i> more or less. That is, the size is calculated from other layout settings. When there is less available text area, the default size is <i>11pt</i>. For larger books, the default is <i>12pt</i>.</p> +<p class="item"><b>F.</b> Once you have set the Trim Size, margins, and parent font, set the font size for readability. Depending on whom you ask, each line of free-running text should average 60 to 66 characters (including spaces). If you use all of the <i>novel</i> default settings, including <i>Libertinus Serif</i> parent font, that's what you will get. But if you change anything, then do a test document to see what font size works best.</p> </div><!-- end 4.2.1.2 --> </div><!-- end 4.2.1 --> -<h4 id="h4.2.2">4.2.2. Descendant Fonts: textfont, chapterfont, subchfont, headfont</h4> +<h4 id="h4.2.2">4.2.2. Descendant Fonts: main font, chapter font, subch font, head font</h4> <div class="d4" id="d4.2.2"> -<p class="noindent">The descendant fonts are automatically set, as variations of the parent font:</p> +<p class="item"><b>A.</b> The descendant fonts are automatically set, as variations of the <i>parent font</i>:</p> <p class="centerimg"><img src="html-resources/font-tree.png" width="600" height="177" title="font tree" alt="font tree"/></p> -<p>For example, the main <i>textfont</i> uses the parent font family. It has TeX Ligatures and Kerning (inherited from the parent font), and also Common Ligatures and OldStyle numbers. The main <i>textfont</i> is not configured directly. Instead, configure the <i>parentfont</i>, then the <i>textfont</i> (and other descendants) will obey. For example, if you don't want OldStyle numbers:</p> +<p>For example, the <i>main font</i> uses the <i>parent font</i> family. It has TeX Ligatures and Kerning (inherited from the <i>parent font</i>), and also Common Ligatures and OldStyle numbers.</p> +<p class="item"><b>B.</b> The <i>main font</i> is not configured directly. Instead, configure the <i>parent font</i>, then the <i>main font</i> (and other descendants) will obey. For example, if you don't want OldStyle numbers:</p> <p class="code"><code>\SetParentFont[<em>Numbers=Lining</em>]{<em>fontname</em>}</code></p> -<p>Then, Lining numbers will be used for the <i>textfont</i> (and other descendants).<p> -<p>If you don't like the defaults, you can address the other descendant fonts directly, in Preamble:</p> +<p>Then, Lining numbers will be used for the <i>main font</i> (and other descendants).<p> +<p class="item"><b>C.</b> If you don't like the defaults, you can set the other descendant fonts directly, in Preamble:</p> <p class="code"> <code>\SetChapterFont[<em>features</em>]{<em>fontname</em>}</code> % <em>see section <a href="#h5.1.3.1">5.1.3.1</a></em><br/> <code>\SetSubchFont[<em>features</em>]{<em>fontname</em>}</code> % <em>see section <a href="#h5.1.3.1">5.1.3.1</a></em><br/> <code>\SetHeadFont[<em>features</em>]{<em>fontname</em>}</code> % <em>see section <a href="#h4.3.4.2">4.3.4.2</a></em> </p> -<p>You may use <code>\parentfontfeatures</code> and/or <code>\parentfontname</code> as arguments, if you wish.</p> +<p class="item"><b>D.</b> You may use <code>\parentfontfeatures</code> and/or <code>\parentfontname</code> as arguments, if you wish.</p> </div><!-- end 4.2.2 --> <h4 id="h4.2.3">4.2.3. Advanced: The Deco Font</h4> <div class="d4" id="d4.2.3"> -<p class="noindent">Open Type font <i>NovelDeco.otf</i> is packaged with the <i>novel</i> class. It is a special-purpose font that provides characters for the <i>\decoglyph</i> and <i>\acronym</i> commands.</p> -<p>Normally, you do not need to configure this font, as it is automatic. The only reason for changing it is if you are an advanced user, who wishes to use a substitute font with different decorations. However, you may <i>not</i> specify just any font! The substitute must be an edited version of <i>NovelDeco.otf</i>, with a different font name. If you don't know what that means, then don't do it.</p> +<p class="item"><b>A.</b> Open Type font <i>NovelDeco.otf</i> is packaged with the <i>novel</i> class. It is a special-purpose font that provides characters for the <code><a href="#h5.1.3.3">\decoglyph</a></code> and <code><a href="#h6.2.4">\midcase</a></code> commands.</p> +<p class="item"><b>B.</b> Normally, you do not need to configure this font, as it is automatic. The only reason for changng it is if you are an advanced user, who wishes to use a substitute font with different decorations. However, you may <i>not</i> specify just any font! The substitute must be an edited version of <i>NovelDeco.otf</i>, with a different font name. If you don't know what that means, then don't do it.</p> <p class="code"> <code>\SetDecoFont[<em>features</em>]{<em>fontname</em>}</code> % <em>see section <a href="#h5.1.3.3">5.1.3.3</a></em> </p> @@ -1076,28 +1105,33 @@ AnotherFeature=Setting,%<br/> <h4 id="h4.2.4">4.2.4. Advanced: Mono, Sans, and Math Fonts</h4> <div class="d4" id="d4.2.4"> -<p class="noindent">There are several pre-defined fonts that do not descend from the <i>parentfont</i>. In each case, an appropriate default font is selected. You will probably never need to use them; but TeX being what it is, default fonts are chosen "whether you like it or not."</p> -<p>The default sans-serif font will be <i>Libertinus Sans</i> if available. Second choice is <i>Linux Biolinum O</i>. Third choice is <i>Latin Modern Sans</i>. To choose your own, use this command in Preamble, with <i>fontspec</i> syntax:</p> +<p class="item"><b>A.</b> There are several pre-defined fonts that do not descend from the <i>parent font</i>. In each case, an appropriate default font is selected. You will probably never need to use them; but TeX being what it is, default fonts are chosen "whether you like it or not."</p> +<p class="item"><b>B.</b> The default sans-serif font will be <i>Libertinus Sans</i> if available. If not, the fallback font is <i>Latin Modern Sans</i>. To choose your own, use this command in Preamble, with <i>fontspec</i> syntax:</p> <p class="code"><code>\SetSansFont[<em>features</em>]{<em>fontname</em>}</code></p> -<p>The default monospaced font will be <i>Libertinus Mono</i> if available. Second choice is <i>Linux Libertine Mono O</i>. Third choice is <i>Latin Modern Mono</i>. To choose your own, use this command in Preamble, with <i>fontspec</i> syntax:</p> +<p class="item"><b>C.</b> The default monospaced font will be <i>Libertinus Mono</i> if available. If not, the fallback font is <i>Latin Modern Mono</i>. To choose your own, use this command in Preamble, with <i>fontspec</i> syntax:</p> <p class="code"><code>\SetMonoFont[<em>features</em>]{<em>fontname</em>}</code></p> -<p>If you need a math font, then may I gently suggest that maybe <i>novel</i> is not the right document class for you? Nevertheless, the (hopefully never used) math font will be <i>Libertinus Math</i>, or <i>Asana-Math</i>, or <i>Latin Modern Math</i>. You can choose your own in Preamble, using the built-in <i>unicode-math</i> package notation:</p> -<p class="code"><code>\SetMathFont[<em>features</em>]{<em>fontname</em>}</code></p> +<p class="item" style="position:relative"><b>D.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> If you need a math font, then may I gently suggest that maybe <i>novel</i> is not the right document class for you?</p> +<p>Nevertheless, <i>Libertinus Math</i> is loaded if available; otherwise <i>Latin Modern Math</i>.</p> +<p>If neither of those fonts are found, then <i>NovelDeco.otf</i> will be loaded as a fake math font, with no actual math symbols. That allows you to proceed without a real math font. But if you attempt to print math, it will look wrong.</p> +<p>You may choose your own math font using <code>\setmathfont</code> from package <i>unicode-math</i>. See that package documentation for details.</p> </div><!-- end 4.2.4 --> <h4 id="h4.2.5">4.2.5. Advanced: Defining New Font Commands</h4> <div class="d4" id="d4.2.5"> -<p class="noindent">You can define new font commands in Preamble. The syntax depends on whether the new font is part of a family (where you might have bold and italic variants), or just a single file (no variants). If part of a family, use <code>\NewFontFamily</code>. If alone, use <code>\NewFontFace</code>.</p> -<p>The <code>\NewFontFamily</code> command (or <code>\NewFontFace</code>) takes three arguments: First, the name you assign to the new font command is required. Second, font features are optional. Third, the font name is required. The <i>fontspec</i> syntax is used:</p> +<p class="item"><b>A.</b> You can define new font commands in Preamble. The syntax depends on whether the new font is part of a family (where you might have bold and italic variants), or just a single file (no variants). If part of a family, use <code>\NewFontFamily</code>. If alone, use <code>\NewFontFace</code>.</p> +<p>The <code>\NewFontFamily</code> command (or <code>\NewFontFace</code>) takes three arguments: First, the name you assign to the new font command is required. Second, font features are optional. Third, the font name is required. The <i>fontspec</i> syntax is used in Preamble:</p> <p class="code"><code> \NewFontFamily<em>\pickaname</em>[<em>features</em>]{<em>fontfamily</em>}<br/> \NewFontFace<em>\pickaname</em>[<em>features</em>]{<em>singlefont</em>} </code></p> -<p>Note that if you define a font <em>family</em> when you should have just defined a font <em>face</em>, there will be complaints in the log file, because the font loaded cannot find the (nonexistent) other members of the family. But the document will compile. On the other hand, if you define a font <em>face</em> when you should have defined a font <em>family</em>, then commands for bold or italic will have no effect, since the other family members were not loaded. Again, the document will compile.</p> -<p style="margin-top:16px"><b>Example:</b> Suppose your work is science fiction, and one if its characters is a talking robot. You wish to depict its utterances in a robotic-looking font, which will be called using a new <code>\robovoice</code> command. You shop around, and find that the <em>Orbitron</em> font suits your purpose, except that it is too large compared to your <em>textfont</em>. So, you scale it.</p> +<p>In the document body, you use the new font command:</p> +<p class="code"><code>{\pickaname Text in the font selected by pickaname command.}</code></p> +<p class="item"><b>B.</b> If you define a font <em>family</em> when you should have just defined a font <em>face</em>, there will be complaints in the log file, because the font loader cannot find the (nonexistent) other members of the family. But the document will compile.</p> +<p>On the other hand, if you define a font <em>face</em> when you should have defined a font <em>family</em>, then commands for bold or italic will have no effect, since the other family members were not loaded. Again, the document will compile.</p> +<p class="item"><b>C.</b> Example: Suppose your work is science fiction, and one if its characters is a talking robot. You wish to depict its utterances in a robotic-looking font, which will be called using a new <code>\robovoice</code> command. You shop around, and find that the <em>Orbitron</em> font suits your purpose, except that it is too large compared to your <i>main font</i>. So, you scale it.</p> <p>In the Preamble, you define the new font command:</p> <p class="code"><code>\NewFontFace\robovoice[Scale=0.8]{Orbitron} % not part of a family</code></p> -<p>After some experimentation, you realize that the \robovoice letters need to be spread apart a bit. Do not use the standard LaTeX <code>\textls</code> command. Instead, go back and change the font definition like this: +<p>After some experimentation, you realize that the \robovoice letters need to be spread apart a bit. Do not use <code>\textls</code>. Instead, go back and change the font definition like this: <p class="code"><code>\NewFontFace\robovoice[Scale=0.8,LetterSpace=<em>number</em>]{Orbitron} % pick a number</code></p> <p>In the document body:</p> <p class="code"><code> @@ -1108,22 +1142,23 @@ AnotherFeature=Setting,%<br/> </code></p> <p>The result:</p> <p class="centerimg"><img src="html-resources/human-robot-talk.png" width="483" height="127" alt="conversation, human-robot"/></p> -<p>Caution: If you are using a new font within body text (as above), then it is a bad idea to use Scale greater than 1.0. Reason: An excessively tall font will cause lines to spread apart.</p> -<p style="margin-top:16px"><img class="floatright" src="html-resources/fluffy-conspiracy.png" width="265" height="409" alt="the fluffy conspiracy"/> <b>Example:</b> Suppose that you wish to style the title of your book, in a font that is not used for other things such as chapter titles. You purchase a license for the <em>Bernhard Modern Std</em> fonts, in Regular and Italic.</p> +<p class="item" style="position:relative"><b>D.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Caution: If you are using a new font within body text (as above), then it is a bad idea to use Scale greater than 1.0. Reason: An excessively tall font will cause lines to spread apart, and you will lose the line grid.</p> +<p class="item"><b>E.</b> <img class="floatright" src="html-resources/fluffy-conspiracy.png" width="265" height="409" alt="the fluffy conspiracy"/> Example: Suppose that you wish to style the title of your book, in a font that is not used for other things such as chapter titles. You purchase a license for the <em>Bernhard Modern Std</em> fonts, in Regular and Italic.</p> <p>In the Preamble:</p> <p class="code"><code>\NewFontFamily\booktitlefont{Bernhard Modern Std}</code></p> -<p>The title page, using <code>\charscale</code> for size:</p> +<p>The title page, using <code><a href="#h6.1.2">\charscale</a></code> for size:</p> <p class="code"><code> \thispagestyle{empty}<br/> -\vspace*{7\nbs}<br/> +\vspace*{7<span style="cursor:help" title="normal baseline skip">\nbs</span>}<br/> \begin{center}<br/> \charscale[3]{\booktitlefont The \textit{Fluffy} Conspiracy}\par<br/> -\vspace{6\nbs}<br/> +\vspace{6<span style="cursor:help" title="normal baseline skip">\nbs</span>}<br/> \charscale[2]{Priscilla Milde}\par<br/> \vfill<br/> Nonexistent Publications • Portland, Oregon\par<br/> \end{center} </code></p> +<div style="clear:both"></div> </div><!-- end 4.2.5 --> </div><!-- end 4.2 --> @@ -1133,47 +1168,66 @@ Nonexistent Publications • Portland, Oregon\par<br/> <h4 id="h4.3.1">4.3.1. Margins</h4> <div class="d4" id="d4.3.1"> -<p class="noindent"><b>Margins</b> are required on all four edges of the page. They do not have to be the same width. Generally the margin at the inside edge (spine margin) is wider. The <i>novel</i> class does not provide for marginal notes.</p> -<p>In the case of fiction, it is usually the case that the inside margin is the widest. But this is not a rule for all books. All that is required is that each margin be "wide enough" for the printing process.</p> -<p>Keep in mind that print services are not used to seeing books with exotic margins (such as bottom margin twice the size of top margin). They may think that there is a mistake in your PDF, or in the print job, if you do that.</p> -<p>Normally, your TeX document will be compiled to a PDF that is electronically at the exact Trim Size. And normally, print services want it to be that way. When you view your PDF, the text will shift from side to side as you move through the pages, due to the slightly increased margin at the inside edge.</p> -<p><img class="floatright" src="html-resources/margins-trim-media.png" width="202" height="264" title="Trim Size floated in larger Media Size" alt="Trim Size floated in larger Media Size"/>Margins are always relative to the Trim Size. If you are using a larger Media Size, the area outside the TrimBox is <i>not</i> counted among the margins; it is simply wasted area. This is illustrated at right, where a smaller Trim Size is floated in a marger Media Size. The margins are shown in gray.</p> -<p>Here is how margins are set in Preamble:</p> -<p class="code"><code>\SetMargins{<em>top</em>}{<em>outside</em>}{<em>bottom</em>}{<em>inside</em>}</code></p> -<p>Mnemonic for order of margins: "TOBI, or not TOBI, that is the question."</p> +<p class="noindent">Margins are globally set in Preamble:</p> +<p class="code"><code>\SetMargins{<em>top</em>}{<em>outer</em>}{<em>bottom</em>}{<em>inner</em>}</code></p> +<p>Mnemonic for order of margins (<i>Hamlet</i>): "TOBI, or not TOBI, that is the question."</p> <p>Each of the settings must have dimension, such as <i>in</i> or <i>mm</i>.</p> -<p>If you do not use this command, then margins are pre-configured. The minimum pre-configured margins are 0.5in at top, outside, and bootm, and 0.75in at inside. This meets the requirements of nearly any printing technology, unless your book is extremely thick. If your Trim Size is among the larger ones, then the pre-configured margins are larger than these minimums.</p> -<p>If your pages have header/footer, they sit inside the rectangle bounded by the four margins. That is, they do <i>not</i> sit inside the marginal areas.</p> +<p class="item"><b>A.</b> <b>Margins</b> are required on all four edges of the page (but not cover art). They do not have to be the same width. Generally the margin at the inside edge (spine margin) is wider. The <i>novel</i> class does not provide for marginal notes.</p> +<p class="item"><b>B.</b> In the case of fiction, it is usually the case that the inner margin is the widest. But this is not a rule for all books. All that is required is that each margin be "wide enough" for the printing process.</p> +<p class="item"><b>C.</b> Print services are not used to seeing books with exotic margins (such as bottom margin twice the size of top margin). They may think that there is a mistake in your PDF, or in the print job, if you do that.</p> +<p class="item"><img class="floatright" src="html-resources/margins-trim-media.png" width="202" height="264" title="Trim Size floated in larger Media Size" alt="Trim Size floated in larger Media Size"/><b>D.</b> Normally, your TeX document will be compiled to a PDF that is electronically at the exact Trim Size. And normally, print services want it to be that way. When you view your PDF, the text will shift from side to side as you move through the pages, due to the slightly increased margin at the inside edge.</p> +<p class="item"><b>E.</b> Margins are always relative to the Trim Size. If you are using a larger Media Size, the area outside the TrimBox is <i>not</i> counted among the margins; it is simply wasted area. This is illustrated at right, where a smaller Trim Size is floated in a marger Media Size. The margins are shown in gray.</p> +<p class="item" style="clear:both"><img src="html-resources/topmargins.png" class="floatright" width="158" height="292" alt="top margins, with and without header" title="top margins, with and without header"/><b>F.</b> If you do not use <code>\SetMargins</code>, then margins are pre-configured. The minimum pre-configured margins are 0.5in at top, outside, and bottom, and 0.75in at inside. This meets the requirements of nearly any printing technology, unless your book is extremely thick. </p> +<p>If your Trim Size is among the larger ones, then the pre-configured margins are larger than these minimums.</p> +<p class="item"><b>G.</b> If your page layout uses header and/or footer, these elements sit within the rectangle bounded by the four margins. That is, they share the same space as main text.</p> +<p>At right, the top margin is shown in gray, for three situations. Layout #1 has a header. Layout #2 also has a header, but this particular page leaves the header empty. Layout #3 has no header.</p> +<div style="clear:both"></div> <h5 id="h4.3.1.1">4.3.1.1. Gutter? Which Gutter?</h5> <div class="d5" id="d4.3.1.1"> -<p><img class="floatright" src="html-resources/whichgutter.png" width="276" height="219" title="Which gutter?" alt="Which gutter?"/>Be aware that there is a lot of confusion regarding the word "gutter." In the accompanying diagram, it might mean any of A, B, C, or D, depending on who is doing the talking and which software is in use.</p> -<p>The <i>novel</i> class uses <em>inside margin</em>, also known as <em>spine margin</em>, to mean <i>C</i>. There is no setting for "gutter" as such.</p> +<p><img class="floatright" src="html-resources/whichgutter.png" width="276" height="219" title="Which gutter?" alt="Which gutter?"/>Be aware that there is a lot of confusion regarding the word "gutter."</p> +<p>In the accompanying diagram, the central shaded area is at the spine, where there must be an allowance for the book assembly process. "Gutter" might mean any of A, B, C, or D, depending on who is doing the talking, and which software is in use.</p> +<p>The <i>novel</i> class uses <em>inner margin</em>, also known as <em>spine margin</em>, to mean <i>C</i>. There is no setting for "gutter" as such.</p> +<div style="clear:both"></div> +</div><!-- end 4.3.1.1 --> + +<h5 id="h4.3.1.2">4.3.1.2. Unsafe Zone</h5> +<div class="d5" id="d4.3.1.2"> +<p class="noindent">Optional global setting, in Preamble:</p> +<p class="code"><code>\SetUnsafeZone{<em>top</em>}{<em>outer</em>}{<em>bottom</em>}{<em>inner</em>}</code></p> +<p class="item"><b>A.</b> This applies only to interior text block. Although cover artwork has unsafe zones, they are specified by a graphic design template.</p> +<p class="item"><img class="floatright" src="html-resources/unsafe-vs-margin.png" width="228" height="150" title="unsafe zone vs margin" alt="unsafe zone vs margin"/><b>B.</b> Printers have a "safe zone," where you are allowed to place text and images. The area outside the safe zone is the "unsafe zone." If anything lies within the unsafe zone, even in part, then the file may print badly, or be rejected by commercial printers.</p> +<p class="item"><b>C.</b> Unsafe zone is a sub-area of the margins. That is, the margins include the unsafe zone (if set), and usually some additional area. The accompanying image shows a page with narrow unsafe zone, and wider margin.</p> +<p class="item"><b>D.</b> Some printers describe the unsafe zone as "minimum margin." But in most cases, visually appealing margins are wider than the unsafe zone. You may be able to place items out there, for special effects.</p> +<p class="item"><b>E.</b> You do not need to set the unsafe zone. Whether or not you do, and regardless of any values you choose, the result does not affect the finished, final PDF. The zones are not enforced. Margins are unaffected.</p> +<p class="item"><b>F.</b> If you set unsafe zone, then the unsafe area will have a dark gray background, when you use <code>[draft,shademargins]</code> as class options. This allows you to visualize whether anything intrudes into the unsafe zone.</p> <div style="clear:both"></div> </div><!-- end 4.3.1.1 --> </div><!-- end 4.3.1 --> <h4 id="h4.3.2">4.3.2. Lines Per Page</h4> <div class="d4" id="d4.3.2"> -<p class="noindent">Lines per page refers only to the textblock, and does <em>not</em> include header/footer. Lines are not stretched to fill short pages.</p> -<p>By default, a suitable number of lines per page are set, based on other dimensions. You can change the default with this command, in Preamble:</p> +<p class="item"><b>A.</b> Lines per page refers only to the textblock, and does <em>not</em> include header/footer. Lines are not stretched to fill short pages.</p> +<p class="item"><b>B.</b> By default, a suitable number of lines per page are automatically set, based on other dimensions. You can change the default with this command, in Preamble:</p> <p class="code"><code>\SetLinesPerPage{<em>integer</em>}</code></p> <p> Any non-integer will be rounded. There is no direct command to set the <em>leading</em>, also known as line-to-line spacing or <em>baselineskip</em>. Instead, it is calculated from the textblock height and number of lines.</p> -<p>If the calculated leading is less than <i>1.2x</i> the font size, an error will result. It is difficult for TeX to honor all layout settings with such a small leading, which would normally be unacceptable for fiction in any case. If the calculated leading is at least <i>1.2x</i> the font size, but less than <i>1.25x</i> the font size, then the log file will have an Alert message, suggesting that you should consider using fewer lines per page. If the leading exceeds <i>1.4x</i> the font size, then the log will have an Alert, suggesting more lines per page. The Alert messages are friendly; you do not necessarily have to do anything.</p> +<p class="item"><b>C.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> If you change any other dimensions (margins, head/foot, font size, etc.) then the calculated default number of lines per page will probably change. If you like the initial default value, then set it manually.</p> +<p class="item" style="position:relative"><b>D.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> If the calculated leading is less than <i>1.2x</i> the font size, an error will result. It is difficult for TeX to honor all layout settings with such a small leading, which would normally be unacceptable for fiction in any case.</p> +<p>If the calculated leading is at least <i>1.2x</i> the normal size, but less than <i>1.25x</i> the normal size, then the log file will have an Alert message, suggesting that you should consider using fewer lines per page. If the leading exceeds <i>1.4x</i> the font size, then the log will have an Alert, suggesting more lines per page. The Alert messages are friendly; you do not necessarily have to do anything.</p> </div><!-- end 4.3.2 --> <h4 id="h4.3.3">4.3.3. Global Header/Footer Styles</h4> <div class="d4" id="d4.3.3"> -<p class="noindent">Global choice of header/footer style is made in Preamble. Although some individual pages may have no visible header or footer, in reality the header/footer is "still there" in terms of occupying space, but has no content.</p> -<p>There are six pre-configured header/footer styles, numbered <i>1</i> through <i>6</i>. These address every style I have seen in fiction. When you choose one of these styles, it reserves space for a header (if any) above the main text, and space for a footer (if any) below the main text. You may <i>not</i> write multi-line headers or footers.</p> -<p>The default style is <i>1</i>, which has header, but no footer. Page numbers appear at the outside. Text (such as author or title) appears centered.</p> -<p>Style <i>0</i> has no header or footer. This is not used in fiction, but it is available.</p> -<p>Throughout the body of your document, you can use local commands to change the content of headers and footers, or blank them. But you may not change the overall header/footer style.</p> +<p class="item"><b>A.</b> Global choice of header/footer style is made in Preamble. Although some individual pages may have no visible header or footer, in reality the header/footer is "still there" in terms of occupying space, but has no content.</p> +<p class="item"><b>B.</b> There are six pre-configured header/footer styles, numbered <i>1</i> through <i>6</i>. These address every style I have seen in fiction. When you choose one of these styles, it reserves space for a header (if any) above the main text, and space for a footer (if any) below the main text. You may <i>not</i> write multi-line headers or footers.</p> +<p class="item"><b>C.</b> The default style is <i>1</i>, which has header, but no footer. Page numbers appear at the outside. Text (such as author or title) appears centered.</p> +<p class="item"><b>D.</b> Style <i>0</i> has no header or footer. This is not used in fiction, but it is available.</p> +<p class="item"><b>E.</b> Throughout the body of your document, you can use <a href="#h4.3.5">local commands</a> to <a href="#h4.3.4.6">change the content</a> of headers and footers, or blank them. But you may not change the global header/footer style mid-document.</p> <h5 id="h4.3.3.1">4.3.3.1. List of Header/Footer Style Choices</h5> <div class="d5" id="d4.3.3.1"> <p> </p> -<img class="floatright" src="html-resources/headfoot1.png" width="276" height="219" alt="style 1" title="style 1"/> +<img class="floatright" style="margin-bottom:8px" src="html-resources/headfoot1.png" width="276" height="219" alt="style 1" title="style 1"/> <p class="overhang"> <code><b>\SetHeadFootStyle{1}</b></code><br/> Only Header.<br/> @@ -1182,21 +1236,21 @@ Optional emblem adjacent to page number.<br/> Text centered. Default author verso, title recto.<br/> <em>This is the default for the novel document class.</em></p> <div style="clear:both"></div> -<img class="floatright" src="html-resources/headfoot2.png" width="276" height="219" alt="style 2" title="style 2"/> +<img class="floatright" style="margin-bottom:8px" src="html-resources/headfoot2.png" width="276" height="219" alt="style 2" title="style 2"/> <p class="overhang"> <code><b>\SetHeadFootStyle{2}</b></code><br/> Only Footer.<br/> Page number at outside (left verso, right recto).<br/> Optional emblem adjacent to page number.</p> <div style="clear:both"></div> -<img class="floatright" src="html-resources/headfoot3.png" width="276" height="219" alt="style 3" title="style 3"/> +<img class="floatright" style="margin-bottom:8px" src="html-resources/headfoot3.png" width="276" height="219" alt="style 3" title="style 3"/> <p class="overhang"> <code><b>\SetHeadFootStyle{3}</b></code><br/> Only Footer.<br/> Page number centered.<br/> Disregards emblem, if coded.</p> <div style="clear:both"></div> -<img class="floatright" src="html-resources/headfoot4.png" width="276" height="219" alt="style 4" title="style 4"/> +<img class="floatright" style="margin-bottom:8px" src="html-resources/headfoot4.png" width="276" height="219" alt="style 4" title="style 4"/> <p class="overhang"> <code><b>\SetHeadFootStyle{4}</b></code><br/> Only Header.<br/> @@ -1206,7 +1260,7 @@ Text towards outside, instead of centered.<br/> Text begins or ends 1em from the emblem.<br/> Default author verso, title recto.</p> <div style="clear:both"></div> -<img class="floatright" src="html-resources/headfoot5.png" width="276" height="219" alt="style 5" title="style 5"/> +<img class="floatright" style="margin-bottom:8px" src="html-resources/headfoot5.png" width="276" height="219" alt="style 5" title="style 5"/> <p class="overhang"> <code><b>\SetHeadFootStyle{5}</b></code><br/> Header and Footer.<br/> @@ -1215,7 +1269,7 @@ Disregards emblem, if coded.<br/> Text centered in header.<br/> Default author verso, title recto.</p> <div style="clear:both"></div> -<img class="floatright" src="html-resources/headfoot6.png" width="276" height="219" alt="style 6" title="style 6"/> +<img class="floatright" style="margin-bottom:8px" src="html-resources/headfoot6.png" width="276" height="219" alt="style 6" title="style 6"/> <p class="overhang"> <code><b>\SetHeadFootStyle{6}</b></code><br/> Only Header.<br/> @@ -1228,12 +1282,12 @@ Default author verso, title recto.</p> <h5 id="h4.3.3.2">4.3.3.2. Custom Header/Footer Style</h5> <div class="d5" id="d4.3.3.2"> -<p class="noindent">Before you think about writing a custom header/footer style, be sure to try the above pre-configured choices. I have looked through a lot of fiction of all kinds. The pre-configured choices include every style I have seen, with the exception of the most highly decorative.</p> -<p>If none of the above are satisfactory, then you can write your own headers and footers using the syntax of the <i>fancyhdr</i> package.</p> +<p class="item"><b>A.</b> Before you think about writing a custom header/footer style, be sure to try the above pre-configured choices. I have looked through a lot of fiction of all kinds. The pre-configured choices include every style I have seen, with the exception of the most highly decorative.</p> +<p class="item"><b>B.</b> If none of the above are satisfactory, then you can write your own headers and footers using the syntax of the <i>fancyhdr</i> package. Strategy:</p> <p>• In the Preamble, you must use one of the above <code>\SetHeadFootStyle</code> choices to pick a starting point, in terms of whether or not there is a header and/or footer. <em>This is required, so that the layout engine knows how to calculate space.</em> After that, write the <i>fancyhdr</i> code for your custom header/footer in the Preamble. It will over-ride the numerical style in terms of appearance, but occupy the same space.</p> -<p>• You cannot use a header or footer with more than one line. No exceptions.</p> +<p>• You normally cannot use a header or footer with more than one line. If you have the expertise, two lines can be used, with sufficient <a href="#h4.3.4.1">jump</a>. Not recommended, and not documented.</p> <p>• See the file <i>novel-HeadFootStyles.sty</i> for how it is done in the pre-configured styles. In the file, the relevant portion follows <em>Look here for the pre-defined styles, for use as models.</em></p> -<p>• Particularly note that your own style will not automatically use the <i>headfont</i>, or add extra space between letters, unless you include the necessary code in your own definition. Do not use the <code>\textls</code> command.</p> +<p>• Particularly note that your own style will not automatically use the <i>head font</i>, or add extra space between letters, unless you include the necessary code in your own definition. Do not use the <code>\textls</code> command.</p> <p>• No cheating! If you choose a numerical style that does not have a header, then do not attempt to write a custom style that includes a header. Same with footer. Also, if you you choose a numerical style with both header and footer, then you cannot only customize one of them; you must customize both.</p> </div><!-- end 4.3.3.2 --> </div><!-- end 4.3.3 --> @@ -1242,99 +1296,103 @@ Default author verso, title recto.</p> <div class="d4" id="d4.3.4"> <p class="noindent">You may customize the appearance, and to some extent the content, of the various parts of the header and footer. These are global settings, in Preamble.</p> -<h5 id="h4.3.4.1">4.3.4.1 <code>\SetHeadJump{<em>number</em>}</code>, <code>\SetFootJump{<em>number</em>}</code></h5> +<h5 id="h4.3.4.1">4.3.4.1. Gap Between Header/Footer and Main Text</h5> <div class="d5" id="d4.3.4.1"> -<p class="noindent">These two commands control the separation between the header/footer and the main text. If your style does not have a header and/or footer, then the corresponding setting does not matter.</p> -<p>When you change the "jump," the header or footer remains in the same place. However, the inter-line spacing (baseline skip) of the main text is tweaked to fit, while maintaining the same number of lines per page.</p> -<p>Note that <i>novel</i> does not use arcane settings such as <i>headsep</i>, <i>footskip</i>, or <i>headheight</i>.</p> -<p class="floatright" style="text-indent:0px"><img src="html-resources/headjump1.png" width="158" height="125" alt="headjump 1"/><br/><img src="html-resources/footjump2.png" width="130" height="116" alt="footjump 2"/></p> -<p>The head and/or foot "jump" is a multiple of the normal baseline skip. When the jumps are set to <i>1</i>, the header (if used) will be where the textblock would be, if it had one more line on top. The footer will be where the textblock would be, if it had one more line at the bottom. Values of <i>2</i> would skip a line at top and bottom. In other words, integer jumps maintain the line grid.</p> -<p>Actually, the header and/or footer do not need to be on line grid. The defaults are <i>1.5</i> for each, which balances the need to separate the header/footer from the text, with the need to avoid wasting vertical space.</p> -<p>The maximum is <i>3</i>, minimum <i>1</i>. The two jumps do not need to be identical.</p> -<div style="clear:both"></div> +<p class="code"><code>\SetHeadJump{<em>number</em>}</code>, <code>\SetFootJump{<em>number</em>}</code></p> +<p class="item"><b>A.</b> These two commands control the separation between the header/footer and the main text. If your style does not have a header and/or footer, then the corresponding setting will be ignored.</p> + +<p class="item"><b>B.</b> The head and/or foot "jump" is a multiple of the normal baseline skip. Each value is a number between 1 and 3, and may be decimal. The jumps do not need to be identical. Default is 1.5 for each. Measurements are from baseline to baseline.</p> +<p class="centerimg" style="text-indent:0px"><img src="html-resources/head-foot-jumps.png" width="552" height="151" alt="headjump and footjump" title="headjump and footjump"/></p> +<p class="item"><img src="html-resources/jump-change.png" class="floatright" style="padding-top:12px" width="360" height="272" alt="jump changes" title="jump changes"/><b>C.</b> When a "jump" is changed, its header or footer remains in the same place. The margins are unchanged.</p> +<p class="item"><b>D.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> If you <a href="#h4.3.2">manually choose</a> the number of lines per page, then it will remain the same when you change "jump." The inter-line spacing (baselineskip) will change.</p> +<p>However, if you allow <i>novel</i> to use the default number of lines per page, then it will change when "jump" is changed.</p> +<p class="item"><b>E.</b> Note that <i>novel</i> does not use arcane settings such as <i>headsep</i>, <i>footskip</i>, or <i>headheight</i>. Those TeX internals are automatically calculated.</p> +<p class="item" style="clear:both"><b>F.</b> The distance from the topmost baseline (whether header or main text), to the top margin, is fixed at 1 normal em. This provides adequate clearance for capital letters with upper diacritical marks.</p> +<p>The distance from the lowermost baseline (whether main text or footer), to the lower margin, is fixed at 0.3 normal em. This provides adequate clearance for descenders.</p> +<p class="item"><b>G.</b> When in draft mode, the <code>shademargins</code> option shades the margins in medium gray, and shades the area reserved for header/footer in light gray. This was used in the above image.</p> +<p class="item" style="position:relative"><b>H.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> The head/foot jumps are global, and cannot be changed later in the document.</p> </div><!-- end 4.3.4.1 --> <h5 id="h4.3.4.2">4.3.4.2. <code>\SetHeadFont[<em>features</em>]{<em>font</em>}</code></h5> <div class="d5" id="d4.3.4.2"> -<p class="noindent">The <i>novel</i> pre-configured header/footer styles automatically use the <em>headfont</em>.<p> -<p>If you would like to use something else as <i>headfont</i>, use <code>\SetHeadFont</code> to define it by its font name and Open Type features.</p> -<p>In the simplest case, you merely pick an Open Type (or TrueType) font, and <i>novel</i> automatically adds the default Open Type features, including Small Caps:</p> +<p class="item"><b>A.</b> The <i>novel</i> pre-configured header/footer styles automatically use the <em>head font</em>, which is pre-defined as a variation of the parent font: scaled to slightly smaller size, using lining numbers (if available), and small caps (if available). This is a general-purpose style, widely used in fiction. It may not be the most artistic, but it is unlikely to cause visual distraction:</p> +<p class="centerimg"><img src="html-resources/headfont-default.png" width="419" height="81" title="default head font" alt="default head font"/></p> +<p class="item"><b>B.</b> If you would like to use something else as <i>head font</i>, use <code>\SetHeadFont</code> to define it by its font name and Open Type features.</p> +<p>In the simplest case, you merely pick an Open Type (or TrueType) font, and <i>novel</i> automatically adds some Open Type features, including small caps:</p> <p class="code"><code>\SetHeadFont{Roboto}</code></p> -<p class="centerimg"><img src="html-resources/headfont-roboto.png" width="419" height="81" title="Roboto headfont" alt="Roboto headfont"/></p> -<p>The above is not best if your style has header text, because the <i>headfont</i> is too pronounced, compared to the main text. A more complex choice uses <i>fontspec</i> syntax to customize the Open Type Features:</p> +<p class="centerimg"><img src="html-resources/headfont-roboto.png" width="419" height="81" title="Roboto head font" alt="Roboto head font"/></p> +<p class="item"><b>C.</b> The above example is not best if your style has header text, because the <i>head font</i> is too pronounced, compared to the main text. A more complex example uses <i>fontspec</i> syntax to customize the Open Type Features:</p> <p class="code"><code>\SetHeadFont[Scale=0.75,Numbers=Lining,%<br/> Letters=SmallCaps,%<br/> Letters=UppercaseSmallCaps,%<br/> ItalicFont=Montserrat-ExtraLightItalic.otf]%<br/> {Montserrat-ExtraLight.otf}</code></p> -<p class="centerimg"><img src="html-resources/headfont-montserrat-el.png" width="419" height="81" title="Montserrat EL headfont" alt="Montserrat EL headfont"/></p> -<p>Unless you change it, the <i>headfont</i> is the same as the parent (main) font. However, it is scaled to slightly smaller size, uses lining numbers (if available), and small caps (if available). This is a general-purpose style, widely used in fiction. It may not be the most artistic, but it is unlikely to cause visual distraction:</p> -<p class="centerimg"><img src="html-resources/headfont-default.png" width="419" height="81" title="default headfont" alt="default headfont"/></p> -<p>If you do <i>not</i> want SmallCaps to be automatically added, use <code>Letters=ResetAll</code> as a feature:</p> +<p class="centerimg"><img src="html-resources/headfont-montserrat-el.png" width="419" height="81" title="Montserrat EL head font" alt="Montserrat EL head font"/></p> +<p class="item" style="position:relative"><b>D.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> If you do <i>not</i> want SmallCaps to be automatically added, use <code>Letters=ResetAll</code> as a feature:</p> <p class="code"><code>\SetHeadFont[Letters=ResetAll]{\parentfontname}</code></p> <div style="clear:both"></div> </div><!-- end 4.3.4.2 --> <h5 id="h4.3.4.3">4.3.4.3. <code>\SetLooseHead{<em>number</em>}</code></h5> <div class="d5" id="d4.3.4.3"> -<p class="noindent">This command applies to both headers and footers, but its effect is most noticeable when the style has header text.</p> -<p>For best appearance of header text, its characters should be adjusted with a little extra space (tracking) between them, so that they are more easily distinguished from the main text. This is especially true if you are using small caps.</p> +<p class="item"><b>A.</b> This command applies to both headers and footers, but its effect is most noticeable when the style has header text.</p> +<p class="item"><b>B.</b> For best appearance of header text, its characters should be adjusted with a little extra space (tracking) between them, so that they are more easily distinguished from the main text. This is especially true if you are using small caps.</p> <p class="centerimg"><img src="html-resources/looseheads.png" width="400" height="76" alt="loosehead 50 and 100"/></p> -<p>The argument of <code>\SetLooseHead</code> is a number from <i>0</i> to <i>200</i>. At <i>0</i> there is no extra space between the letters. Values from <i>50</i> (default) to <i>100</i> are most useful.</p> -<p>Page number tracking will be clamped at a maximum of <i>50</i>, even when a larger (looser) tracking is applied to text.</p> -<p>• Do not use the <code>\textls</code> command. It is disabled in <i>novel</i>.</p> +<p class="item"><b>C.</b> The argument of <code>\SetLooseHead</code> is a number from <i>0</i> to <i>200</i>. At <i>0</i> there is no extra space between the letters. Values from <i>50</i> (default) to <i>100</i> are most useful.</p> +<p class="item"><b>D.</b> Page number tracking will be clamped at a maximum of <i>50</i>, even when a larger (looser) tracking is applied to text.</p> +<p class="item" style="position:relative"><b>E.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Do not use the <code>\textls</code> command. It is disabled in <i>novel</i>.</p> <div style="clear:both"></div> </div><!-- end 4.3.4.3 --> <h5 id="h4.3.4.4">4.3.4.4. <code>\SetPageNumberStyle{<em>code using \thepage</em>}</code></h5> <div class="d5" id="d4.3.4.4"> -<p class="noindent">By default, the page number is simply <code>\thepage</code>, styled using <i>headfont</i>. In most cases, leave it that way. But if you wish to change how the page number is displayed, you can use this command to style it. Examples:</p> +<p class="item"><b>A.</b> By default, the page number is styled using <i>head font</i>, but without small caps (so that page roman xiv does not show as XIV).</p> +<p class="item"><b>B.</b> If you wish to change how the page number is displayed, you can style it using <code>\SetPageNumber</code> with an argument that uses <code>\thepage</code>. Examples:</p> <p class="code" style="text-indent:0px"><code>\SetPageNumberStyle{\textit{\thepage}} % Page number in italics.<br/> \SetPageNumberStyle{-- \thepage{} --} % En-dashes, style 3 or 5.</code></p> -<p>The <i>headfont</i> is applied automatically, unless you over-ride it in your code. For example, suppose the <i>headfont</i> is based on the parent (main) font, which is the default style. You would like the page numbers (but not anything else in header/footer) to be in a different font, which you have defined in Preamble as <i>yourpnfont</i> using <code>\NewFontFamily</code> or <code>\NewFontFace</code>. Then you could write:</p> -<p class="code"><code>\SetPageNumberStyle{{\yourpnfont\thepage}}</code></p> -<p>Avoid over-doing it. If you are tempted to use a macro that counts page numbers backwards, or writes them upside-down, be aware that your print service will likely reject it. Anyway, it has already been done in fiction.</p> +<p class="item"><b>C.</b> The <i>head font</i> is applied automatically, unless you over-ride it in your code. For example, suppose you would like the page numbers (but not anything else in header/footer) to be in a different font, which you have defined in Preamble as <code>\yourpnfont</code> using <code>\NewFontFamily</code> or <code>\NewFontFace</code>. Then you could write:</p> +<p class="code"><code>\SetPageNumberStyle{{\yourpnfont\thepage}}</code> % note double braces</p> +<p class="item" style="position:relative"><b>D.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Avoid over-doing it. If you are tempted to use a macro that counts page numbers backwards, or writes them upside-down, be aware that your print service will likely reject it. Anyway, it has already been done in fiction.</p> <div style="clear:both"></div> </div><!-- end 4.3.4.4 --> <h5 id="h4.3.4.5">4.3.4.5. <code>\SetEmblems{<em>verso</em>}{<em>recto</em>}</code></h5> <div class="d5" id="d4.3.4.5"> -<p class="noindent">If the style supports it, you may place an "emblem" that appears at a fixed distance (2.5em) from the outer margin. Thus, it will appear to the right of the page number on verso pages, and to the left of the page number on recto pages. In the case of style <i>4</i>, there will be a clearance of 1em between the emblem and the header text.</p> -<p>The font used for emblems will be the same as the <i>headfont</i>, unless you specifically code the emblem to use a different font, or unless you use one of the built-in <code>\decoglyph</code> codes.</p> -<p>Emblems are minor decorations that should not distract the eye from the main text. If the style supports emblems but you do not set them, then no emblems are placed.</p> -<p><img class="floatright" src="html-resources/emblembar.png" width="380" height="104" alt="simple emblems using vertical bar"/>• Most books do not use emblems. When they do, it is typically a vertical bar, or a bullet, like this:</p> +<p class="item"><b>A.</b> If the head/foot style supports it, you may place an "emblem" that appears at a fixed distance (2.5em) from the outer margin. Thus, it will appear to the right of the page number on verso pages, and to the left of the page number on recto pages. In the case of style <i>4</i>, there will be a clearance of 1em between the emblem and the header text.</p> +<p class="item"><b>B.</b> Emblems are minor decorations that should not distract the eye from the main text. If the style supports emblems but you do not set them, then no emblems are placed.</p> +<p class="item"><b>C.</b> <img class="floatright" src="html-resources/emblembar.png" width="380" height="104" alt="simple emblems using vertical bar"/> Most books do not use an emblem. When they do, it is typically a vertical bar, or a bullet, like this:</p> <p class="code"><code>\SetHeadFootStyle{4}</code></p> <p class="code"><code>\SetEmblems{|}{|}</code></p> -<p>The verso and recto emblems may be different. Whether they are the same or not, you must set them both, if you use emblems. Blanks are allowed.</p> -<p><img class="floatright" src="html-resources/emblemdingbats.png" width="380" height="104" alt="dingbat emblems"/>• Emblems may be styled. For example:</p> -<p>The header emblems shown at right were produced using the code below. Dingbats from the NovelDeco font were specified, adjusted for size and position.</p> +<p class="item"><b>D.</b> The font used for emblems will be the same as the <i>head font</i>, unless you specifically code the emblem to use a different font, or unless you use one of the built-in <code>\decoglyph</code> codes.</p> +<p class="item"><b>E.</b> The verso and recto emblems may be different. If you set one side, you must also set the other. Blanks are allowed.</p> +<p class="item"><b>F.</b> <img class="floatright" src="html-resources/emblemdingbats.png" width="380" height="104" alt="dingbat emblems"/> Emblems may be styled. For example, the header emblems shown at right were produced using the code below. Dingbats from the NovelDeco font were specified, adjusted for size and position.</p> <p style="clear:both" class="code"><code>\SetEmblems{\charscale{1.1}{\raisebox{-0.05em}{\decoglyph{l9825}}}}%</code></p> <p class="code"><code>{\charscale{1.1}{\raisebox{-0.05em}{\decoglyph{l9826}}}}</code></p> <div style="clear:both"></div> -<p>• You may also use images, or combined images and text. If you use images, they must be at the exact resolution required by your print service (usually 300dpi for gray, 600dpi for b/w), and at exact size without scaling. The <code>\InlineImage</code> command must be used. See <i>novel's</i> image documentation details. You may find that a vertical offset of <code>\nfs</code> (normal font size) is useful, as this will place the top of the emblem image at the top margin.</p> +<p class="item"><b>G.</b> You may also use images, or combined images and text. If you use images, they must be at the exact resolution required by your print service (typically 300dpi for gray, 800dpi for b/w), and at exact size without scaling. The <code><a href="#h7.2.2">\InlineImage</a></code> command must be used. You may find that a vertical offset of <code>\nfs</code> (normal font size) is useful, as this will place the top of the emblem image at the top margin.</p> <p class="code" style="text-indent:0px"><img class="floatright" src="html-resources/emblemimg.png" width="295" height="77" alt="emblem image"/> <code>\SetHeadFootStyle{4}<br/> \SetEmblems{\InlineImage[0pt,b]{spy.png}}%<br/> {\InlineImage[0pt,b]{spy.png}} </code></p> -<p>• At the small size of an emblem, it is difficult to use detailed artwork. A black/white image at 600dpi will print similarly to a font dingbat. Grayscale at 300dpi will probably not be satisfactory unless the emblem is a single shade of gray. For the above example, a character from the <i>Fontawesome</i> font was converted to a png image at mid-gray. It is less distracting than a black character from the font, but hard to discern. Note that "gray ink" will not be used for your book.</p> -<p>• Ask your print service whether the presence of a small image in each page header will affect production costs. Probably not, but if there is a different per-page charge when pages have an image... Oops!</p> -<p>• The layout calculation does not care whether emblems intrude into the margins. You will have to inspect your PDF to determine whether a header emblem is too tall, or a footer emblem too deep, for the allowed top and bottom margin clearance. Class option <i>shademargins</i> (in draft mode only) is helpful.</p> +<p class="item" style="position:relative"><b>H.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> At the small size of an emblem, it is difficult to use detailed artwork. A black/white image at 800dpi will print similarly to a font dingbat. Grayscale at 300dpi will probably not be satisfactory unless the emblem is a single shade of gray. For the above example, a character from the <i>Fontawesome</i> font was converted to a png image at mid-gray. It is less distracting than a black character from the font, but hard to discern. Note that "gray ink" will not be used for your book.</p> +<p>Ask your print service whether the presence of a small image in each page header will affect production costs. Probably not, but if there is a different per-page charge when pages have an image... Oops!</p> +<p class="item" style="position:relative"><b>I.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> The layout calculation does not care whether emblems intrude into the margins. You will have to inspect your PDF to determine whether a header emblem is too tall, or a footer emblem too deep, for the allowed top and bottom margin clearance. Class option <i>shademargins</i> (in draft mode only) is helpful.</p> <div style="clear:both"></div> </div><!-- end 4.3.4.5 --> <h5 id="h4.3.4.6">4.3.4.6. Setting and Changing Header Text</h5> <div class="d5" id="d4.3.4.6"> -<p class="noindent">If you are using head/foot style <i>1</i>, <i>4</i>, <i>5</i>, or <i>6</i>, it has text in the header. By default, that text is the author on verso pages, the title on recto pages. That is an accepted design for fiction, but it is not always the appropriate thing to do.</p> +<p class="item"><b>A.</b> If you are using <a href="#h4.3.3.1">head/foot style</a> <i>1</i>, <i>4</i>, <i>5</i>, or <i>6</i>, it has text in the header. By default, that text is the author on verso pages, the title on recto pages. That is an accepted design for fiction, but it is not always the appropriate thing to do.</p> <p>For example, in exotic cases you may use something such as <code>\SetTitle{ISBN9780123456789TEXTBLOCK}</code>, instead of the book's actual title, if required for the printer's database. Obviously you do not want that to appear in page headings!</p> -<p>This is solved using these commands:</p> +<p class="item"><b>B.</b> Header text may be changed to whatever you wish (as long as it fits):</p> <p class="code"><code>\SetVersoHeadText{<em>text</em>}</code><br/> <code>\SetRectoHeadText{<em>text</em>}</code></p> -<p>Unlike other settings, these commands can be used <i>both</i> in Preamble <i>and</i> in the document body. Whatever you set will take effect immediately (for pages that have header text) and remain in effect until changed by repeating these commands. For example, you might want to do that for a collection of short stories, or if your book has a Preface.</p> -<p>You may use ordinary LaTeX styling commands for the text:</p> +<p class="item"><b>C.</b> These commands can be used <i>both</i> in Preamble <i>and</i> in the document body. Whatever you set will take effect immediately (for pages that have header text) and remain in effect until changed by repeating these commands. For example, you might want to do that for a collection of short stories, or if your book has a Preface.</p> +<p class="item"><b>D.</b> You may use ordinary LaTeX styling commands for the text:</p> <p class="code"><code>\SetRectoHeadText{The \emph{Bad Boy} Chronicles}</code></p> -<p>You may also do more complicated things, such as setting certain words in a font other than the <i>headfont</i>. This is not advised, because you do not want to distract the reader from the main text; but it can be done.</p> -<p>• Avoid bold. Avoid underline. Really. Don't do it. No, no, no!</p> +<p>You may also do more complicated things, such as setting certain words in a font other than the <i>head font</i>. This is not advised, because you do not want to distract the reader from the main text; but it can be done.</p> +<p class="item" style="position:relative"><b>E.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Avoid bold. Avoid underline. Really. Don't do it. No, no, no!</p> </div><!-- end 4.3.4.6 --> </div><!-- end 4.3.4 --> @@ -1344,9 +1402,9 @@ ItalicFont=Montserrat-ExtraLightItalic.otf]%<br/> <h5 id="h4.3.5.1">4.3.5.1. <code>\thispagestyle{<em>choice</em>}</code></h5> <div class="d5" id="d4.3.5.1"> -<p>Command <code>\thispagestyle</code> is used in the document body, not Preamble. It changes the appearance of header/footer, only for the page on which the command appears. Ideally the command is used immediately after <code>\clearpage</code> or <code>\cleartorecto</code>, so that the applicable page is certain.</p> -<p>However, the command will be effective if used anywhere on a page, as long as you are certain <i>which</i> page is current. So, if you know that a particular section is exactly two pages long, you can use <code>\thispagestyle</code> at the beginning and end of the section, so that it applies to both pages.</p> -<p>The choice of page style is <i>not</i> one of the numbered global head/foot styles. Instead, choose from the following list. These are more versatile than the choices available in other TeX document classes. They are: <i>fancy</i>, <i>empty</i>, <i>footer</i>, <i>forcenumber</i>, <i>dropfoliobeneath</i>, and <i>dropfolioinside</i>.</p> +<p class="item"><b>A.</b> Command <code>\thispagestyle</code> is used in the document body, not Preamble. It changes the appearance of header/footer, only for the page on which the command appears. Ideally the command is used immediately after <code>\clearpage</code> or <code>\cleartorecto</code>, so that the applicable page is certain.</p> +<p class="item"><b>B.</b> The command will be effective if used anywhere on a page, as long as you are certain <i>which</i> page is current. So, if you know that a particular portion of text runs exactly two pages before <code>\clearpage</code>, you can use <code>\thispagestyle</code> at the beginning and end of the text, so that it applies to both pages.</p> +<p class="item"><b>C.</b> The choice of page style is <i>not</i> one of the numbered global head/foot styles. Instead, choose from the following list. These are more versatile than the choices available in other TeX document classes. They are: <i>fancy</i>, <i>empty</i>, <i>footer</i>, <i>forcenumber</i>, <i>dropfoliobeneath</i>, and <i>dropfolioinside</i>. If you choose <i>plain</i>, you will get <i>footer</i>, but that might not be what you want.</p> <p class="overhang"><code><b>\thispagestyle{fancy}</b></code><br/> This applies the default (fancy) page style, so it is not normally needed. Only use this command to over-ride some other <code>\thispagestyle</code> command, or to over-ride the <code>\SetChapterStartStyle</code> setting.</p> <p class="overhang"><code><b>\thispagestyle{empty}</b></code><br/> @@ -1370,9 +1428,9 @@ In this context, "folio" means page number. The header (if any) is blank. If the <h5 id="h4.3.5.2">4.3.5.2. <code>\SetChapterStartStyle{<em>choice</em>}</code></h5> <div class="d5" id="d4.3.5.2"> -<p class="noindent">The first page of each chapter, or of a section that is styled like a chapter, is usually an exception to the global page style.</p> -<p>If you use the <i>ChapterStart</i> environment to begin them, <code>\SetChapterStartStyle</code> sets the style that will be applied at the starting page. This global setting is in Preamble, but may be over-ridden locally.</p> -<p>The choices are the same as available for <code>\thispagestyle</code>. Default is <i>footer</i>.</p> +<p class="item"><b>A.</b> The first page of each chapter, or of a section that is styled like a chapter, is usually an exception to the global page style.</p> +<p class="item"><b>B.</b> In Preamble, <code>\SetChapterStartStyle</code> sets the default <code>thispagestyle</code> that will be applied on pages with the <i>ChapterStart</i> environment. You may still over-ride locally.</p> +<p class="item"><b>B.</b> The choices are the same as available for <code>\thispagestyle</code>. Default is <i>footer</i>.</p> </div><!-- end 4.3.5.2 --> </div><!-- end 4.3.5 --> </div><!-- end 4.3 --> @@ -1387,7 +1445,7 @@ In this context, "folio" means page number. The header (if any) is blank. If the <h2 id="h5">5. Chapters and Chapter-Like Sections</h2> <div class="d2" id="d5"> <p class="noindent">This section describes how chapters are designed. The <i>novel</i> class has commands specifically for this purpose. Do not use the ordinary TeX <code>\chapter</code> command, or any other TeX partitioning such as <code>\section</code>.</p> -<p>This also applies to content that is styled like a chapter, regardless of what it is called or where it appears. For example, if your book's front matter has a Preface, it is probably styled like a chapter. Something such as Acknowledgements might or might not be styled like a chapter, depending on length. Advice can be found in this documentation, in the part regarding Book Design.</p> +<p>This also applies to content that is styled like a chapter, regardless of what it is called or where it appears. For example, if your book's front matter has a Preface, it is probably styled like a chapter. Something such as Acknowledgements might or might not be styled like a chapter, depending on length. Advice can be found in <a href="#h8">section 8</a> of this documentation, regarding Book Design.</p> <h3 id="h5.1">5.1. Starting a Chapter</h3> <div class="d3" id="d5.1"> @@ -1395,38 +1453,39 @@ In this context, "folio" means page number. The header (if any) is blank. If the <h4 id="h5.1.1">5.1.1. <code>\clearpage</code> or <code>\cleartorecto</code></h4> <div class="d4" id="d5.1.1"> -<p class="noindent">Unless your chapters run continuously without page break, begin a new chapter using <code>\clearpage</code> or <code>\cleartorecto</code>. The first of these provides a new page, which will be verso or recto, without skipping a page. The second forces the chapter to begin on a recto page, if necessary inserting a blank verso.</p> -<p>Note that the common modern practice in fiction is to allow new chapters to begin either verso or recto, once you get past Chapter One. The only recent book I've read (from a major publisher), where chapters always started recto, had about 20 blank pages throughout the story. I believe the reason was to pad the book, so that it looked bigger. If you are using an American P.O.D. service, such padding might knock about $0.10 (estimated) from your profit, for each copy sold. So it's up to you to think about the tradeoffs between style, profit per book, and expected sales.</p> -<p>Prologue (if any), Chapter One, Epilogue (if any), and other special sections always begin recto.</p> -<p>Don't worry about using <code>\clearpage</code> or <code>\cleartorecto</code> twice. The compiler is smart enough to understand that you only meant to do it once, as long as there is no other code in between.</p> +<p class="item"><b>A.</b> Unless your chapters run continuously without page break, begin a new chapter using <code>\clearpage</code> or <code>\cleartorecto</code>. The first of these provides a new page, which will be verso or recto, without skipping a page. The second forces the chapter to begin on a recto page, if necessary inserting a blank verso.</p> +<p class="item"><b>B.</b> The common modern practice in fiction is to allow new chapters to begin either verso or recto, once you get past Chapter One. The only recent book I've read (from a major publisher), where chapters always started recto, had about 20 blank pages throughout the story. I believe the reason was to pad the book, so that it looked bigger. If you are using an American P.O.D. service, such padding might knock about $0.10 (estimated) from your profit, for each copy sold. So it's up to you to think about the tradeoffs between style, profit per book, and expected sales.</p> +<p class="item"><b>C.</b> Prologue (if any), Chapter One, Epilogue (if any), and other special sections always begin recto.</p> +<p class="item" style="position:relative"><b>D.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Don't worry about using <code>\clearpage</code> or <code>\cleartorecto</code> twice. The compiler is smart enough to understand that you only meant to do it once, as long as there is no other code in between.</p> </div><!-- end 5.1.1 --> <h4 id="h5.1.2">5.1.2. ChapterStart Environment</h4> <div class="d4" id="d5.1.2"> -<p class="noindent">The ChapterStart environment creates a block of white space, with a fixed height (number of normal lines). If you do not place much inside it, or even if you place nothing inside it, the space is the same.</p> -<p>If you place too much inside it, the space does not grow. Instead, the excess material overflows the bottom of the environment. There, the excess will underlie the main text. This is usually undesirable, but can sometimes be used for special effects.</p> +<p class="item"><b>A.</b> The ChapterStart environment creates a block of white space, with a fixed height (number of normal lines). If you do not place much inside it, or even if you place nothing inside it, the space is the same.</p> +<p class="item"><b>B.</b> If you place too much inside it, the space does not grow. Instead, the excess material overflows the bottom of the environment. There, the excess will underlie the main text. This is usually undesirable, but can sometimes be used for special effects.</p> <h5 id="h5.1.2.1">5.1.2.1. <code>\SetChapterStartStyle{<em>choice</em>}</code></h5> <div class="d5" id="d5.1.2.1"> -<p class="noindent">This command may be used in Preamble. Its default setting is <i>footer</i>.</p> -<p>In most cases, a <i>ChapterStart</i> page has a head/foot style that differs from the global default. Instead of writing <code><a href="#h4.3.5.1">\thispagestyle</a></code> commands for every chapter, use <code>\SetChapterStartStyle</code> to pick a style that will be applied wherever <i>ChapterStart</i> is used. The available choices are: fancy, footer, empty, dropfoliobeneath, dropfolioinside, forcenumber.</p> -<p>Regardless of the global header/footer style, and regardless of this setting, you can over-ride the style on a per-chapter basis, via an optional argument at the beginning of the <i>ChapterStart</i> environment.</p> +<p class="item"><b>A.</b> This command may be used in Preamble. Its default setting is <i>footer</i>.</p> +<p class="item"><b>B.</b> In most cases, a <i>ChapterStart</i> page has a head/foot style that differs from the global default. Instead of writing <code><a href="#h4.3.5.1">\thispagestyle</a></code> commands for every chapter, use <code>\SetChapterStartStyle</code> to pick a style that will be applied wherever <i>ChapterStart</i> is used. The available choices are: fancy, footer, empty, dropfoliobeneath, dropfolioinside, forcenumber.</p> +<p class="item"><b>C.</b> Regardless of this setting, you can over-ride the style on a per-chapter basis, via an optional argument at the beginning of the <i>ChapterStart</i> environment.</p> </div><!-- end 5.1.2.1 --> <h5 id="h5.1.2.2">5.1.2.2. <code>\SetChapterStartHeight{<em>lines</em>}</code></h5> <div class="d5" id="d5.1.2.2"> -<p class="noindent">This command may be used in Preamble. Its default setting is <i>10</i>.</p> -<p>This command sets the default height of the <i>ChapterStart</i> environment, measured as an integer number of normal lines. The smallest value is <i>3</i>. However, if the chapter also uses <i>dropfolioinside</i>, then the smallest value is <i>4</i>, because one line is lost when processing the <i>dropfolioinside</i> command.</p> -<p>Regardless of this setting, you can over-ride the height on a per-chapter basis, via an optional argument at the beginning of the <i>ChapterStart</i> environment.</p> +<p class="item"><b>A.</b> This command may be used in Preamble. Its default setting is <i>10</i>.</p> +<p class="item"><b>B.</b> This command sets the default height of the <i>ChapterStart</i> environment, measured as an integer number of normal lines. The smallest value is <i>3</i>.</p> +<p class="item"><b>C.</b> However, if the chapter also uses <i>dropfolioinside</i>, then the smallest value is <i>4</i>, because one line is lost when processing the <i>dropfolioinside</i> command.</p> +<p class="item"><b>D.</b> Regardless of this setting, you can over-ride the height on a per-chapter basis, via an optional argument at the beginning of the <i>ChapterStart</i> environment.</p> </div><!-- end 5.1.2.2 --> <h5 id="h5.1.2.3">5.1.2.3. <code>\begin{ChapterStart}[<em>lines</em>][<em>style</em>]</code></h5> <div class="d5" id="d5.1.2.3"> -<p class="noindent">The <i>ChapterStart</i> environment takes up to two optional arguments.</p> -<p>The first optional argument over-rides the default height of <i>ChapterStart</i>, for just this chapter. Its smallest value is <i>3</i>, except that its smalles value is <i>4</i> when <i>dropfolioinside</i> is used.</p> -<p>The second optional argument over-rides the header/footer style, for just this chapter. If you use the second optional argument, it must be one of the allowed choices for <code>\thispagestyle</code>, namely: fancy, footer, empty, dropfoliobeneath, dropfolioinside, forcenumber.</p> -<p>To use the second argument without the first, place an asterisk: <code>[*][<em>style</em>]</code></p> -<p>Whatever you place within <i>ChapterStart</i> will probably be higher on the page than you would like. To move it down, use the <code>\vspace*{<em>length</em>}</code> command (with asterisk) immediately after the environment begins.</p> +<p class="item"><b>A.</b> The <i>ChapterStart</i> environment takes up to two optional arguments.</p> +<p class="item"><b>B.</b> The first optional argument over-rides the default height of <i>ChapterStart</i>, for just this chapter. Its smallest value is <i>3</i>, except that its smallest value is <i>4</i> when <i>dropfolioinside</i> is used.</p> +<p class="item"><b>C.</b> The second optional argument over-rides the header/footer style, for just this chapter. If you use the second optional argument, it must be one of the allowed choices for <code>\thispagestyle</code>, namely: fancy, footer, empty, dropfoliobeneath, dropfolioinside, forcenumber.</p> +<p class="item"><b>D.</b> To use the second argument without the first, place an asterisk: <code>[*][<em>style</em>]</code></p> +<p class="item"><b>E.</b> Whatever you place within <i>ChapterStart</i> will probably be higher on the page than you would like. To move it down, use the <code>\vspace*{<em>length</em>}</code> command (with asterisk) immediately after the environment begins.</p> <p>As with all environments, this one must be closed using <code>\end{ChapterStart}</code>.</p> </div><!-- end 5.1.2.3 --> </div><!-- end 5.1.2 --> @@ -1438,12 +1497,13 @@ In this context, "folio" means page number. The header (if any) is blank. If the <h5 id="h5.1.3.1">5.1.3.1. <code>\SetChapterFont[<em>features</em>]{<em>font</em>}</code><br/> <span class="dbloc">5.1.3.1 </span><code>\SetSubchFont[<em>features</em>]{<em>font</em>}</code></h5> <div class="d5" id="d5.1.3.1"> -<p class="noindent">These global commands may be used in Preamble. They create font commands <code>\chapterfont</code> and <code>\subchfont</code> that may be used to style text anywhere in your document, like this:</p> +<p class="item"><b>A.</b> These global commands may be used in Preamble. They create font commands <code>\chapterfont</code> and <code>\subchfont</code> that may be used to style text anywhere in your document, like this:</p> <p class="code"><code>{\chapterfont <em>text</em>}<br/> {\subchfont <em>text</em>}</code></p> -<p>The <i>chapterfont</i> is automatically applied to text in <code>\ChapterTitle</code> commands, and the <i>subch</i> font is automatically applied to text in chapter subtitles (see below).</p> -<p>These fonts are pre-configured, based on the document's parent font. They have TeX ligatures and kerning, and use Lining numbers instead of Old Style. The <i>chapterfont</i> is scaled at 1.6, and the <i>subchfont</i> is scaled at 1.2, compared to normal font size. Ordinary (common) ligatures are not used, because such ligatures are best avoided with enlarged text.</p> -<p>If you don't like the pre-configured fonts, then you may specify your own, using <i>fontspec</i> syntax. Here is what the default codes look like:</p> +<p class="item"><b>B.</b> The <i>chapter font</i> is automatically applied to text in <code>\ChapterTitle</code> commands.</p> +<p class="item"><b>C.</b> The <i>subch</i> font is automatically applied to text in chapter subtitles (see below).</p> +<p class="item"><b>D.</b> These fonts are pre-configured, based on the document's parent font. They have TeX ligatures and kerning, and use Lining numbers instead of Old Style. The <i>chapter font</i> is scaled at 1.6, and the <i>subch font</i> is scaled at 1.2, compared to normal font size. Ordinary (common) ligatures are not used, because such ligatures are best avoided with enlarged text.</p> +<p class="item"><b>E.</b> If you don't like the pre-configured fonts, then you may specify your own, using <i>fontspec</i> syntax. Here is what the default codes look like:</p> <p class="code"><code>\SetChapterFont[Numbers=Lining,Scale=1.6]{\parentfont}<br/> \SetSubchFont[Numbers=Lining,Scale=1.2]{\parentfont}</code></p> </div><!-- end 5.1.3.1 --> @@ -1451,16 +1511,17 @@ In this context, "folio" means page number. The header (if any) is blank. If the <h5 id="h5.1.3.2">5.1.3.2. <code>\ChapterTitle[<em>alignment</em>]{<em>text</em>}</code><br/> <span class="dbloc">5.1.3.2. </span><code>\ChapterSubtitle[<em>alignment</em>]{<em>text</em>}</code></h5> <div class="d5" id="d5.1.3.2"> -<p class="noindent">Text within <code>\ChapterTitle</code> is styled using the <i>chapterfont</i>, and text within <code>\ChapterSubtitle</code> is automatically styled using the <i>subchfont</i>. You can locally over-ride that, using font commands within the text.</p> -<p>The optional <i>alignment</i> is one of <i>l</i>, <i>c</i>, <i>r</i> (left, center, right). Default <i>c</i>.</p> -<p>You don't have to use either of these commands. Or, you can use either of them more than once! All these commands do is style the text.</p> -<p>The styled text is limited to one line (no wrap). If you have a long chapter title or subtitle, then break it into pieces of manageable size, by repeating the command(s). Example:</p> +<p class="item"><b>A.</b> Text within <code>\ChapterTitle</code> is styled using the <i>chapter font</i>, and text within <code>\ChapterSubtitle</code> is automatically styled using the <i>subch font</i>.</p> +<p class="item"><b>B.</b> You can locally over-ride these fonts, using font commands in the text.</p> +<p class="item"><b>C.</b> The optional <i>alignment</i> controls how the element is horizontally placed. Choices are <i>l</i>, <i>c</i>, <i>r</i> (left, center, right). Default <i>c</i>.</p> +<p class="item"><b>D.</b> You don't have to use either of these commands. Or, you can use either of them more than once! All these commands do is style the text. They do not have any meaning that is controlled by other macros.</p> +<p class="item"><b>E.</b> The styled text is limited to one line (no wrap) per command. If you have a long chapter title or subtitle, then break it into pieces of manageable size, by repeating the command(s). Example:</p> <p class="code"><img class="floatright" src="html-resources/chaptertitlesubtitle.png" width="338" height="179" title="chapter title and subtitle, left aligned" alt="chapter title and subtitle, left aligned"/> <code><small> \begin{ChapterStart}<br/> -\vspace{2\nbs}<br/> +\vspace{2<span style="cursor:help" title="normal baseline skip">\nbs</span>}<br/> \ChapterTitle[l]{XV}<br/> -\vspace{\nbs}<br/> +\vspace{<span style="cursor:help" title="normal baseline skip">\nbs</span>}<br/> \ChapterSubtitle[l]{In which Lord Withens, returned from his quest,}<br/> \ChapterSubtitle[l]{encounters an Army of Gnomes at his castle gate.}<br/> \end{\ChapterStart}<br/> @@ -1470,13 +1531,13 @@ Following the dark and stormy night, it was a bright and sunny day. That did not <h5 id="h5.1.3.3">5.1.3.3. <code>\ChapterDeco[<em>alignment scale</em>]{<em>text</em>}</code></h5> <div class="d5" id="d5.1.3.3"> -<p class="noindent">This command is simply a way for you to remember that its content is neither the title nor subtitle of the chapter. Typical usage is to place a decorative element.</p> -<p>There is a single command option, which is parsed for a letter and/or a number, with our without comma or space. The <i>alignment</i> letter is one of <i>l</i>, <i>c</i>, <i>r</i> (left, center, right). Default <i>c</i>. The numerical <i>scale</i> (may be decimal) changes the size of the text, and tweaks its vertical position. Default scale is <i>1</i>.</p> -<p>For your convenience, the <i>NovelDeco</i> font (included with <i>novel</i> has a few possibilities. they are accessed via the <code>\decoglyph</code> command. The list of available decorations, and codes to access them, are in the file <i>NovelDeco-glyphs.pdf</i>, which is in the <i>extras</i> folder within this documentation. Note that the decorations can be placed anywhere in your document, not just in <code>\ChapterDeco</code>.</p> -<p><img class="floatright" src="html-resources/lowdown.png" width="300" height="141" title="chapter title with decoration" alt="chapter title with decoration"/>Most of the <code>\decoglyph</code> decorations look best when the optional <i>scale</i> is near <i>4</i>. Example:</p> +<p class="item"><b>A.</b> This command is simply a way for you to remember that its content is neither the title nor subtitle of the chapter. Typical usage is to place a decorative element.</p> +<p class="item"><b>B.</b> There is a single command option, which is parsed for a letter and/or a number, with our without comma or space. The <i>alignment</i> letter is one of <i>l</i>, <i>c</i>, <i>r</i> (left, center, right). Default <i>c</i>. The numerical <i>scale</i> (may be decimal) changes the size of the text, and tweaks its vertical position. Default scale is <i>1</i>.</p> +<p class="item"><b>C.</b> For your convenience, the <i>NovelDeco</i> font (included with <i>novel</i> has a few possibilities. they are accessed via the <code>\decoglyph</code> command. The list of available decorations, and codes to access them, are in the file <i>NovelDeco-glyphs.pdf</i>, which is in the <i>extras</i> folder within this documentation. Note that the decorations can be placed anywhere in your document, not just in <code>\ChapterDeco</code>.</p> +<p class="item"><b>D.</b> <img class="floatright" src="html-resources/lowdown.png" width="300" height="141" title="chapter title with decoration" alt="chapter title with decoration"/>Most of the <code>\decoglyph</code> decorations look best when the optional <i>scale</i> is near <i>4</i>. Example:</p> <p class="code"><code><small> \begin{ChapterStart}[8]<br/> -\vspace{2\nbs}<br/> +\vspace{2<span style="cursor:help" title="normal baseline skip">\nbs</span>}<br/> \ChapterTitle[l]{3}<br/> \ChapterSubtitle[l]{The Low-Down}<br/> \ChapterDeco[l4]{\decoglyph{n9591}\decoglyph{r9656}}<br/> @@ -1487,12 +1548,13 @@ I didn't hear the low-down until the following Saturday. By then, all hell had b <h5 id="h5.1.3.4">5.1.3.4. Chapter Epigraph</h5> <div class="d5" id="d5.1.3.4"> -<p class="noindent">If you would like to place an Epigraph within <i>ChapterStart</i>, there is no special command for that purpose. You do it the same way you would do it anywhere else: Use the <i>adjustwidth</i> environment to limit the text width. You may use the <i>parascale</i> environment to scale the block of text, without disturbing the following line grid, as long as you are within <i>ChapterStart</i>. Example:</p> +<p class="item"><b>A.</b> If you would like to place an Epigraph within <i>ChapterStart</i>, there is no special command for that purpose. You do it the same way you would do it anywhere else: Use the <i>adjustwidth</i> environment to limit the text width. You may use the <i>parascale</i> environment to scale the block of text, without disturbing the following line grid, as long as you are within <i>ChapterStart</i>.</p> +<p class="item"><b>B.</b> <b>Example:</b></p> <p class="code"><img class="floatright" src="html-resources/bookofbeirh.png" width="344" height="191" title="chapter title with epigraph" alt="chapter title with epigraph"/><code><small> \begin{ChapterStart}<br/> -\vspace{2\nbs}<br/> +\vspace{2<span style="cursor:help" title="normal baseline skip">\nbs</span>}<br/> \ChapterTitle{16. The Great Incantation}<br/> -\vspace{\nbs}<br/> +\vspace{<span style="cursor:help" title="normal baseline skip">\nbs</span>}<br/> \begin{adjustwidth}{4em}{4em}<br/> \begin{parascale}[0.88]<br/> In the third moon of the third raveling, in the third hour of the third day, Fingly shall come again.\par<br/> @@ -1502,30 +1564,31 @@ In the third moon of the third raveling, in the third hour of the third day, Fin \end{ChapterStart}<br/> In the latter days of the Dorf dynasty, a marvelous apparition sent the King's guard scrambling in terror. Elders soon declared that it was the return of Fingly, prophesized in the Book of Beirh. ...\par </small></code></p> +<p class="item" style="position:relative"><b>C.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> It is not necessary to load the <i>epigraph</i> package. Simply construct your own style of epigraph using other methods. But if you do load <i>epigraph</i>: Only use <code>\epigraph</code>, or the <code>epigraphs</code> environment, within the ChapterStart environment, or on a display page. Commands <code>\epigraphhead</code>, <code>\dropchapter</code>, <code>\undocrop</code> do not work in <i>novel</i>. The <code>\cleartoevenpage[<i>option</i>]</code> command does work. Ignore the material regarding epigraphs on part pages or in bibliographies.</p> </div><!-- end 5.1.3.4 --> </div><!-- end 5.1.3 --> <h4 id="h5.1.4">5.1.4. ChapterStart With Image</h4> <div class="d4" id="d5.1.4"> -<p class="noindent">You can use an image in chapter titles. If you place an image, use one of the image commands defined by <i>novel</i> elsewhere in the documentation. Any other method is likely to push the following text off-grid.</p> -<p>Be sure that you are licensed to use the image. Many clipart catalogs "for personal use only," prohibit usage in commercial books. One possible source is <a href="http://openclipart.org" rel="external" target="new">openclipart.org</a> (note the <em>.org</em>).</p> +<p class="item"><b>A.</b> You can use an image in chapter titles. If you place an image, use one of the image commands defined by <i>novel</i> elsewhere in the documentation.</p> +<p class="item"><b>B.</b> Be sure that you are licensed to use the image. Many clipart catalogs "for personal use only," prohibit usage in commercial books. One possible source is <a href="http://openclipart.org" rel="external" target="new">openclipart.org</a> (note the <em>.org</em>).</p> -<h5 id="h5.1.4.1">5.1.4.1. Text Over Image</h5> +<h5 id="h5.1.4.1">5.1.4.1. Text Over Inline Image</h5> <div class="d5" id="d5.1.4.1"> -<p class="noindent"><img class="floatright" src="html-resources/ctimg35.png" width="79" height="196" alt="example of chapter title image, text over"/> You may position text over an image. It is best to use black text, or grayscale text that is much darker than the underlying image. Results are uncertain if you try to place light text over a dark image, because it depends on the print technology, which is not within your control.</p> -<p>Example, where the command <code>\unifrac</code> calls for the font <i>UnifrakturMaguntia.ttf</i>. Note that the font command is <i>outside</i> \charscale:</p> +<p class="item"><b>A.</b> <img class="floatright" src="html-resources/ctimg35.png" width="79" height="196" alt="example of chapter title image, text over"/> You may position text over an <code><a href="#h7.2.2">\InlineImage</a></code>. You must use black text, or grayscale text that is much darker than the underlying image.</p> +<p class="item"><b>B.</b> <b>Example:</b> Here, the command <code>\unifrac</code> calls for the font <i>UnifrakturMaguntia.ttf</i>. Note that the font command is <i>outside</i> \charscale:</p> <p class="code"><code><small>\begin{ChapterStart}<br/> -\BlockImage{sword.png} <span class="ap">% centered by default</span><br/> -{\unifrak\centering\charscale[3,0pt,4\nbs]{35}\par}<br/> +\FloatImage{sword.png} <span class="ap">% centered by default</span><br/> +{\unifrak\centering\charscale[3,0pt,4<span style="cursor:help" title="normal baseline skip">\nbs</span>]{35}\par}<br/> </small>\end{ChapterStart}</code></p> </div><!-- end 5.1.4.1 --> <h5 id="h5.1.4.2">5.1.4.2. Text Built Into Image</h5> <div class="d5" id="d5.1.4.2"> -<p class="noindent">If the text is not ordinary black, or not much darker than the background image, then it is better to include the text as part of the raster image. The reason is that "white ink" will not be used for your book. Also, you cannot use image transparency.</p> -<p>Although light text over a dark image may appear as expected in PDF, and print that way on some printers, there are many exceptions. If in doubt, ask your print service. In this example, the number is built into the image itself:</p> +<p class="item"><b>A.</b> If the text is not much darker than the background image, then it is better to include the text as part of the raster image. The reason is that "white ink" will not be used for your book. Also, you cannot use image transparency.</p> +<p class="item"><b>B.</b> <b>Example:</b> The number is built into the image itself.</p> <p class="code"><img class="floatright" src="html-resources/smfingerprint8.png" width="86" height="70" alt="example of chapter title image, raster text"/><code><small>\begin{ChapterStart}<br/> -\BlockImage[l]{smfingerprint8.png}<br/> +\FloatImage[l]{smfingerprint8.png}<br/> \end{ChapterStart}</small></code></p> </div><!-- end 5.1.4.2 --> </div><!-- end 5.1.4 --> @@ -1537,16 +1600,16 @@ In the latter days of the Dorf dynasty, a marvelous apparition sent the King's g <h4 id="h5.2.1">5.2.1. Reduced-Height ChapterStart</h4> <div class="d4" id="d5.2.1"> -<p class="noindent">Since the <i>ChapterStart</i> environment does not automatically begin a new page, you can use it for continuously running chapters. In Preamble, set a short height, such as <code>\SetChapterStartHeight{4}</code>. Also use <code>\SetChapterStartStyle{fancy}</code> so that headers don't disappear.</p> -<p>Throughout the book, you can make local adjustments to the <i>ChapterStart</i> height, so that they don't fall at an inconvenient location (such as at the bottom of a page). Yes, I have seen this done in published works. If a particular chapter is sufficiently important that it deserves a page break, or a lot more space, you can do that easily.</p> +<p class="item"><b>A.</b> Since the <i>ChapterStart</i> environment does not automatically begin a new page, you can use it for continuously running chapters. In Preamble, set a short height, such as <code>\SetChapterStartHeight{4}</code>. Also use <code>\SetChapterStartStyle{fancy}</code> so that headers don't disappear.</p> +<p class="item"><b>B.</b> Throughout the book, you can make local adjustments to the <i>ChapterStart</i> height, so that they don't fall at an inconvenient location (such as at the bottom of a page). Yes, I have seen this done in published works. If a particular chapter is sufficiently important that it deserves a page break, or a lot more space, you can do that easily.</p> </div><!-- end 5.2.1 --> <h4 id="h5.2.2">5.2.2. <code>\QuickChapter[<em>linelength</em>]{<em>chapter title</em>}</code></h4> <div class="d4" id="d5.2.2"> -<p class="noindent">The <code>\QuickChapter</code> command inserts two blank lines. In the gap, the chapter title is left-justified using <i>subchfont</i> (not <i>chapterfont</i>). It is slightly raised from the normal baseline, because this looks better; but the following text is back on-grid. By default, the start of the following text will be un-indented.</p> -<p>If the optional <i>linelength</i> is provided, then a dash will be written after the title, at the position and thickness typical of the em dash in <i>subchfont</i>. If <i>linelength</i> is specified in units of length, then that will be the length of the line. But if <i>linelength</i> is an asterisk, then the line will fill to the right margin.</p> -<p>Note that this command is probably too obtrusive for mere scene changes within a chapter.</p> -<p>Example:</p> +<p class="item"><b>A.</b> The <code>\QuickChapter</code> command inserts two blank lines. In the gap, the chapter title is left-justified using <i>subch font</i> (not <i>chapter font</i>). It is slightly raised from the normal baseline, because this looks better; but the following text is back on-grid. By default, the start of the following text will be un-indented.</p> +<p class="item"><b>B.</b> If the optional <i>linelength</i> is provided, then a dash will be written after the title, at the position and thickness typical of the em dash in <i>subch font</i>. If <i>linelength</i> is specified in units of length, then that will be the length of the line. But if <i>linelength</i> is an asterisk, then the line will fill to the right margin.</p> +<p class="item"><b>C.</b> <code>\QuickChapter</code> is probably too obtrusive, for mere scene changes within a chapter.</p> +<p class="item"><b>D.</b> <b>Example:</b></p> <p class="code"><code><small>Then he looked at me with a sneer, and barked, “You better haul your can over to Vinny's joint, before the Boss finds out.”\par<br/> \QuickChapter[3em]{16. At Vinny’s}<br/> So I took his advice, and hauled my can over to Vinny’s. It was everything I had expected, and worse.\par<br/> @@ -1557,11 +1620,11 @@ The bouncer wasn't the biggest one I’d ever seen, but he was the ugliest. <h3 id="h5.3">5.3. Scene Breaks</h3> <div class="d3" id="d5.3"> -<p class="noindent">There are several commands dedicated to the purpose of scene breaks.</p> +<p class="item"><b>A.</b> There are several commands dedicated to the purpose of scene breaks.</p> <p class="code"><code><b>\scenebreak</b></code> inserts a one-line blank skip. The following line of text is not indented.</p> <p class="code"><code><b>\sceneline</b></code> inserts a one-line skip, containing a short centered line. The following line of text is not indented.</p> <p class="code"><code><b>\scenestars</b></code> inserts a one-line skip, containing three spaced, centered asterisks. The following line of text is not indented.</p> -<p style="margin-top:20px">Examples:</p> +<p class="item"><b>B.</b> <b>Examples:</b></p> <p class="code"><img style="float:right; margin-left:16px;" src="html-resources/scenebreaks.png" width="331" height="236" alt="scene breaks"/> <code><small> \noindent It was a dark and stormy night.\par<br/> @@ -1576,26 +1639,30 @@ Who could blame them? It's not like they lived in Italy.\par<br/> Ah, such ill fortune haunted the Withens!\par<br/> Unfortunately, novelists of that era had so little to write about, or they would have chosen another family to pursue.\par </small></code></p> -<p>If you are using <code>\scenebreak</code> and the gap occurs at the very bottom or top of a page, then manually substitute <code>\sceneline</code> or <code>\scenestars</code> there. This is a standard way to indicate that the gap is intentional. The substitution is not automatic.</p> +<p class="item" style="position:relative"><b>C.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> If you are using <code>\scenebreak</code> and the gap occurs at the very bottom or top of a page, then manually substitute <code>\sceneline</code> or <code>\scenestars</code> there. This is a standard way to indicate that the gap is intentional. The substitution is not automatic.</p> <h4 id="h5.3.1">5.3.1. <code>\SetScenebreakIndent{<em>true</em> or <em>false</em>}</code></h4> <div class="d4" id="d5.3.1"> <p class="noindent">This global command may only be used in the Preamble. Default is <i>false</i>.</p> <p>Normally, text begins without a paragraph indent, after each scene break. This is standard in fiction. If you prefer that each new scene begins indented, use this command. It works only with <code>\scenebreak</code>, <code>\sceneline</code>, and <code>\scenestars</code>.</p> -<p><small>Note: <code>\SetScenebreakIndent</code> is new in version 1.40.3. When set to <i>true</i> it is identical to the <code>\IndentAfterScenebreak</code> command from prior versions. The older command is still honored. The new command has syntax more consistent with other <i>novel</i> settings.</small></p> </div><!-- end 5.3.1 --> </div><!-- end 5.3 --> <h3 id="h5.4">5.4. Automatic Chapter Numbering</h3> <div class="d3" id="d5.4"> -<p class="noindent">By popular demand, here is how to add automatic chapter numbering:</p> -<p>Counter <i>novelcn</i> is pre-defined, and initialized to <i>1</i> (not zero). If you simply wish to print its value as a number, then increment the count, do something like this:</p> +<p class="noindent">By popular demand, here is how to add automatic chapter numbering, even though it is easier to just type <i>Chapter One</i> or whatever you need:</p> +<p class="item"><b>A.</b> Counter <i>novelcn</i> is pre-defined, and initialized to <i>1</i> (not zero). If you simply wish to print its value as a number, then increment the count, do something like this:</p> <p class="code"><code> \ChapterTitle{Chapter \the\value{novelcn}\stepcounter{novelcn}} </code></p> <p>That will print Chapter 1, Chapter 2, and so forth. Of course, only do this for real, numbered chapters, not for "chapter-like" sections. If your book has several parts, and each part re-sets its own chapter count, use \setcounter{novelcn}{1} prior to the first chapter in each part.</p> -<p>If you would like the number to be spelled out, as in Chapter One, Chapter Two, and so forth, then try the <i>fmtcount</i> package. It can also do ordinals such as First Chapter, Second Chapter. See the <i>fmtcount</i> package documentation for details.</p> -<p>If your document's language is other than English, use <code>\setdefaultlanguage</code> <i>before</i> you load the <i>fmtcount</i> package. If you do it later, then positioning will be incorrect.</p> +<p class="item"><b>B.</b> If you would like the number to be spelled out, as in Chapter One, Chapter Two, and so forth, then try the <i>fmtcount</i> package. It can also do ordinals such as First Chapter, Second Chapter. See the <i>fmtcount</i> package documentation for details.</p> +<p class="item"><b>C.</b> If your document's language is other than English, use <code>\setdefaultlanguage</code> <i>before</i> you load the <i>fmtcount</i> package. If you do it later, then positioning will be incorrect.</p> +<p class="item"><b>D.</b> <b>Example:</b> With <i>fmtcount</i> loaded in Preamble.</p> +<p class="code"><code> +% if necessary, use \setdefaultlanguage first.<br/> +\RequirePackage{fmtcount}<br/> +</code></p> <p>Example usage in chapter titles:</p> <p class="code"><code> \ChapterTitle{\Ordinalstring{novelcn}\stepcounter{novelcn} Robbery} %1<br/> @@ -1611,7 +1678,8 @@ Unfortunately, novelists of that era had so little to write about, or they would <h4 id="h5.5.1">5.5.1. First Character Special</h4> <div class="d4" id="d5.5.1"> -<p class="noindent">Use the <code>\charscale</code> command to size the first letter (or more than one letter) so that it stands above the remainder of the line. Remember that you will see a capital letter standing next to lowercase letters, so it will appear taller. You may also use a font command. Example, where <code>\NewFontFace\alexbrush{AlexBrush-Regular.ttf}</code> appears in Preamble:</p> +<p class="item"><b>A.</b> Use the <code>\charscale</code> command to size the first letter (or more than one letter) so that it stands above the remainder of the line. Remember that you will see a capital letter standing next to lowercase letters, so it will appear taller. You may also use a font command.</p> +<p class="item"><b>B.</b> <b>Example:</b> Where <code>\NewFontFace\alexbrush{AlexBrush-Regular.ttf}</code> appears in Preamble.</p> <p class="code"><code> \noindent\charscale[1.6]{\alexbrush I}\hspace{0.2em}t was a dark and stormy night. Well, it really wasn't all that dark, seeing as how this story is set in Las Vegas. </code></p> @@ -1620,21 +1688,21 @@ Unfortunately, novelists of that era had so little to write about, or they would <h4 id="h5.5.2">5.5.2. First Line Small Caps</h4> <div class="d4" id="d5.5.2"> -<p class="noindent">If you want to place a portion of the first line in small caps, then simply do it using <code>\textsc{text}</code>. This effect can also continue to additional lines. That is, it does not automatically stop at the end of the first line.</p> -<p>The <i>magaz</i> package is pre-loaded in <i>novel</i>. It provides the <code>\FirstLine</code> command, which takes the entire first paragraph as its argument. Place <code>\noindent</code> inside. You may also style the first letter (or more than one) as described above; the styled letter appears inside the <code>\FirstLine</code> command. Example:</p> +<p class="item"><b>A.</b> If you want to place a portion of the first line in small caps, then simply do it using <code>\textsc{text}</code>. This effect can also continue to additional lines. That is, it does not automatically stop at the end of the first line.</p> +<p class="item"><b>B.</b> The <i>magaz</i> package is pre-loaded in <i>novel</i>. It provides the <code>\FirstLine</code> command, which takes the entire first paragraph as its argument. Place <code>\noindent</code> inside. You may also style the first letter (or more than one) as described above; the styled letter appears inside the <code>\FirstLine</code> command.</p> +<p class="item"><b>C.</b> <b>Example:</b></p> <p class="code"><code> \FirstLine{\noindent\charscale[1.6]{\alexbrush I}\hspace{0.2em}t was a dark and stormy night. Well, it really wasn't all that dark, seeing as how this story is set in Las Vegas.} </code></p> <p class="centerimg"><img src="html-resources/firstlinespecial.png" width="682" height="84" alt="first line small caps" title="first line small caps"/></p> </div><!-- end 5.5.2 --> -<h4 id="h5.5.3">5.5.3. Drop Cap</h4> +<h4 id="h5.5.3">5.5.3. Drop Caps</h4> <div class="d4" id="d5.5.3"> -<p class="noindent">The <i>lettrine</i> package is pre-loaded and pre-configured in <i>novel</i>. The configuration forces lines to remain on grid. Lines are not added if the drop cap rises above prevailing text (DiscardVskip is very large). The Findent is set to 0.25em, and Nindent is set to 0em.</p> -<p>For information, see the <i>lettrine</i> package documentation and examples. Be aware that creating good-looking drop caps is harder than you think, even with automation. That is because you will be visually comparing an enlarged letter to surrounding normal text, and it is difficult to align the drop cap with the margin, in a way that looks right. In any case, drop caps are rarely used in popular fiction.</p> -<p>Do not use the <code>[image=true]</code> option with <i>lettrine</i>. Instead, place an image using <i>novel's</i> own <code>\InlineImage</code> command. If you set its vertical offset at baseline, then the bottom of the image will align with the baseline of the final line in the displaced text.</p> -<p>Note that <code>\lettrine</code> has an additional argument after the drop cap.</p> -<p>You cannot use <code>\lettrine</code> in conjunction with <code>\FirstLine</code>. This is a fact of life. If you wish to use a drop cap and also have the first line in small caps, do this: Use empty braces <code>{}</code> as the final argument to <code>\lettrine</code>. Then use <code>\textsc</code> with enough text to continue to the second line. Note where the first line ends. Then, move the closing brace of <code>\FirstLine</code> to that position. You may place the closing brace in the middle of a word, at a hyphenation point, if you wish (do not manually add the hyphen). This is the only method that provides a satisfactory layout.</p> +<p class="item"><b>A.</b> The <i>drop cap</i> is an enlarged letter (or image) at the beginning of chapter text, with the first few lines of text wrapped around it:</p> +<p class="centerimg"><img src="html-resources/dropcap.png" width="431" height="112" title="drop cap" alt="drop cap"/></p> +<p class="item"><b>B.</b> Works of popular fiction rarely use drop caps. Instead, having a special first character (<a href="#h5.5.1">section 5.5.1</a>) is more common, as it presents fewer layout problems, and is less distracting.</p> +<p class="item" style="position:relative"><b>C.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> The <code>\dropcap</code> command is native to <i>novel</i>. You may also load and use <i>lettrine</i>. An extensive discussion of drop caps is in <a href="#hF">Appendix F</a>.</p> </div><!-- end 5.5.3 --> </div><!-- end 5.5 --> @@ -1648,9 +1716,9 @@ Unfortunately, novelists of that era had so little to write about, or they would <h2 id="h6">6. Text Sizes and Styling</h2> <div class="d2" id="d6"> <p class="noindent">This section describes how to change the size of text, how to style text (such as italics), and how to move it around. It also describes some miscellaneous commands that are intended to modify text.</p> -<p>Information about how to choose the global, main text point size is described in <a href="#h4.2.1.2">section 4.2.1.2</a>. General information about choosing fonts and font features is in <a href="#hC">Appendix C</a> and <a href="#hE">Appendix E</a>.</p> -<p>There is no direct setting for normal baselineskip; it is automatically calculated from the size of the textblock (using Trim Size, Margins, and header/footer layouts) and <a href="#h4.3.2">lines per page</a>.</p> -<p>The included <i>microtype</i> package is pre-configured, using these settings:</p> +<p class="item"><b>A.</b> Information about how to choose the global, main text point size is described in <a href="#h4.2.1.2">section 4.2.1.2</a>. General information about choosing fonts and font features is in <a href="#hC">Appendix C</a> and <a href="#hE">Appendix E</a>. Styles particularly used at chapter openings are described in <a href="#h5">section 5</a>.</p> +<p class="item"><b>B.</b> There is no direct setting for normal baselineskip; it is automatically calculated from the size of the textblock (using Trim Size, Margins, and header/footer layouts) and <a href="#h4.3.2">lines per page</a>.</p> +<p class="item"><b>C.</b> The included <i>microtype</i> package is pre-configured, using these settings:</p> <p class="code"><code>\microtypesetup{config=novel-microtype,final,stretch=20,shrink=20}</code></p> <p>File <i>novel-microtype.cfg</i> uses settings typical of the kind of book-weight font that you are likely to use. The stretch and shrink factors are moderate. Calculation is always final, so that you see the same effect whether or not you use the <i>draft</i> class option. If you wish to change any of these, see the <i>microtype</i> package documentation. Note that since you are compiling with LuaLaTeX, some features of <i>microtype</i> may not be available.</p> @@ -1660,49 +1728,67 @@ Unfortunately, novelists of that era had so little to write about, or they would <h4 id="h6.1.1">6.1.1. Surprise! Traditional TeX Font Size Commands Are Disabled.</h4> <div class="d4" id="d6.1.1"> -<p class="noindent">Ah, the simplicity of TeX font size commands, such as <code>\small</code> and <code>\LARGE</code>. But in <i>novel</i>, they don't work. If you write <code>{\LARGE text}</code>, then the included text appears at normal size. This is by design.</p> -<p>Why? In <i>novel</i>, the focus is on maintaining a constant baselineskip, so that facing pages have text aligned. This is impossible with the standard TeX commands. In particular, commands to increase font size will change the baselineskip, whether you like it or not, even if you try to code for a constant baselineskip. That's just the way TeX works.</p> -<p>The one exception is that <a href="#hXXXXX">footnotes</a> will appear with smaller than normal size and skip. But this is done automatically. You cannot manipulate it with a size command.</p> -<p>Fortunately, there are not a lot of occasions where fiction needs to change font size. In <i>novel</i>, there are new commands to address each situation.</p> +<p class="item"><b>A.</b> Standard LaTeX font size commands, such as <code>\small</code> and <code>\LARGE</code>, are disabled in <i>novel</i>. If you use them, they will be ignored, and the affected text will be printed without modification. This is by intent, for the purpose of maintaining the baseline grid.</p> +<p class="item"><b>B.</b> The one exception is that <a href="#h6.5.1">footnotes</a> will appear with smaller than normal size and skip. But this is done automatically. You cannot manipulate it with a size command.</p> +<p class="item"><b>C.</b> Use <i>novel's</i> own commands for manipulating font size. The correct command depends on the quantity of text involved.</p> </div><!-- end 6.1.1 --> -<h4 id="h6.1.2">6.1.2. <code>\charscale[<em>scale,hoffset,voffset</em>]{<em>text</em>}</code> and starred</h4> +<h4 id="h6.1.2">6.1.2. <code>\charscale[<em>scale,hoffset,voffset</em>]{<em>text, but not image</em>}</code> and starred</h4> <div class="d4" id="d6.1.2"> -<p class="noindent">The <code>\charscale</code> command may be used for a short amount of text, where there is no line break. The command will throw an error if the included text has <code>\\</code> or <code>\par</code> or any other command that breaks the line. Text within <code>\charscale</code> does not wrap. You may not place an image in <code>\charscale</code>.</p> -<p>When used without the option, <code>\charscale</code> echoes the included text. However, the text gains the magical ability to extend above or below the normal line of text, without pushing apart the baselines. This is useful if the text has some unusual character that is extraordinarily tall or deep.</p> -<p>Using the option, you may uniformly scale the text by any amount, and displace it horizontally and vertically. The text can overlie other text, or any previously-placed image.</p> -<p>With the unstarred command, the scaled width of the text will occupy horizontal space, even if the text is displaced far away. But with the starred command, the text does not occupy any horizontal space.</p> -<p>The single optional argument may include up to three comma-separated values. The first value is a number, indicating the scale. If a second argument is used, it is the length of horizontal offset (positive is right). If a third number is used, it is the length of the vertical offset (positive is up). Remember that if all you want to do is scale the text, without positioning it, then you only need to provide the scale.</p> -<p>• Note: <code>\charscale</code> does not commute with some other TeX commands. That is, the results of <code>\charscale{\othercommand{<em>text</em>}}</code> and <code>\othercommand{\charscale{<em>text</em>}}</code> may differ. That is just the way things are. Use the one that works for you.</p> -<p>Here is an example illustrating the command in all its glory:</p> -<p class="code"><img class="floatright" src="html-resources/badaboom.png" width="146" height="102" alt="badaboom"/><code> -Bada \charscale*[1.25,5em,1.3\nbs]{Boom} Bam\par<br/> -Bada Bam\par<br/> -Bada\charscale[1.25,5em,1.3\nbs]{Bang} Bam\par<br/> -Bada \charscale[1.25]{Bang} Bam\par -</code></p> -<p>In the result (above right), notice how the starred command leaves no gap where the word Boom would have been. The unstarred command leaves a gap where the word Bang would have been located. In each case, the baseline grid is maintained.</p> -<p>The most practical application of <code>\charscale</code> is styling the first character of chapter text. Drop capitals are out of fashion, but enlarged capitals (rising above the baseline) are in fashion. Example, also using the <code>\FirstLine</code> command (from package <i>magaz</i>, included with <i>novel</i>:</p> -<p class="code"><code>\FirstLine{\noindent\charscale[1.5]{I}t was a dark and stormy night. Lord Withens mounted his horse and rode through the gloom to Castle McDingle, where Baron von Feathering awaited. The pair had dirty deeds to do, but being members of the nobility, they commanded a high price.}</code></p> -<p class="centerimg"><img src="html-resources/mcdingle.png" width="559" height="121" alt="larger first letter"/></p> -<p>In the above example, the initial I is 1.5x its normal size. It appears larger than that, by comparison to the adjacent small caps letters.</p> +<p class="item"><b>A.</b> The contents of <code>\charscale{}</code> occupy no vertical space. Thus, scaled text does not push baselines apart. Excessive scale may cause characters to overlap; in some cases this is a desirable special effect.</p> +<p class="item"><b>B.</b> The optional argument has up to three comma-separated components. The first is a number, which scales the text relative to its natural size. If the text was already scaled by some other operation (such as using <i>fontspec</i> to define the font with Scale feature), then the effect is cumulative.</p> +<p>Do not use a scale close to zero, or negative. The result is unpredictable.</p> +<p class="item"><b>C.</b> <code>\charscale</code> may be used for a short amount of text, where there is no line break, and no wrap. The command will throw an error if the included text has <code>\\</code> or <code>\par</code> or any other method that breaks the line.</p> +<p>Excessive text will not wrap. It will overflow into the right margin.</p> +<p class="item"><b>D.</b> <b>Example:</b> In this example, line 4 is so enarged that its ascenders and descenders overlap other text.</p> +<p class="code" style="margin-left:0px"><img class="floatright" src="html-resources/jackbequick.png" width="222" height="94" title="use of \charscale" alt="use of \charscale"/><code><small> +Jack be quick. (1)\par<br/> +\charscale[1.2]{Jack be quick.} (2)\par<br/> +\charscale[1.5]{Jack be quick.} (3)\par<br/> +\charscale[2.5]{Jack be quick.} (4)\par<br/> +\charscale[1.2]{Jack be quick, JACK} (5)\par +</small></code></p> +<p class="item"><b>E.</b> The second optional component, if used, is horizontal offset. The third optional component, if used, is vertical offset. Offsets are lengths, measured in units such as <code>em</code> or <code><span style="cursor:help" title="normal baseline skip">\nbs</span></code>.</p> +<p class="item"><b>F.</b> In its starred form, the contents of <code>\charscale*{}</code> occupy neither vertical nor horizontal space. <b>Example:</b></p> +<p class="code" style="margin-left:0px"><img class="floatright" src="html-resources/alphabetagamma.png" width="263" height="124" title="use of \charscale" alt="use of \charscale"/><code><small> +Alpha \charscale[1.25]{Beta} Gamma. (1)\par<br/> +Alpha \charscale[1.25,8em,1.3<span style="cursor:help" title="normal baseline skip">\nbs</span>]{Beta} Gamma. (2)\par<br/> +Alpha Gamma. (3)\par<br/> +Alpha\charscale*[1.25,8em,1.3<span style="cursor:help" title="normal baseline skip">\nbs</span>]{Beta} Gamma. (4)\par +</small></code></p> +<p>In line 1, Beta is enlarged, but not offset. It occupies slightly more width than it would have occupied unscaled. In line 2, Beta has been offset. Since the unstarred <code>\charscale</code> was used, the horizontal space is still there.</p> +<p>Line 3 has no Beta. Line 4 uses the starred <code>\charscale*</code> to offset Beta, but no width is left behind. Note that the space between Alpha and Gamma is an ordinary inter-word space, because there is a space following the command.</p> +<p class="item"><b>G.</b> <code>\charscale</code> is very effective on <a href="#hD.3.1.1">display pages</a>, where you can scale and move text however you wish. The starred version is especially useful, since back-to-back <code>\charscale*</code> will place text from a single vantage point.</p> +<p class="item"><b>H.</b> In main text, the most practical application of <code>\charscale</code> is to enlarge the first character of chapter text. See <a href="#h5.5.1">section 5.5.1</a>. Otherwise, the command is rarely used, mostly for local correction of characters that need some size adjustment.</p> +<p class="item" style="position:relative"><b>I.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> <code>\charscale</code> does not commute with some other TeX commands. That is, the results of <code>\charscale{\othercommand{<em>text</em>}}</code> and <code>\othercommand{\charscale{<em>text</em>}}</code> may differ.</p> </div><!-- end 6.1.2 --> <h4 id="h6.1.3">6.1.3. <code>\begin{parascale}[<em>scale</em>] ... \end{parascale}</code></h4> <div class="d4" id="d6.1.3"> -<p class="noindent">The parascale environment is used on a paragraph basis. More than one paragraph may be included. The scale is applied to the font size and to the baselineskip within.</p> -<p>Since the text within parascale generally will not occupy an integral number of normal baselineskips, the following text will be off-grid. This may not be a problem, if parascale is used in places where maintaining the grid does not matter (such as on a title page or copyright page).</p> -<p>• If parascale is used within body text, then it will be necessary to restore the line grid for the following text. This cannot be done automatically; you will have to make a preliminary run, look at the results, and adjust accordingly.</p> -<p>For example, suppose you use <code>\begin{parascale}[0.92]...text...\end{parascale}</code>. The preliminary run shows that the included text occupies 7 lines. The following baseline will then be 7x(1–0.92)=0.56 normal baselineskip too high. This can be fixed by adding <code>\vspace{0.56\nbs}</code>. For best appearance, the <code>\vspace</code> should be split above and below the parascale environment, but not nessarily in half.</p> -<p>• If parascale crosses to the next page, then you will need to make vertical adjustment for each page independently. For example, if a 7-line parascale has 3 lines at the bottom of a page, followed by 4 lines on the following page, then you need to restore only a 4 line deficit on the following page.</p> -<p>• Within parascale you may need to manually indent paragraphs, or remove indents if necessary.</p> +<p class="item"><b>A.</b> The <i>parascale</i> environment is used on a paragraph basis. More than one paragraph may be included. The scale is applied to the font size and to the baselineskip within.</p> +<p class="item"><b>B.</b> Note that the scale is an <i>optional</i> argument.</p> +<p class="item"><b>C.</b> Since the text within <i>parascale</i> generally will not occupy an integer number of normal baseline skips, the following text will be off-grid. This may not be a problem, if <i>parascale</i> is used on a <a href="#hD.3.1.1">display page</a>. It may not be a problem, if <i>parascale</i> is used inside <a href="#h5.1.2">ChapterStart</a>. But it is certainly a problem if <i>parascale</i> is used within main text.</p> +<p class="item"><b>D.</b> To restore the main line grid, when <i>parascale</i> is used within main text, wrap <i>parascale</i> in the <a href="#h6.3.2">linegap</a> environment.</p> +<p>The line gap is not automatic; you must compile, look at the result of <i>parascale</i>, then adjust the gap and re-compile. If your text is on more than one page, then you will need to use more than one <i>linegap</i>.</p> +<p class="code"><code><small> +Lord Withens sneaked out the door of the veranda, and hastily opened the letter. In it was a message that curled his jodphurs:\par<br/> +\begin{linegap}{2} % Not always the same as the parascale line count.<br/> +\begin{parascale}[0.87]<br/> +\vspace{0.18<span style="cursor:help" title="normal baseline skip">\nbs</span>}<br/> +We know where youse been goin them dark and stormy nights. We knows what you been doin out there. We got yer number, Jack.\par<br/> +\end{parascale}<br/> +\end{linegap}<br/> +Even after his jodphurs had finally uncurled, Lord Withens could not master his rage. ``My name's not Jack,'' he mumbled.\par +</small></code></p> +<p class="centerimg"><img src="html-resources/parascale.png" width="642" height="198" title="parascale inside linegap" alt="parascale inside linegap"/></p> </div><!-- end 6.1.3 --> <h4 id="h6.1.4">6.1.4. Open Type Scale (fontspec)</h4> <div class="d4" id="d6.1.4"> -<p class="noindent">If you will be using a font in a way that it will <em>always</em> be at a size different from the normal font size, you may use the <i>Scale</i> feature when you first define the font. This is defined by the <i>fontspec</i> package, which is automatically loaded with <i>novel</i>. Example:</p> +<p class="item"><b>A.</b> If you will be using a font in a way that it will <em>always</em> be at a size different from the normal font size, you may use the <a href="#hE.2.1">Scale</a> feature when you first define the font. This is defined by the <i>fontspec</i> package, which is automatically loaded with <i>novel</i>. Example:</p> <p class="code"><code>\NewFontFamily\minifont[Scale=0.75,Numbers=Lining]{\parentfont}</code></p> -<p>A scaled font can be used anywhere. It is not limited to a single line, and it will maintain the line grid at scales not exceeding 1. However, scaled text may disturb the line grid if its scale is more than 1.</p> +<p class="item"><b>B.</b> The scaled font can be used anywhere. It is not limited to a single line, and it will maintain the line grid at scales not exceeding 1.</p> +<p class="item" style="position:relative"><b>C.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Scaled text may disturb the line grid, if its scale is more than 1.</p> </div><!-- end 6.1.4 --> </div><!-- end 6.1 --> @@ -1712,19 +1798,20 @@ Bada \charscale[1.25]{Bang} Bam\par <h4 id="h6.2.1">6.2.1. Italics and Emphasis</h4> <div class="d4" id="d6.2.1"> -<p class="noindent"><code><b>\textit{<em>text</em>}</b></code> puts the text in italics, provided that the font family has an Italic font. If it does not have an Italic font, then the letters will remain normal, <em>not</em> fake slanted.</p> -<p>If the italicized text leans too far into the following space, try adding <code>\/</code> (back and forward slashes) just before closing the braces.</p> -<p><code><b>\emph{<em>text</em>}</b></code> changes regular text to italics, and italic text to regular. You may nest <code>\emph</code> commands. Many writers opine that this is the preferred way to specify Italics.</p> -<p>Sadly, the above two commands will fail if the styled text is in more than one paragraph. A more general command that is able to cross paragraphs is <code><b>\itshape{<em>text</em>}</b></code>.</p>. +<p class="item"><b>A.</b> <code>\itshape{<em>text, may cross paragraphs</em>}</code> is a general-purpose command for italics.</p> +<p class="item"><b>B.</b> <code>\textit{<em>text</em>}</code> will not cross paragraphs.</p> +<p class="item"><b>C.</b> <code>\emph{<em>text</em>}</code> changes regular text to italics, and italic text to regular. You may nest <code>\emph</code> commands. Many writers opine that this is the preferred way to specify italics. It cannot cross paragraphs.</p> +<p class="item"><b>D.</b> If the italicized text leans too far into the following space, try adding <code>\/</code> (back and forward slashes) just before closing the braces.</p> +<p class="item" style="position:relative"><b>E.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Italics are not faked (such as by slanting). If the font does not have an italic font file, then regular text will appear. You may use <i>fontspec</i> syntax to substitute a different italic font, if necessary. See <a href="#hE.1.1">Appendix E.1.1</a> <i>file name combinations</i>.</p> </div><!-- end 6.2.1 --> <h4 id="h6.2.2">6.2.2. Bold, Semibold, etc.</h4> <div class="d4" id="d6.2.2"> -<p class="noindent"><code><b>\textbf{<em>text</em>}</b></code> puts the text in whatever font you specified as the Bold font, when you defined the currently-used font family. If the text is in more than one paragraph, use <code><b>\bfshape{<em>text</em>}</b></code> instead.</p> -<p>If the font family has no Bold font, then it will <em>not</em> be faked.</p> -<p>The default main font used by <i>novel</i>, namely <i>Libertinus Serif</i>, has both Bold and Semibold weights. Given this choice, <i>novel</i> explicitly calls for the Semibold weight. If you intend to use a font such as Adobe Garamond Pro, which also has a Semibold weight, then you can request it instead of Bold when you define the font family, using <i>fontspec</i> syntax.</p> -<p>What if you want both Bold and Semibold, or maybe even a Light weight? Only one can be assigned as the bold weight when you define the font. For the others, use <code>\NewFontFace</code> to assign the desired weight to its own font command, which you will use (but inside the braces) instead of <code>\textbf</code>.</p> -<p>Actually, you should not be using Bold in fiction. It <em>might</em> be the case that this weight is useful for titles, but you ought to consider a fancy-looking font for that purpose, rather than mere Bold. Or, make the letters big and bold, but balance the effect by using gray.</p> +<p class="item"><b>A.</b> <code>\bfshape{<em>text, may cross paragraphs</em>}</code> is a general-purpose command for bold.</p> +<p class="item"><b>B.</b> <code>\textbf{<em>text</em>}</code> will not cross paragraphs.</p> +<p class="item"><b>C.</b> The default main font in <i>novel</i> is <i>Libertinus Serif</i>, which has both bold and semibold weights. The semibold weight is pre-configured to substitute for bold.</p> +<p class="item"><b>D.</b> If you use a different font, and it has an alternative to bold weight, see <a href="#hE.1.1">Appendix E.1.1</a> <i>file name combinations</i> for how to configure the choice. Bold is not faked by thickening.</p> +<p class="item" style="position:relative"><b>E.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Bold is rare in fiction. It <em>might</em> be the case that this weight is useful for titles, but you ought to consider a fancy-looking font for that purpose, rather than mere Bold. Or, make the letters big and bold, but balance the effect by using gray.</p> </div><!-- end 6.2.2 --> <h4 id="h6.2.3">6.2.3. Underlining</h4> @@ -1733,60 +1820,65 @@ Bada \charscale[1.25]{Bang} Bam\par <p>If you are using a line for its graphic effect, the <code><a href="#bigemdash">\bigemdash</a></code> command might be helpful.</p> </div><!-- end 6.2.3 --> -<h4 id="h6.2.4">6.2.4. Small Caps and Acronyms</h4> +<h4 id="h6.2.4">6.2.4. Small Caps and Midcase</h4> <div class="d4" id="d6.2.4"> -<p class="noindent"><code><b>\textsc{<em>text</em>}</b></code> converts lowercase letters to small caps, leaving uppercase unchanged. The font's <code>smcp</code> Open Type feature will be used. But if the font does not have <code>smcp</code>, it will <em>not</em> be faked. If you need to corss paragraphs, use <code><b>\scshape{<em>text</em>}</b></code>.</p> -<p><code><b>\smcp{<em>text</em>}</b></code> is an alias for <code>\textsc{<em>text</em>}</code>.</p> -<p><code><b>\allsmcp{<em>text</em>}</b></code> places both uppercase and lowercase letters in small caps. If the font has the <code>c2sc</code> feature, it will be used; if not, the letters will be converted to lowercase first. Then, <code>smcp</code> is applied.</p> -<p>• If you require small caps, but your font does not have them, you can fake them by scaling uppercase. But this is usually unattractive. A better method is described in the <i>fontspec</i> package documentation: You may appoint a different font that will provide small caps.</p> -<p>• If you insist on using old-fashioned TeX fonts, which do not have the <i>smcp</i> Open Type feature, then you may need to write this code in the Preamble:</p> +<p class="item"><b>A.</b> <code>\scshape{text, may cross paragraphs}</code> is a general-purpose command for converting lowercase to small caps.</p> +<p class="item"><b>B.</b> <code>\textsc{<em>text</em>}</code> does not cross paragraphs. Alias: <code>\smcp{<em>text</em>}</code>.</p> +<p class="item"><b>C.</b> <code>\allsmcp{<em>text</em>}</code> places both uppercase and lowercase letters in small caps. It does not cross paragraphs.</p> +<p class="item"><b>D.</b> Small caps are taken from the font's <i>smcp</i> Open Type feature. If the font is not Open Type, or does not have this feature, then small caps will not be faked. Command <code>\allsmcp</code> also uses feature <i>c2sc</i> if it is available; otherwise it converts letters to lowercase, then applies <i>smcp</i>.</p> +<p class="item" style="position:relative"><b>E.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> If you require small caps, but your font does not have them, you can fake them by scaling uppercase. But this is usually unattractive. A better method is described in the <i>fontspec</i> package documentation: You may appoint a different font that will provide small caps.</p> +<p class="item" style="position:relative"><b>F.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> If you insist on using old-fashioned TeX fonts, which do not have the <i>smcp</i> Open Type feature, then you may need to write this code in the Preamble:</p> <p class="code"><code>\let\smcp\oldscshape\relax<br/> \let\textsc\oldscshape\relax<br/> \let\scshape\oldscshape\relax</code></p> <p>The above code sends you in a time machine back to the Twentieth Century.</p> -<p><code><b>\acronym{<em>text</em>}</b></code> is special to <i>novel</i>. If the <i>NovelDeco</i> font is installed, uppercase letters in the text will be converted to "mid-size capitals," and lowercase will remain lowercase, but with ascenders slightly reduced. The purpose of this command is so that acronyms such as NASA and NATO blend well with surrounding text. I have found that whereas ordinary uppercase is too conspicuous, small caps also looks wrong. Example:</p> -<p class="code"><img class="floatright" src="html-resources/acronym2.png" width="192" height="89" alt="acronym"/> +<p class="item"><b>G.</b> <code>\midcase{<em>text</em>}</code> is special to <i>novel</i>. If the <i>NovelDeco</i> font is installed, uppercase letters in the text will be converted to "mid-size capitals," and lowercase will remain lowercase, but with ascenders slightly reduced. The purpose of this command is so that acronyms such as NASA and NATO blend well with surrounding text. I have found that whereas ordinary uppercase is too conspicuous, small caps also looks wrong. Example:</p> +<p class="code"><img class="floatright" src="html-resources/acronym2.png" width="192" height="89" alt="midcase"/> <code> The NATO alliance...\par<br/> -The \acronym{NATO} alliance...\par<br/> +The \midcase{NATO} alliance...\par<br/> The \allsmcp{NATO} alliance...\par </code></p> -<p>Whether or not to use the \acronym command, is up to you. Since its letters are drawn from the <i>NovelDeco</i> font, rather than your main font, there may be some stylistic differences if your <i>parentfont</i> is not Libertinus Serif.</p> +<p class="item" style="position:relative"><b>H.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Whether or not to use the <code>\midcase</code> command, is up to you. Since its letters are drawn from the <i>NovelDeco</i> font, rather than your main font, there may be some stylistic differences if your <i>parent font</i> is not Libertinus Serif.</p> </div><!-- end 6.2.4 --> <h4 id="h6.2.5">6.2.5. Local Tracking Adjustment</h4> <div class="d4" id="d6.2.5"> -<p class="noindent"><code><b>\squeeze{<em>text</em>}</b></code> narrows the text by one percent.</p> -<p class="noindent"><code><b>\crush{<em>text</em>}</b></code> narrows the text by two percent.</p> -<p>These commands are for emergency use only. They temporarily apply a horizontal scale to the letters, so that they are very slightly narrower than usual. Inter-word spacing is not necessarily changed (it can even grow larger), because spacing is calculated during paragraph layout. The enclosed text may span paragraphs.</p> -<p>The commands do not compound. That is, placing one crush inside another will not narrow the text by four percent. But any adjustments made by <i>microtype</i> will still apply, and may compound with these commands.</p> -<p>The only application for these commands is when a paragraph does not quite fit where you would like it to be. For example: Perhaps one short word, or part of a word, dangles to an extra line. Try <code>\squeeze</code> first, then <code>\crush</code>, for all or most of the paragraph. These do not always produce a useful effect, since the actual paragraph layout depends on other factors. But <em>if you are lucky,</em> then the paragraph re-flows to a better layout.</p> -<p>• If the commands do not help, then <em>be sure to remove them</em>, or the typography will be worse than it was before!</p> +<p class="item"><b>A.</b> <i>Tracking</i> refers to how tight or loose is the space between adjacent letters. This is a property of the font itself, and is automatically tweaked by the included <i>microtype</i> package. Do not confuse tracking with <i>inter-word spacing</i>, which is more widely adjusted during paragraph layout calculations.</p> +<p class="item"><b>B.</b> If only two adjacent letters are involved, use the <code>\kern</code> or <code>\hspace</code> command. The following examples have the same effect. Note that there is no added space character, and that the units of length are <code>em</code>:</p> +<p class="code"><code> +I\kern-.05emt was a dark and stormy night.<br/> +I\hspace{-.05em}t was a dark and stormy night. +</code></p> +<p class="item"><b>C.</b> Loose tracking is often used in page header text. In <i>novel</i>, this is addressed by a special command. See <a href="#h4.3.4.3">section 4.3.4.3</a>.</p> +<p class="item"><b>D.</b> Do not use the <code>\textls</code> command. It will be ignored, and its contents will be rendered with ordinary tracking.</p> +<p class="item"><b>E.</b> The included <i>fontspec</i> package allows you to globally set the tracking of an Open Type font, or locally change its tracking, using the <i>LetterSpace</i> feature. It is unlikely that you will need this capability. If you do, see <i>fontspec</i> package documentation 6.8.</p> </div><!-- end 6.2.5 --> <h4 id="h6.2.6">6.2.6. Local Font Selection</h4> <div class="d4" id="d6.2.6"> -<p class="noindent"><code><b>{\<em>fontcode</em> <em>text</em>}</b></code> where <i>fontcode</i> is a previously-defined <a href="#h4.2">built-in</a> or <a href="#h4.2.5">user-defined</a> font command.</p> -<p>You locally change the font in use, by calling its font command. For example, <code>\subchfont</code> is a built-in command, automatically used in certain macros. You can use it yourself:</p> -<p class="code"><code>{\subchfont <em>text</em>} % Note that the braces go on the outside.</code></p> -<p>Likewise, if you used <code>\NewFontFamily</code> or <code>\NewFontFace</code> to define your own font, giving it the command name <code>\mynewfont</code>, then you would use it like this:</p> -<p class="code"><code>{\mynewfont <em>text</em>} % Again, the braces go on the outside.</code></p> +<p class="item"><b>A.</b> The following font commands are pre-defined in <i>novel</i>: \rmfamily (alias <a href="#h4.2.2">\mainfont</a>) <a href="#h4.2.4">\sffamily</a> <a href="#h4.2.4">\ttfamily</a> <a href="#h5.1.3.1">\chapterfont</a> <a href="#h5.1.3.1">\subchfont</a> <a href="#h4.3.4.2">\headfont</a> <a href="#h4.2.3">\decofont</a> <a href="#hF.4">\decodropcapfont</a>.</p> +<p class="item"><b>B.</b> Although most of the pre-defined font commands are automatically applied in specific situations, you may apply any of them yourself, in any location, using this syntax:</p> +<p class="code"><code>{\subchfont This text will be in the subch font.}</code></p> +<p class="item"><b>C.</b> If you wish, use <i>fontspec</i> syntax to create additional font selection commands. See <a href="#h4.2.5">section 4.2.5</a> and <a href="#hE">Appendix E</a> for the essentials. For example, if you have the licensed font, this code would define the font selection command <code>\agarp</code> in Preamble:</p> +<p class="code"><code>\NewFontFamily\agarp[Numbers=OldStyle,Ligatures=Common]{Adobe Garamond Pro}</code></p> +<p>Then you would apply it to text:</p> +<p class="code"><code>{\agarp Text to appear in that font.}</code></p> </div><!-- end 6.2.6 --> <h4 id="h6.2.7">6.2.7. Local Feature Changes</h4> <div class="d4" id="d6.2.7"> <p class="noindent"><code><b>{\addfontfeature{<em>feature</em>} <em>text</em>}</b></code> for changing Open Type features.</p> -<p>If a font is already defined, you can locally add one or more <a href="#hE.2">features</a>. For example, suppose that you defined <code>\mynewfont</code> without using its Open Type feature <i>ss03</i> (we will assume that the font actually has this feature). In a particular place, you wish to activate <i>ss03</i>. The code looks like this:</p> +<p class="item"><b>A.</b> If a font is already defined, you can locally add one or more <a href="#hE.2">features</a>. For example, suppose that you defined <code>\mynewfont</code> without using its Open Type feature <i>ss03</i> (we will assume that the font actually has this feature). In a particular place, you wish to activate <i>ss03</i>. The code looks like this:</p> <p class="code"><code>{\mynewfont\addfontfeature{RawFeature=+ss03} <em>text</em>}</code> % Note + sign. Braces outside.</p> <p>That limits the scope of the feature to the included group, in TeX terminology.</p> -<p>You can modify features used by any defined font, whether you defined it yourself or it is one of the <i>novel</i> built-in font commands. You can add more than one feature. If the requested feature does not exist in the font, then your request will be ignored.</p> -<p>What about removing a feature that is already present in the font definition? Suppose you defined <code>\mynewfont</code> so that <i>Numbers=OldStyle</i> is used. On a local basis, can you change the style of numbers? Usually, yes. You could use <i>Numbers=Lining</i> to over-ride the feature. Sometimes it depends on how you chose the features, as a matter of syntax. See the <i>fontspec</i> documentation.</p> +<p class="item"><b>B.</b> You can modify features used by any defined font, whether you defined it yourself or it is one of the <i>novel</i> built-in font commands. You can add more than one feature. If the requested feature does not exist in the font, then your request will be ignored.</p> +<p class="item"><b>C.</b> What about removing a feature that is already present in the font definition? Suppose you defined <code>\mynewfont</code> so that <i>Numbers=OldStyle</i> is used. On a local basis, can you change the style of numbers? Usually, yes. You could use <i>Numbers=Lining</i> to over-ride the feature. Sometimes it depends on how you chose the features, as a matter of syntax. See the <i>fontspec</i> documentation.</p> </div><!-- end 6.2.7 --> -<h4 id="h6.2.8">6.2.8. Color Text (actually, grayscale)</h4> +<h4 id="h6.2.8">6.2.8. Grayscale Text</h4> <div class="d4" id="d6.2.8"> -<p class="noindent">For this effect, the <a href="#h2.2"><i>graytext</i></a> class option must be used, or any color command will be ignored, and its included text will be rendered in black (even if the requested color is white). Images are unaffected.</p> -<p><code><b>\color{<em>name</em>}</b></code> or <code><b>\color[gray]{<em>scale</em>}</b></code> is used within a group. All text will be in grayscale, from where the command is placed, until the group ends. If the command is not at the beginning of the group, it does not affect prior text. Example:</p> +<p class="item"><b>A.</b> <code><b>\color{<em>name</em>}</b></code> or <code><b>\color[gray]{<em>scale</em>}</b></code> is used within a group. All text will be in grayscale, from where the command is placed, until the group ends. If the command is not at the beginning of the group, it does not affect prior text. Example:</p> <p class="code"><code> \begingroup<br/> This text is unaffected by the following command.<br/> @@ -1798,12 +1890,12 @@ This text is in lightgray, until the group ends.<br/> <p class="code"><code>\textcolor{gray7}{This text is in color gray7, a medium-light gray.}<br/> \textcolor[gray]{0.32}{This text is in 32 percent gray.}</code></p> <p style="margin-top:10px">Whether you use <code>\color</code> or <code>\textcolor</code>, there are two ways to specify the color: by name, or by scale, using package <i>xcolor</i> syntax.</p> -<p>• The following color names are accepted, and will be converted to some shade of gray (from dark to light): black, blue, violet, darkgray, purple, red, teal, olive, magenta, gray, brown, green, orange, cyan, lightgray, lime, pink, yellow, white.</p> -<p>The above names are often not helpful, so <i>novel</i> also allows you to use these: black, gray1, gray2, gray3, gray4, gray5, gray6, gray7, gray8, gray9, white. The scale is not uniform (gray5 is not 50 percent gray), but the values are usefully spaced.</p> -<p>Other names "known to dvips," such as <i>Apricot</i>, do not work. An error will result.</p> -<p>• To specify color by scale, follow the color command with <i>[gray]{<em>scale</em>}</i>, where the scale is a number between 0 (black) and 1 (white). Example:<code> \color[gray]{0.63}</code>.</p> -<p>• If you use <i>xcolor</i> syntax to request an rgb color, it will be converted to 1-channel grayscale.</p> -<p>• Absolutely no transparency!</p> +<p class="item"><b>B.</b> The following color names are accepted, and will be converted to some shade of gray (from dark to light): black, blue, violet, darkgray, purple, red, teal, olive, magenta, gray, brown, green, orange, cyan, lightgray, lime, pink, yellow, white.</p> +<p class="item"><b>C.</b> The above names are often not helpful, so <i>novel</i> also allows you to use these: black, gray1, gray2, gray3, gray4, gray5, gray6, gray7, gray8, gray9, white. The scale is not uniform (gray5 is not 50 percent gray), but the values are usefully spaced.</p> +<p class="item"><b>D.</b> To specify color by scale, follow the color command with <i>[gray]{<em>scale</em>}</i>, where the scale is a number between 0 (black) and 1 (white). Example:<code> \color[gray]{0.63}</code>.</p> +<p>If you use <i>xcolor</i> syntax to request an rgb color, it will be converted to 1-channel grayscale.</p> +<p class="item" style="position:relative"><b>E.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Absolutely no transparency!</p> +<p class="item" style="position:relative"><b>F.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Other names "known to dvips," such as <i>Apricot</i>, do not work. An error will result.</p> </div><!-- end 6.2.8 --> </div><!-- end 6.2 --> @@ -1813,15 +1905,16 @@ This text is in lightgray, until the group ends.<br/> <h4 id="h6.3.1">6.3.1. What to Avoid</h4> <div class="d4" id="d6.3.1"> -<p class="noindent">• The <code>\raisebox</code> command does not play well with novel. It can be used, but there is the great risk of disturbing the line grid. Use <code><a href="#h6.1.2">\charscale</a></code> instead.</p> -<p>• If you must use the <code>\vspace</code> command (or its relative, <code>\vskip</code>) be sure to measure the space in units of <code>\nbs</code> (normal baseline skip).</p> -<p>• Avoid the <i>minipage</i> and <i>parbox</i> environments. These are likely to disrupt the line grid. When that happens, restoring the grid is your own responsibility. You may find the <i>adjustwidth</i> and <i>linegap</i> environments to be useful, as described in the next section.</p> -<p>• In most cases, do not use the center environment. You may use <code>{\centering ... \par}</code> instead, for a single paragraph. The center environment may cause the text to go off-grid. That's not a problem on some stand-alone pages where you don't care about the grid, but it is ugly in the middle of running text.</p> -<p>• Avoid positioning via the <i>textblock</i> or <i>textblock*</i> environments (package <i>textpos</i>). Actually, <i>novel</i> uses that code internally. But if not handled with more care than usual, positioned text can disrupt the baseline and position of surrounding text. You may use <code><a href="#h6.1.2">\charscale</a></code> to position small amounts of text safely, but not on a paragraph basis. Images have built-in positioning arguments, which may also be useful for positioned text.</p> -<p>• Do not use floats. If you try, then <i>novel</i> may intercept them with a nasty message.</p> -<p>• Do not use tables. Nasty message will result. But <i>novel</i> has its <a href="#h8.3.2.7">own provision</a> for a Table of Contents, and the code may be used for other purposes as well.</p> -<p>• If you use images, then use only the image commands provided by novel: <code><a href="#h7.3.2">\InlineImage</a></code> and <code><a href="#h7.3.4">\BlockImage</a></code>.<p> -<p>• There is no built-in provision for a two-column environment. However, you can place text <a href="#h7.3.5">alongside</a> an image.</p> +<p class="item"><b>A.</b> The <code>\raisebox</code> command does not play well with novel. It can be used on a <a href="#hD.3.1.1">display page</a>, where line grid is less important. In main text, avoid it. Use <code><a href="#h6.1.2">\charscale</a></code> instead.</p> +<p class="item"><b>B.</b> If you must use the <code>\vspace</code> command (or its relative, <code>\vskip</code>) be sure to measure the space in units of <code><span style="cursor:help" title="normal baseline skip">\nbs</span></code> (normal baseline skip).</p> +<p class="item"><b>C.</b> Avoid the <i>minipage</i> and <i>parbox</i> environments. These are likely to disrupt the line grid. When that happens, restoring the grid is your own responsibility. You may find the <i>adjustwidth</i> and <i>linegap</i> environments to be useful, as described in the next section.</p> +<p class="item"><b>D.</b> In most cases, do not use the center environment. You may use <code>{\centering ... \par}</code> instead, for a single paragraph. The center environment may cause the text to go off-grid. That's not a problem on some <a href="#hD.3.1.1">display pages</a> where you don't care about the grid, but it is ugly in the middle of running text.</p> +<p class="item"><b>E.</b> Avoid positioning via the <i>textblock</i> or <i>textblock*</i> environments (package <i>textpos</i>).</p> +<p>Actually, <i>novel</i> uses that code internally. But if not handled with more care than usual, positioned text can disrupt the baseline and position of surrounding text. You may use <code><a href="#h6.1.2">\charscale</a></code> to position small amounts of text safely, but not on a paragraph basis.</p> +<p>Images have built-in positioning arguments.</p> +<p class="item"><b>F.</b> Do not use floats (except in <a href="#h2.2">sandbox</a>). Use <i>novel's</i> own <code>\FloatImage</code>.</p> +<p class="item"><b>G.</b> Do not use tables (except in <a href="#h2.2">sandbox</a>). But <i>novel</i> has its <a href="#hD.3.2.7">own provision</a> for a Table of Contents, and the code may be used for other purposes as well.</p> +<p class="item"><b>H.</b> Do not use picture environment (except in <a href="#h2.2">sandbox</a>). Use only the image commands provided by novel: <code><a href="#h7.2.2">\InlineImage</a></code>, <code><a href="#h7.2.4">\FloatImage</a></code>, and <code><a href="#h7.2.5">\WrapImage</a></code>. There is also a special provision for <a href="#h7.1.2">color cover artwork</a>.<p> </div><!-- end 6.3.1 --> <h4 id="h6.3.2">6.3.2. Some Useful Commands</h4> @@ -1829,19 +1922,19 @@ This text is in lightgray, until the group ends.<br/> <p class="noindent">This is not a complete list. It merely addresses a few situations that you are likely to encounter, without the need for elaborate code, and without loading additional packages.</p> <p style="margin-top:10pt"><code>\begin{adjustwidth}{<em>left</em>}{<em>right</em>} ... \end{adjustwidth}</code></p> <p>This environment, from the included <i>changepage</i> package, is the most useful way to create block indents. The included text may have multiple paragraphs and span pages. The left and right arguments are lengths, being the amount to <em>increase</em> the respective margins from their normal values.</p> -<p style="margin-top:10pt"><code>\begin{linegap}{<em>integer</em>} ... \end{linegap}</code></p> +<p id="linegap" style="margin-top:10pt"><code>\begin{linegap}{<em>integer</em>} ... \end{linegap}</code></p> <p>This environment creates a gap of <i>integer</i> lines. Then, the following text will be on-grid, regardless of what you place inside the environment. If the contents are small relative to the gap, there will be a lot of white space. If the contents are too large, then they will overflow the gap and overlap the following text, rather than push it down.</p> <p>This environment is particularly useful when it contains highly styled text, because you don't have to calculate a <code>\vspace</code> to restore the following line grid. Pick a likely gap, then make it larger or smaller as desired.</p> <p>The environment fails if it crosses a page boundary. There will be no error, merely an undesired result. Be sure to plan your writing so that the linegap remains on a single page.</p> -<p>If you use a non-integer linegap, it will be processed that way, but there will be a warning in the log file. The only reason it is not an error, is that a non-integer linegap might be useful on some display pages.</p> +<p>If you use a non-integer linegap, it will be processed that way, but there will be a warning in the log file. The only reason it is not an error, is that a non-integer linegap might be useful on some <a href="#hD.3.1.1">display pages</a>.</p> <p style="margin-top:10pt"><code>\rotatebox{<em>text</em>}</code></p> <p>This command is from the included <i>graphicx</i> package. It rotates the text, about an axis at the lower left of the text. If you wish to rotate the text about its center, use <code>\rotatebox[origin=c]{text}</code>.</p> <p>This command plays nicely with <code>\charscale</code>, so you can size, rotate, and displace a string of text (single line). It makes a difference which command goes inside the other. More likely than not, the effect you want is obtained by using <code>\charscale</code> on the outside, with <code>\rotatebox</code> inside.</p> -<p>To avoid disturbing the line grid, <code>\rotatebox</code> is best used inside the <i>linegap</i> environment.</p> +<p>To avoid disturbing the line grid, <code>\rotatebox</code> is best used inside the <a href="#linegap">linegap</a> environment.</p> <p style="margin-top:10pt"><code>\phantom{<em>text</em>}</code></p> <p>Does not print the text, but leaves a horizontal gap as if the text were there.</p> <p style="margin-top:10pt"><code>\mbox{<em>text</em>}</code></p> -<p>Prevents a specific word from being hyphenated, or to ensure that two consecitive words always appear on the same line. The box will not be broken across lines. However, it may overhang the margin, which is undesirable.</p> +<p>Prevents a specific word from being hyphenated, or to ensure that two consecutive words always appear on the same line. The box will not be broken across lines. However, it may overhang the margin, which is undesirable.</p> <p style="margin-top:10pt"><code>\makebox[<em>width</em>][<em>alignment</em>]{<em>text</em>}</code></p> <p>Puts the text in a box of fixed width (usually much larger than the text's own width) and aligns it left, center, or right in the box. If using this across the full textwidth, be sure to precede it with <code>\noindent</code> to prevent offset.</p> <p style="margin-top:10pt"><code>\hspace{<em>length</em>}</code></p> @@ -1865,79 +1958,80 @@ This text is in lightgray, until the group ends.<br/> <p>The line's normal position is at the typical height of an emdash, which is slightly above half the height of lowercase x. Its normal width is typical of an emdash width. Thus, the line is like an extended emdash.</p> <p>You can tweak the line using its optional argument. The first value tweaks the vertical position by a scale factor, where 1 equals its normal position (so that 0.9 places it a little lower). The second argument, if used, is separated from the first by a comma. It tweaks the line thickness by a scale factor (so that 0.9 makes it a little thinner).</p> <p>Since <code>\bigemdash</code> allows an optional argument, but no mandatory argument, you may not immediately follow it with text. If it is boxed, then first close the box; otherwise, end the paragraph.</p> -<p style="margin-top:10pt"><code>\straightquote</code>, <code>\straightdblquote</code></p> -<p>These insert the single quote (apostrophe), and double quote, as ASCII straight characters. Prevents TeX (or your software) from automatically substituting the curly characters.</p> +<p style="margin-top:10pt"><code>\straightquote{}</code>, <code>\straightdblquote{}</code></p> +<p>These insert the single quote (apostrophe), and double quote, as ASCII straight characters. Prevents TeX (or your software) from automatically substituting the curly characters. The empty braces are mandatory.</p> </div><!-- end 6.3.2 --> </div><!-- end 6.3 --> <h3 id="h6.4">6.4 Superscripts, Subscripts</h3> <div class="d3" id="d6,4"> -<p class="noindent">In <i>novel</i>, superscripts and subscripts are called "markers." Most book-quality Open Type fonts have markers in style sets (<i>sups</i>, <i>sinf</i>, <i>subs</i>).</p> -<p>In professional fonts, marker glyph weights are adjusted for consistent appearance compared to ordinary glyphs. However, many free fonts do not adjust marker glyph weights, so the markers may appear too small, or too light. You may choose whether to use a font's own markers, or allow <i>novel</i> to generate markers, depending on whichever you think looks better.</p> -<p>• <i>real</i> markers attempt to use the Open Type feature <i>sups</i> for superscripts, and the feature <i>sinf</i> (preferred) or <i>subs</i> (alternate) for subscripts. If the requested feature is not available for the font, then it will be automatically faked, by scaling/raising/lowering ordinary characters from the basefont (lining numerals will be used).</p> -<p>• <i>fake</i> markers ignore whether the Open Type features are available, and simply fakes them.</p> +<p class="item"><b>A.</b> In <i>novel</i>, superscripts and subscripts are called "markers." Most book-quality Open Type fonts have markers in style sets (<i>sups</i>, <i>sinf</i>, <i>subs</i>).</p> +<p class="item"><b>B.</b> In professional fonts, marker glyph weights are adjusted for consistent appearance compared to ordinary glyphs. However, many free fonts do not adjust marker glyph weights, so the markers may appear too small, or too light. You may choose whether to use a font's own markers, or allow <i>novel</i> to generate markers, depending on whichever you think looks better.</p> +<p class="item"><b>C.</b> <i>real</i> markers attempt to use the Open Type feature <i>sups</i> for superscripts, and the feature <i>sinf</i> (preferred) or <i>subs</i> (alternate) for subscripts. Real markers are the best choice for professional fonts. If the requested feature is not available for the font, then it will be automatically faked, by scaling/raising/lowering ordinary characters from the basefont (lining numerals will be used).</p> +<p class="item"><b>D.</b> <i>fake</i> markers ignore whether the Open Type features are available, and simply fakes them. Sometimes this is the best choice for fonts that do not have properly designed markers.</p> -<h4 id="h6.4.1">6.4.1 <code>\SetMarkerStyle[<em>real,fake</em>]{<em>asterisk, dagger, number</em>}</code></h4> +<h4 id="h6.4.1">6.4.1. <code>\SetMarkerStyle[<em>real,fake</em>]{<em>asterisk, dagger, number</em>}</code></h4> <div class="d4" id="d6.4.1"> -<p>This command may only be used in the Preamble. It globally sets the kind of marker to be used. Default is <i>real</i> and <i>asterisk</i>.</p> -<p>The optional argument applies real or fake markers, as described above.</p> -<p>The required argument applies only to markers created by the <code>\footnote</code> command. It does not apply to endnotes, or to manually placed superscripts and subscripts.</p> +<p class="item"><b>A.</b> This command may only be used in the Preamble. It globally sets the kind of marker to be used. Default is <i>real</i> and <i>asterisk</i>.</p> +<p class="item"><b>B.</b> The optional argument applies real or fake markers, as described above.</p> +<p class="item"><b>C.</b> The required argument applies only to markers created by the <code>\footnote</code> command. It does not apply to endnotes, or to manually placed superscripts and subscripts.</p> +<p class="item"><b>D.</b> The available choices for marker style:</p> <p>• <i>asterisk</i> (default) uses symbolic footnote markers. The symbols rotate in order * † ‡ § ** †† ‡‡ §§ until reset.</p> <p>• <i>dagger</i> uses symbolic footnote markers, but without asterisks. The symbols rotate in order † ‡ § †† ‡‡ §§ until reset.</p> <p>• <i>number</i> uses numerical footnote markers. Due to possible conflict, the log file will have a "Big Bad Warning" if you use a numerical footnote marker in a document that also has endnotes, since endnotes always have numerical markers.</p> </div><!-- end 6.4.1 --> -<h4 id="h6.4.2">6.4.2 <code>\realmarker</code>, <code>\fakemarker</code></h4> +<h4 id="h6.4.2">6.4.2. <code>\realmarker</code>, <code>\fakemarker</code></h4> <div class="d4" id="d6.4.2"> -<p class="noindent">Within the body of the document, you may use <code>\realmarker</code> and <code>\fakemarker</code> to change your preference. The choice remains in effect until you change it again.</p> -<p>The option real/fake applies wherever superscripts or subscripts are used, not just for footnotes or endnotes.</p> +<p class="item"><b>A.</b> Within the body of the document, you may use <code>\realmarker</code> and <code>\fakemarker</code> to change your preference. The choice remains in effect until you change it again.</p> +<p class="item"><b>B.</b> The option real/fake applies wherever superscripts or subscripts are used, not just for footnotes or endnotes.</p> </div><!-- end 6.4.2 --> </div><!-- end 6.4 --> <h3 id="h6.5">6.5. Footnotes and Endnotes</h3> <div class="d3" id="d6.5"> -<p class="noindent">The <i>novel</i> class has <em>limited</em> support for footnotes, because they are rarely used in fiction. Nevertheless, I have seen them. The notes may be factual or imaginary.</p> -<p>If there are more than a handful of notes, then use endnotes to avoid a constant disruption of the text flow. You may use both footnotes and endnotes.</p> -<p>Footnotes and endnotes insert superscripts (markers) at the appropriate point in the main text. The actual footnote or endnote begins with the marker in ordinary text, not as a superscript.</p> +<p class="item"><b>A.</b> The <i>novel</i> class has <em>limited</em> support for footnotes, because they are rarely used in fiction. Nevertheless, I have seen them. The notes may be factual or imaginary.</p> +<p class="item"><b>B.</b> If there are more than a handful of notes, then use <a href="#h6.5.2">endnotes</a> to avoid a constant disruption of the text flow. You may use both footnotes and endnotes.</p> +<p class="item"><b>C.</b> In the running text, markers for footnotes and endnotes are superscripts. You may control their appearance using the method of <a href="#h6.4">section 6.4</a>.</p> +<p class="item"><b>D.</b> The actual footnote (at base of page) or endnote (wherever placed) does <i>not</i> use a superscript for its marker. Instead, the marker has ordinary size and position. This is the recommended style.</p> -<h4 id="h6.5.1">6.5.1 Footnotes</h4> +<h4 id="h6.5.1">6.5.1. Footnotes</h4> <div class="d4" id="d6.5.1"> -<p>Footnotes appear at the bottom of the page where they are placed. There is no option to accumulate them to another location. Very long footnotes might straddle pages, but that situation is uncommon in fiction (and not within your control).</p> +<p class="item"><b>A.</b> Footnotes appear at the bottom of the page where they are placed. There is no option to accumulate them to another location. Very long footnotes might straddle pages, but that is automatic, and not within your control.</p> <p class="code"><code>\footnote[<em>option</em>]{<em>text</em>}</code></p> -<p>The <code>\footnote</code> command places a superscript "marker" at the place where the command is written. The included text is written at the bottom of the page, beneath a short line that separates it from the main text. The footnote text is at smaller size and line skip, and has the same marker placed before it (but not as superscript). All of this is automatic.</p> -<p>You may, if necessary, apply some style to the footnote text. For example, if you are referring to another work, its title might be in italics.</p> -<p>Normally, no option is used. If you use option <i>0</i> (zero) then no marker will appear in the main text, and the footnote text will also appear without a marker. The count of markers is not incremented. This applies whether the markers are numbers or symbols.</p> -<p>• Trick: If you are using footnote numbers, but wish to place a special footnote using a symbol, you can do it manually. For example:</p> +<p class="item"><b>B.</b> The <code>\footnote</code> command places a superscript "marker" at the place where the command is written. The included text is written at the bottom of the page, beneath a short line that separates it from the main text. The footnote text is at smaller size and line skip, and has the same marker placed before it (but not as superscript). All of this is automatic.</p> +<p class="item"><b>C.</b> You may, if necessary, apply some style to the footnote text. For example, if you are referring to another work, its title might be in italics.</p> +<p class="item"><b>D.</b> Normally, no option is used. If you use option <i>0</i> (zero) then no marker will appear in the main text, and the footnote text will also appear without a marker. The count of markers is not incremented. This applies whether the markers are numbers or symbols.</p> +<p><b>E.</b> If you are normally using footnote <i>numbers</i>, but wish to place a particular footnote using a <i>symbol</i> instead, you can do it manually. For example:</p> <p class="code"><code>He blinked.*\footnote[0]{* No, he didn't.}</code></p> -<p>• Avoid use of underlining, as it is considered bad style, due to visual distraction. If necessary, use italics.</p> +<p><b>F.</b> Avoid use of underlining or bold. It is considered bad style, due to visual distraction. If necessary, use italics.</p> +<p class="item" style="position:relative"><b>G.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Sorry, but even though there are numerous TeX packages for custom footnote styles, they will not work in <i>novel</i>. This is intentional.</p> </div><!-- end 6.5.1 --> -<h4 id="h6.5.2">6.5.2 Endnotes</h4> +<h4 id="h6.5.2">6.5.2. Endnotes</h4> <div class="d4" id="d6.5.2"> -<p class="noindent">Endnotes are sometimes used in fiction. In general, the endnotes are also fictional.</p> -<p>You may use both footnotes and endnotes, if you wish. However, if endnotes are used, then footnotes must be marked by symbols, rather than by numbers, to avoid confusion. The counts for endnotes and footnotes are independent.</p> +<p class="item"><b>A.</b> Endnotes are sometimes used in fiction. Often, the endnotes are also fictional.</p> +<p class="item"><b>B.</b> You may use both footnotes and endnotes. However, if endnotes are used, then footnotes must be marked by symbols, rather than by numbers, to avoid confusion. The counts for endnotes and footnotes are independent.</p> +<p class="item"><b>C.</b> If you gather endnotes at the rear of your book, then arabic page numbering continues. Think of the endnotes as just another chapter. If you use page headings, then the preferred style is to use something like <i>Notes to Chapters 3-4</i> in the headings, changing it on a page by page basis using <code><a href="#h4.3.4.6">\SetRectoheadText</a></code> and <code><a href="#h4.3.4.6">\SetVersoheadText</a></code>.</p> +<p class="item" style="position:relative"><b>D.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> The <i>endnotes</i> package may not be used, due to conflict with <i>novel's</i> built-in commands.</p> -<h5 id="h6.5.2.1">6.5.2.1 <code>\endnote</code>, <code>\ResetEndnote</code>, <code>\memo{}</code></h5> +<h5 id="h6.5.2.1">6.5.2.1. <code>\endnote{<i>comment</i>}</code>, <code>\ResetEndnote</code></h5> <div class="d5" id="d6.5.2.1"> -<p class="noindent">The <code>\endnote</code> command inserts a numerical superscript in the text. A running count of the numbers is automatically updated. This command does nothing else.</p> -<p>The endnote numbers normally run continuously through the text, without reset. If you wish to reset the count (perhaps at new chapters), you have to do it manually, using <code>\ResetEndnote</code> at the appropriate location.</p> -<p>When you use <code>\endnote</code>, there is no provision for the actual note, at that place in the text. The <i>novel</i> class does not know, and does not care, whether or not you actually write the endnote later.</p> -<p>Since <code>\endnote</code> gobbles following space, use <code>\endnote{}</code> to preserve the space.</p> -<p>If you wish to write an in-place reminder to yourself, about why you put an endnote marker there, use <code>\memo{<i>text</i>}</code>. The argument of <code>\memo</code> will not be printed, and will not be remembered for later use. Note that <code>\memo</code> is not like the percent <code>%</code> comment, because anything following <code>\memo</code> will be honored. Also, don't use space both before and after <code>\memo{}</code>, because both spaces will appear when typeset:</p> -<p class="code"><i>Wrong:</i> <code>... in the sacred book.\endnote \memo{Dorf, VI} Afterward, Shange left for ...</code><br/> -<i>Correct:</i> <code>... in the sacred book.\endnote\memo{Dorf, VI} Afterward, Shange left for ...</code></p> +<p class="item"><b>A.</b> The <code>\endnote</code> command inserts a numerical superscript in the text. A running count of the numbers is automatically updated.</p> +<p class="item"><b>B.</b> Endnote numbers normally run continuously through the text. If you wish to reset the count (perhaps at new chapters), you have to do it manually, using <code>\ResetEndnote</code> at the appropriate location.</p> +<p class="item"><b>C.</b> No argument is needed. But if you write <code style="white-space:nowrap">\endnote{<i>some comment</i>}</code>, then the comment will not print. It is merely a note to yourself, reminding you why you put an endnote there. The comment is not stored for later use, so it is not the actual content of the endnote text.</p> +<p class="item"><b>D.</b> You may not immediately follow <code>\endnote</code> with a square bracket <code>[</code>. If you do that, an error results. If you need to follow the command with a printing square bracket, then use <code>\endnote{}[</code>. +<p class="item" style="position:relative"><b>E.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> The <i>novel</i> class does not know, and does not care, whether or not you actually write the endnotes later. The <code>\endnote</code> command merely places a marker. It does not record data for later use.</p> + </div><!-- end 6.5.2.1 --> -<h5 id="h6.5.2.2">6.5.2.2 <code>\endnotetext{<em>number</em>}{<em>text</em>}</code></h5> +<h5 id="h6.5.2.2">6.5.2.2. <code>\endnotetext{<i>number</i>}{<i>text</i>}</code></h5> <div class="d5" id="d6.5.2.2"> -<p class="noindent">The <code>\endnotetext</code> command is a simple way of styling endnotes. You do not have to use it, if you have your own method. These may be placed per-chapter, or at the final end. The <i>novel</i> class does not keep track of them.</p> -<p>The first argument is usually the endnote number. A period and following space will automatically be added, so that the text of the note is block-indented. You may use <code>\emph{<em>number</em>}</code> if you prefer the number to be in italics.</p> -<p>The text must be one paragraph. Be sure to end with <code>\par</code> or equivalent.</p> -<p>If the note needs more than one paragraph, then continue like this, with an empty note number:</p> +<p class="item"><b>A.</b> The built-in <code>\endnotetext{}{}</code> takes two mandatory arguments. No optional argument. If you follow <code>\endnotetext</code> with a square bracket <code>[</code>, then an error results.</p> +<p class="item"><b>B.</b> The first argument is usually the endnote number. A period and following space will automatically be added. You may use <code>\emph{<em>number</em>}</code> if you prefer the number to be in italics.</p> +<p class="item"><b>C.</b> The text will be block-indented. It is limited to one paragraph. If the note needs more than one paragraph, then continue like this, with an empty note number:</p> <p class="code"><code>\endnotetext{}{\indent <em>text</em>}</code></p> -<p>• In <i>novel</i>, you must create and style the page(s) with endnotes yourself! There is no provision for bibliography, and no provision for any other kind of automated styling. This is because the endnotes, being fictional, are more like the main text than any academic style. Think of the endnotes as just another chapter, but starting with something that identifies them as being endnotes. Pagination continues as main matter, with Arabic page numbers. This is recommended by <i style="cursor:help" title="Chicago Manual of Style">CMoS</i>, for both fiction and nonfiction.</p> -<p>• There is no track of which endnote number was placed where. You will have to keep track of them yourself. In the following example, the author knows that the endnote numbers are <i>9</i> and <i>10</i>, only after an initial typesetting run showed the numbers. Then, the endnote texts were added.</p> -<p>Example of an endnote:</p> +<p class="item"><b>D.</b> Example of an endnote:</p> <p class="code"> <code><small> \endnotetext{9}{Yang Sho-Nuff was the twelfth son of the elder god of the ancient Who-Zit Clan, with power over the forces of rust.\par}<br/> @@ -1945,6 +2039,7 @@ This text is in lightgray, until the group ends.<br/> \endnotetext{10}{As Professor Withens notes in his treatise, \emph{When Sho-Nuff Was Not Enough}, the ceremony of daily human sacrifice had a devastating effect on the tribal population.\par} </small></code></p> <p class="centerimg"><img src="html-resources/endnotetext.png" width="447" height="151" alt="using endnotetext"/></p> +<p class="item" style="position:relative"><b>E.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/>If you don't like the built-in <code>\endnotetext</code> style, you can change it to suit your needs, using <code>\renewcommand</code>. Coding is up to you!</p> </div><!-- end 6.5.2.2 --> </div><!-- end 6.5.2 --> </div><!-- end 6.5 --> @@ -1956,468 +2051,499 @@ This text is in lightgray, until the group ends.<br/> <div id="page07" class="page"> -<h2 id="h7">7. Interior B/W or Gray Images, and Color Cover Artwork</h2> +<h2 id="h7">7. Images</h2> <div class="d2" id="d7"> -<p class="noindent">If you intend to place a lot of images in your document, or if you need to have text wrap around floating images, then the <i>novel</i> document class is not well-suited to your purpose. This is because the methods of formatting, and the emphasis on maintaining a constant baseline skip, sometimes interfere with the behavior you expect from other document classes.</p> -<p>Yet you can place the occasional image. Most fiction does use imagery on the title page, and sometimes at chapter starts. Some stories include a map, or an image of ancient writing. In a detective novel, we might get a glimpse at handwritten evidence. The <i>novel</i> class has its own commands for easily dealing with these situations.</p> - -<h3 id="h7.1">7.1. Raster Images Only</h3> +<p class="item"><b>A.</b> If your book consists primarily of artwork, rather than text, then you should use a page layout program designed for that purpose, instead of TeX.</p> +<p>Bleed is only supported for cover artwork, not book interior.</p> +<p class="item"><b>B.</b> You may only use raster images, not vector drawings. If you use a vector program (such as Inkscape), you must export your work as a raster image.</p> +<p class="item"><b>C.</b> You cannot crop, transform, resize, or resample images within <i>novel</i>. Each image must be placed at exact size and resolution.</p> +<p>So, if an image has print size 1.5" by 2" at 300dpi resolution, then its dimensions must be 450x600 pixels. Be sure that the image file contains its resolution.</p> +<p class="item"><b>D.</b> If you wish to use something such as LaTeX TikZ, then create another small document using the <code><a href="#h2.2">sandbox</a></code> class option.</p> + +<h3 id="h7.1">7.1. Technical Requirements for Images</h3> <div class="d3" id="d7.1"> -<p class="noindent">You may place only raster images in your document. No <i>pdf</i>, <i>eps</i> or <i>svg</i>. Although you can "cheat" the <i>novel</i> commands, and circumvent these restrictions, <em>don't do it</em>. These restrictions are intentional.</p> -<p>You may think that the above paragraph is a mistake. Haven't you been told that vector artwork is always preferable to rasterized artwork, because vector artwork is scalable? The part about being scalable is true. But if you do not need scalability, vector artwork is worse.</p> -<p>How so? A PDF file can incorporate vector artwork, and if properly done it will meet commercial printing standards. <em>Sadly, it is often not properly done.</em> When vector artwork has technical errors, as it often does, then the appearance will depend on which software is used to view the image. The fact that it is within a PDF does not always help.</p> -<p>When you design a vector image, or perhaps acquire one, you approve its appearance based on what you see on your computer. The odds are good that a friend or editor, on a different computer, will be using the same software and thus see the same result. However, that is not true of the software built into commercial printing machines. That software may interpret erroneous or ambiguous vector instructions in a different way than you expected.</p> -<p>You normally do not need to scale images. Your finished work will be viewed at fixed size on the printed page, not at variable size in a PDF reader. So, <em>scalability is not an advantage</em>. Your image is placed on paper at its exact size and resolution. You are in complete control. If it is purely black/white line art, its detail will be about the same whether it was placed as vector or raster. If it is grayscale, it is subject to halftoning, which reduces the resolution in any case.</p> -<p>• Do not attempt to place an image by including a PDF within your TeX file.</p> - -<h4 id="h7.1.1">7.1.1. Use Flattened <i>png</i> or <i>jpg</i> Image Format</h4> + +<p class="noindent">Interior images may be black/white line art, or grayscale. Interior color is not supported. Color cover artwork has strong support.</p> + +<h4 id="h7.1.1">7.1.1. Black/White and Grayscale Interior Images</h4> <div class="d4" id="d7.1.1"> -<p class="noindent">The <i>novel</i> image-handling commands require the <i>png</i> or <i>jpg</i> formats, exclusively. If you already have a raster image in another format, such as <i>tif</i>, you must convert it. If you have a vector image, such as <i>eps</i> or <i>svg</i> format, you must rasterize it. This must all be done in an external graphics program, such as <i>GIMP</i> or <i>Inkscape</i>. It cannot be done from within TeX.</p> -<p>Both <i>jpg</i> and <i>png</i> images can store their resolution internally. When you export images from a graphics program, be sure that the resolution is stored. This may or may not be an option that you need to check, in an export dialog box.</p> -<p>Be sure to flatten the image before you export it to <i>png</i>. With <i>jpg</i>, the exported image is always flattened.</p> -<p>When using grayscale, be sure to convert the image to <i>only grayscale</i>, which has only one color channel. In GIMP, this is achieved with the <i>Image>Mode</i> menu. Note that an RGB or CMYK image "that only uses grays" is <em>not</em> the same thing, since these have three or four color channels!</p> -<p>When using pure black/white (<i>png</i> only), you can get there with GIMP's <i>Image>Mode>Indexed</i> menu.</p> -<p>Note that within the finished PDF file, images are stored in an internal format which differs from your input. If your image is in the wrong format, or contains transparency, it will not be detected by TeX.</p> +<p class="item"><b>A.</b> Interior images may be grayscale, or black/white. There is no provision for color interior.</p> +<p class="item"><b>B.</b> There is no provision for interior bleed. No image may approach the edge of the page. The amount of clearance is specified by your print service, and is often called the <a href="#h4.3.1.2">unsafe zone</a>.</p> +<p class="item"><b>C.</b> Black/White line art has a single channel, at 1-bit per pixel. This format is only used for material that is inherently black and white, without shading. It is also useful for including black text prepared as an image. Most print services request resolution 600 to 800 pixels per inch.</p> +<p class="item"><b>D.</b> Grayscale images have a single channel, at 8-bits per pixel. This format is used for photos and shaded artwork. It is also useful for including text prepared as an image, where the text is not black. Most print services request resolution 300 pixels per inch.</p> + <p class="item"><b>E.</b> Each image must be flat (no layers, no transparency).</p> +<p class="item"><b>F.</b> Most print services require that images must be stripped of private metadata (such as EXIF), and that the color space be DeviceGray, rather than specified by a transfer profile.</p> +<p class="item"><b>G.</b> Black/White images must be in <i>png</i> file format. Grayscale images may be in either <i>png</i> or <i>jpg</i> file format.</p> +<p class="item" style="position:relative"><b>H.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> In the documentation <i>extras</i> folder, <i style="white-space:nowrap">novel-scripts.zip</i> will help you comply with these requirements. Complete usage information is provided there.</p> </div><!-- end 7.1.1 --> -<h4 id="h7.1.2">7.1.2. Saving the Resolution</h4> +<h4 id="h7.1.2">7.1.2. Color Cover</h4> <div class="d4" id="d7.1.2"> -<p class="noindent">Image resolution is measured in dots per inch (dpi). In a graphics program, it may be called pixels per inch (ppi). And, if the software was written in Europe or Asia, it may be measured in pixels per centimetre!</p> -<p>When you prepare an image in a graphics program, you must first ensure that it is at the correct resolution. Most U.S. print services require <i>300dpi</i> for grayscale images (or color covers), <i>600dpi</i> for black/white line art. Then, it is a simple matter of multiplying the image dimensions (in inches) by the resolution, to get the image dimensions in pixels.</p> -<p>Example: A grayscale image that will print at 1.25" wide by 1.5" high, must be 375 pixels wide by 450 pixels high, at 300dpi. If the original image is at different dimensions, it must be cropped and scaled to the correct size. However, it is not enough to finish the image at 375x450 pixels. You must specifically set the resolution to 300dpi. If you fail to set the resolution correctly, then the image will not appear at its correct size in your PDF.</p> -<p>In GIMP, you can use the <i>Image>Scale Image</i> dialog box to ensure that the image is at the proper size and resolution. When you change any of the settings, others may change in response. Be sure that all settings are satisfactory.</p> -<p>When you export your image, you may be asked whether or not to save the resolution. Be sure to save it.</p> -<p>Example dialog boxes for grayscale png exported from GIMP:</p> -<p class="centerimg"><img src="html-resources/imgdialogs.png" width="600" height="192" alt="png image with resolution"/></p> +<p class="item"><b>A.</b> The book cover may be (usually is) in color. Bleed is required.</p> +<p class="item"><b>B.</b> If your print service allows you to submit cover artwork as an ordinary RGB image file, that's the easiest way to do it. Then, <i>novel</i> is not used.</p> +<p class="item" style="position:relative"><b>C.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Complete support for creating a PDF/X-1a:2001 (or other) color cover, with image in CMYK at 240% ink limit, is provided in <i>novel-scripts.zip</i>. This format is required by some American print-on-demand services.</p> +<p>The scripts, and supporting documentation, are in the <i>novel</i> documentation <i>extras</i> folder.</p> </div><!-- end 7.1.2 --> - -<h4 id="h7.1.3">7.1.3. Removing Private Metadata</h4> -<div class="d4" id="d7.1.3"> -<p class="noindent">Your image may contain "private metadata" that records how the image was created, especially if it was converted from a digital photograph. For example, EXIF and IPTC may contain a lot of private metadata. The image may also contain color profile data that is inappropriate for a grayscale or black/white image.</p> -<p>Many commercial printing standards require that such private metadata be removed from images. The PDF File Data should speak for everything, not the individual images.</p> -<p>The simplest way to remove private metadata is via a command-line program: Use either <i>ImageMagick</i>, or <i>GraphicsMagick</i>. These programs work on Windows, Linux, and (so I am told) OS/X. Specific code is shown in the workflow examples, below. If you ever re-work an image, you must once again remove its private metadata.</p> -</div><!-- end 7.1.3 --> </div><!-- end 7.1 --> -<h3 id="h7.2">7.2. Workflows for Interior Line Art and Grayscale</h3> + +<h3 id="h7.2">7.2. Placing Interior Images</h3> <div class="d3" id="d7.2"> -<p class="noindent">Two kinds of images may appear in a black-and-white book: <i>line art</i>, and <i>grayscale</i>.</p> -<p>Line art contains only black and white. Moreover, there cannot be any places where the black or white areas are very tiny, so you cannot emulate gray by dithering black/white.</p> -<p>Most print services request that line art be rasterized at 600dpi (dots per inch), and that grayscale images be rasterized at 300dpi. Grayscale images may be printed using halftone technology. Text that sits atop a halftoned image may itself be halftoned.</p> +<p class="item"><b>A.</b> If your book has a lot of images mingled with text, then you should consider using a page layout program (such as Scribus) instead of TeX. That's because the best strategies for an image-intensive picture book are very different from the strategies adoped by <i>novel</i>.</p> +<p class="item"><b>B.</b> Images are not allowed to overlap each other, in the kind of commercial printing that is likely to be used for your book. However, since overlap is generally legal in PDF, TeX will not issue an error.</p> +<p class="item"><b>C.</b> Remember: Images must be at exact size and resolution.</p> -<h4 id="h7.2.1">7.2.1. Workflow: Line Art in GIMP</h4> +<h4 id="h7.2.1">7.2.1. Image-Like Effects in Text</h4> <div class="d4" id="d7.2.1"> -<p class="noindent">To create a suitable <b>line art</b> image in GIMP, with post-processing in ImageMagick or GraphicsMagick, follow these instructions:</p> -<p>(1) Open the image file in GIMP. If it is a vector format (such as svg or pdf), ensure that it is resolved to 600 pixels/in with anti-aliasing, and that its size is the same as your intended dimensions (measured in inches or mm). You can also use a larger size, if you intend to crop some of the periphery; or you can use a smaller size, if you intend to make it larger by adding white space.</p> -<p>(2) If you need to crop to a smaller size, or add to a larger size, do it now. <i>Image>Canvas Size</i>, with <i>Resize Layers:All</i>.</p> -<p>(3) If you need to edit the image, by adding or removing anything, do it now.</p> -<p>(4) <i>Image>Flatten Image</i>.</p> -<p>(5) <i>Image>Mode>Grayscale</i>.</p> -<p>(6) <i>View>Zoom</i> to an appropriate amount that shows the image at approximately its print size. That depends on your monitor's resolution. On my own computer, 25% is about right. Does not need to be exact.</p> -<p>(7) <i>Colors>Threshold</i>. If necessary, adjust the slider until the image looks best. It might be that the default 50% works for you. If you move it to the left, then black areas will become a little narrower. If to the right, black areas will become a little thicker.</p> -<p>(8) <i>Image>Mode>Indexed>(black and white, 1-bit palette)</i>. Remove unused colors from colormap. No dithering.</p> -<p>(9) <i>File>Export</i>. Use png (Portable Network Graphics) extension. When the dialog box appears, ensure that "save resolution" is checked. Use the highest level of compression offered. The exported image may look poor in some image viewers, because those viewers do not read the full resolution. Not a problem. The image will look good when seen in better viewers.</p> -<p>(10) Command-Line Terminal, using GraphicsMagick or ImageMagick:</p> -<p class="code">GraphicsMagick, Windows or Linux: <code>gm mogrify -strip nameofimage.png</code></p> -<p class="code">ImageMagick, Windows: <code>magick mogrify -strip nameofimage.png</code></p> -<p class="code">ImageMagick, Linux: <code>mogrify -strip nameofimage.png</code></p> -<p>(11) Sanity check:</p> -<p class="code">GraphicsMagick, Windows or Linux: <code>gm identify -verbose nameofimage.png</code></p> -<p class="code">ImageMagick, Windows: <code>magick identify -verbose nameofimage.png</code></p> -<p class="code">ImageMagick, Linux: <code>identify -verbose nameofimage.png</code></p> -<p>After a few moments, the Terminal will show some information. It should say that the depth is 1-bits per pixel, that the only color is gray (1 bits), that the resolution is 236.22 pixels per centimeter (which is 600dpi). The page geometry, divided by 600, will give you the image size in inches (thus, a page geometry of 900+1200+0+0 represents an image 1.5" wide x 2" high).</p> +<p class="noindent">You may scale, rotate, and displace text. This is done using text commands, and the result is still text. When cleverly done, it provides an image-like effect. See <a href="#h6">section 6</a> for the possibilities.</p> </div><!-- end 7.2.1 --> -<h4 id="h7.2.2">7.2.2. Workflow: Grayscale in GIMP</h4> +<h4 id="h7.2.2">7.2.2. <code>\InlineImage[<em>hoffset,voffset</em>]{<em>imageFile.png or .jpg</em>}</code> and starred version</h4> <div class="d4" id="d7.2.2"> -<p class="noindent">To produce a suitable <b>grayscale</b> image in GIMP, with post-processing in ImageMagick or GraphicsMagick, follow these instructions:</p> -<p>(1) Open the image file in GIMP. If it is a vector format (such as svg or pdf), ensure that it is resolved to 300 pixels/in with anti-aliasing, and that its size is the same as your intended dimensions (measured in inches or mm). You can also use a larger size, if you intend to crop some of the periphery; or you can use a smaller size, if you intend to make it larger by adding white space.</p> -<p>(2) If you need to crop to a smaller size, or add to a larger size, do it now. <i>Image>Canvas Size</i>, with <i>Resize Layers:All</i>.</p> -<p>(3) If you need to edit the image, by adding or removing anything, do it now.</p> -<p>(4) <i>Image>Flatten Image</i>.</p> -<p>(5) <i>Image>Mode>Grayscale</i>.</p> -<p>(6) <i>View>Zoom</i> to an appropriate amount that shows the image at approximately its print size. That depends on your monitor's resolution. On my own computer, 50% is about right. Does not need to be exact.</p> -<p>(7) Very dark grays are hard to produce accurately, and so are very light grays. If your image relies on areas that are nearly black and nearly white, then consider adjusting lightness and contrast so that they are not so close to black and white. GIMP's <i>Colors>Levels</i> might be more useful than <i>Colors>Brightness/Contrast</i>.</p> -<p>(8) Ensure that white areas are truly white, not light gray. Use GIMP's <i>Select By Color</i> Tool, with a very low threshold, to choose areas that should be exactly white, then clear them.</p> -<p>(9) <i>File>Export</i>. Use png (Portable Network Graphics) extension. When the dialog box appears, ensure that "save resolution" is checked. Use the highest level of compression offered. The exported image may look poor in some image viewers, because those viewers do not read the full resolution. Not a problem. The image will look good when seen in better viewers.</p> -<p>(10) Command-Line Terminal, using GraphicsMagick or ImageMagick:</p> -<p class="code">GraphicsMagick, Windows or Linux: <code>gm mogrify -strip nameofimage.png</code></p> -<p class="code">ImageMagick, Windows: <code>magick mogrify -strip nameofimage.png</code></p> -<p class="code">ImageMagick, Linux: <code>mogrify -strip nameofimage.png</code></p> -<p>(11) Sanity check:</p> -<p class="code">GraphicsMagick, Windows or Linux: <code>gm identify -verbose nameofimage.png</code></p> -<p class="code">ImageMagick, Windows: <code>magick identify -verbose nameofimage.png</code></p> -<p class="code">ImageMagick, Linux: <code>identify -verbose nameofimage.png</code></p> -<p>After a few moments, the Terminal will show some information. It should say that the type is grayscale, at 8 bits per pixel. The resolution is 118.11 pixels per centimeter (which is 300dpi). The page geometry, divided by 300, will give you the image size in inches (thus, a page geometry of 900+1200+0+0 represents an image 3" wide x 4" high).</p> -<p class="floatright"><img src="html-resources/pngcolortype.png" width="270" height="46" alt="png color type"/><br/><img src="html-resources/jpgcolorspace.png" width="296" height="46" alt="jpg colorspace"/></p> -<p>Most important of all: Scroll through the information. Near its end, you should see a line like this. The exact wording will depend on your software:</p> -<p class="code" style="clear:both">For png images: <i>png: IHDR.color_type: 0 (grayscale)</i></p> -<p class="code">For jpg images: <i>JPEG-Colorspace: 1</i> and <i>JPEG-Colorspace-Name: GRAYSCALE</i></p> -<p>The above codes are the only ones that matter. Even if other information claims that the image is grayscale, or lists the colors and they are all shades of gray, <em>that is not good enough</em>. When automated software reviews your PDF for compliance, it will look at the png <i>IHDR.color_type</i>, which must be 0, or the <i>JPEG-Colorspace</i>, which must be 1. Anything else fails. If the information is different, it means that you forget to change the mode from RGB to grayscale before you exported the image.</p> -<p>You may ask: If the image was not really grayscale, can it be converted to grayscale using a simple command line, with ImageMagick or GraphicsMagick? The answer is yes, but don't do it that way. The reason is that there are many ways to map colors (even "gray colors") to true grayscale, and an automated conversion may produce unexpectedly light or dark results. It is better to do the conversion in a graphics program, where you can see what you are doing.</p> -</div><!-- end 7.2.2 --> -</div><!-- end 7.2 --> - -<h3 id="h7.3">7.3. Placing Images In Your Document</h3> -<div class="d3" id="d7.3"> -<p class="noindent">An image may be placed as an inline element, using the <code>\InlineImage</code> or <code>\InlineImage*</code> command. This allows the image to mingle with text, and even have text as an overlay.</p> -<p><code>\BlockImage</code> places the image as a block element. It may be accompanied by text, within the same block. IMPORTANT: Beginning with version 1.46, the behavior of this command has changed. See its description, below.</p> -<p>If your book has a lot of images mingled with text, then you should consider using a page layout program (such as Scribus) instead of TeX. That's because the best strategies for an image-intensive picture book are very different from the strategies adoped by <i>novel</i>.</p> -<p>• Beware of image overlap. Images are not allowed to overlap each other, in the kind of commercial printing that is likely to be used for your book. However, since overlap is generally legal in PDF, TeX will not issue an error.</p> -<p>• Do not use the ordinary TeX commands, or environments, for floats or figures.</p> -<p>• Do not rotate an image in TeX. Prepare the rotated image in a graphics program, flatten it at correct size and dpi, then insert the pre-rotated image.</p> -<p>• Do not scale or crop an image in TeX. Do it in a graphics program. Be sure that the finished image is flattened, at correct size and dpi.</p> - -<h4 id="h7.3.1">7.3.1. Image-Like Effects in Text</h4> -<div class="d4" id="d7.3.1"> -<p class="noindent">You may scale, rotate, and displace text. This is done using text commands, and the result is still text. When cleverly done, it provides an image-like effect. See <a href="#h6">section 6</a> for the possibilities.</p> -</div><!-- end 7.3.1 --> - -<h4 id="h7.3.2">7.3.2 <code>\InlineImage[<em>hoffset,voffset</em>]{<em>imageFile.png or .jpg</em>}</code> and starred version</h4> -<div class="d4" id="d7.3.2"> -<p class="noindent">This command places the image as an inline element, at 100% scale. The use of <i>png</i> or <i>jpg</i> images, with file extension, is required.<p> -<p>You may offset the image horizontally or vertically. Positive direction is to the right and up. If you use one offset, then you must use both (if necessary, <i>0em</i>). Any units of length may be used, but the preferred units are <i>em</i> or <code>\textwidth</code> for horizontal, and <i>em</i> or <code>\nbs</code> for vertical.</p> -<p>By default, the <em>top</em> of the image is at the text baseline. If you prefer that the <em>bottom</em> of the image be at the text baseline, use voffset <i>b</i>. Example:</p> +<p class="item"><b>A.</b> This command places the image as an inline element, at 100% scale. The use of <i>png</i> or <i>jpg</i> images, with file extension, is required.<p> +<p class="item"><b>B.</b> You may offset the image horizontally or vertically. Positive direction is to the right and up. If you use one offset, then you must use both (if necessary, <i>0em</i>). Any units of length may be used, but the preferred units are <i>em</i> or <code>\textwidth</code> for horizontal, and <i>em</i> or <code><span style="cursor:help" title="normal baseline skip">\nbs</span></code> for vertical.</p> +<p class="item"><b>C.</b> By default, the <em>top</em> of the image is at the text baseline. If you prefer that the <em>bottom</em> of the image be at the text baseline, use voffset <i>b</i>. Example:</p> <p class="code"><code>\InlineImage[0em,b]{imageFile.png}</code></p> -<p>Thanks to the included <i>calc</i> package, offsets may use <code>\widthof{<em>text</em>}</code>, <code>\heightof{<em>text</em>}</code>, or <code>\depthof{<em>text</em>}</code> as lengths. The most useful of these is when you wish to align the top of an image at the X-height of surrounding text:</p> +<p class="item"><b>D.</b> Thanks to the included <i>calc</i> package, offsets may use <code>\widthof{<em>text</em>}</code>, <code>\heightof{<em>text</em>}</code>, or <code>\depthof{<em>text</em>}</code> as lengths. The most useful of these is when you wish to align the top of an image at the X-height of surrounding text:</p> <p class="code"><code>\InlineImage[0em,\heightof{X}]{imageFile.png}</code></p> <p>You may also use <code>\heightof{\Aring}</code> for the tallest accented letter normally found in Latin-1.</p> <p>Another possibility is to align the bottom of an image with the lowercase descender:</p> <p class="code"><code>\InlineImage[0em,b-\depthof{gjpqy}]{imageFile.png}</code></p> -<p>Lengths <code>\imagewidth</code> and <code>\imageheight</code> may also be used for offsets. These lengths remain set, and can be used for other purposes (such as displacing text) until another image is placed.</p> -<p>Offsets may be written as combinations of lengths. If you use the baseline <i>b</i> as above, it must be the first character of voffset. If you use <code>\widthof</code> or <code>\heightof</code>, then its backslash must be the first character <em>unless</em> it is preceded by another length. Thus, an offset of <code>-\heightof{X}</code> is prohibited, but you can use <code>0pt-\heightof{X}</code>. +<p class="item"><b>E.</b> Lengths <code>\imagewidth</code> and <code>\imageheight</code> may also be used for offsets. These lengths remain set, and can be used for other purposes (such as displacing text) until another image is placed.</p> +<p class="item"><b>F.</b> Offsets may be written as combinations of lengths. If you use the baseline <i>b</i> as above, it must be the first character of voffset. If you use <code>\widthof</code> or <code>\heightof</code>, then its backslash must be the first character <em>unless</em> it is preceded by another length. Thus, an offset of <code style="white-space:nowrap">-\heightof{X}</code> is prohibited, but you can use <code>0pt-\heightof{X}</code>. <p>Here are some examples of allowable code:</p> <p class="code"><code> \InlineImage[2.3em, -0.4em]{imageFile.png}<br/> \InlineImage[0pt-\widthof{eee}, b+\heightof{X}-0.2em]{imageFile.jpg} </code></p> -<p>The image occupies zero vertical space. So, it will not push apart baselines. The next line(s) of text may overlie the image. In some cases, this is desirable. If you do not want that effect, then you can either insert a suitable number of <code>\null</code> lines after the image, or use the <code>\BlockImage</code> command instead.</p> -<p>With the un-starred <code>\InlineImage</code> command, the image occupies its natural horizontal width. That is, text following the image will (if it fits) continue from the right edge of the image. But with the starred <code>\InlineImage*</code> command, the image occupies zero width. In this case, text following the image will continue from the left of the image, and overlie the image.</p> -<p>Having text overlie the image is allowable, and can create some interesting special effects. But when your print service sees what you have done, they may think that it is a mistake. Be sure that you discuss this with them.</p> -<p>If you do allow text to overlie an image, be sure that the image is very light. Repeat: <em>very light</em>. Depending on the printing technology, an image may print darker than you see on your computer screen, and that would make text hard to read. At low print volume, your print service will probably use a technology that is like an industrial-strength home inkjet printer, which can make very sharp text over images. However, if your book goes to volume production, then the technology will be different. Volume printing will use halftoned images, and the text overlay may also become halftoned, which will reduce its sharpness considerably.</p> -<p>Note that an image may be placed in a way that prints some of the image in the margin. That's allowable if your margin is wider than the minimum required for printing clearance. But even if it is not allowable, there will be no complaint or warning from TeX. Use the <a href="#h2.3">shademargins</a> class option to ascertain position.</p> -<p>Do not place an image so that it approaches or goes beyond the page edge. That requires a "bleed box" which is not part of <i>novel</i> capabilities. If your book needs that kind of image handling, use a page layout program instead.</p> -<p>Do not place images so that they overlap. Although that is allowed in the PDF, it is likely to be flagged as an error by your print service.</p> -</div><!-- end 7.3.2 --> - -<h4 id="h7.3.3">7.3.3. Text Over <code>\InlineImage</code></h4> -<div class="d4" id="d7.3.3"> -<p class="noindent">As noted above, an <code>\InlineImage</code> (or its starred version) can be used as the background to any subsequent text. Just as with any other text, whatever sits atop an image must be pure black. If you need text in gray, then you must integrate the rasterized text with the image in an external graphics program, instead of typing the text in your document.</p> -<p>When text overlies an image, it retains its identity as vector paths, as far as the PDF is concerned. In some printing processes, particularly those for very low volume production, the result will be as sharp and dark as ordinary text. However, if your book sells well (or is being prepared to sell well), the image will be converted to halftone, and the text that lies above it may also be converted to halftone. This will reduce the sharpness of the text. It is not necessarily a problem, unless your text is very small or has fine details.</p> +<p class="item"><b>G.</b> The image occupies zero vertical space. So, it will not push apart baselines. The next line(s) of text may overlie the image. In some cases, this is desirable. If you do not want that effect, then you can either insert a suitable number of <code>\null</code> lines after the image, or use the <code>\FloatImage</code> command instead.</p> +<p class="item"><b>H.</b> With the un-starred <code>\InlineImage</code> command, the image occupies its natural horizontal width. That is, text following the image will (if it fits) continue from the right edge of the image. But with the starred <code>\InlineImage*</code> command, the image occupies zero width. In this case, text following the image will continue from the left of the image, and overlie the image.</p> +<p class="item"><b>I.</b> Having text overlie the image is allowable, and can create some interesting special effects. But when your print service sees what you have done, they may think that it is a mistake. Be sure that you discuss this with them.</p> +<p>If you do allow text to overlie an image, be sure that the image is very light. Repeat: <em>very light</em>. Depending on the printing technology, an image may print darker than you see on your computer screen, and that would make text hard to read. At low print volume, your print service will probably use a technology that can make very sharp text over images. However, if your book goes to volume production, then the technology will be different. Volume printing will use halftoned images, and the text overlay may also become halftoned, which will reduce its sharpness considerably.</p> +<p class="item"><b>J.</b> An image may be placed in a way that prints some of the image in the margin. That's allowable if your margin is wider than the minimum required for printing clearance. But even if it is not allowable, there will be no complaint or warning from TeX. Use the <a href="#h2.3">shademargins</a> class option to ascertain position, and consider setting an <a href="#h4.3.1.2">unsafe zone</a>.</p> +<p class="item" style="position:relative"><b>K.</b> <img src="html-resources/info18.png" width="18" height="18" style="position:relative; bottom:-3px" title="tech info" alt="tech info"/> Do not place an image so that it approaches or goes beyond the page edge. That requires a "bleed box" which is not part of <i>novel</i> capabilities (except for cover art). If your book needs that kind of image handling, use a page layout program instead.</p> +</div><!-- end 7.2.2 --> + +<h4 id="h7.2.3">7.2.3. Text Over <code>\InlineImage</code></h4> +<div class="d4" id="d7.2.3"> +<p class="item"><b>A.</b> As noted above, an <code>\InlineImage</code> (or its starred version) can be used as the background to any subsequent text. Whatever sits atop an image must be darker. If you need text in gray, it is better to integrate the rasterized text with the image in an external graphics program, instead of using gray text in your document.</p> +<p class="item"><b>B.</b> When text overlies an image, it retains its identity as vector paths, as far as the PDF is concerned. In some printing processes, particularly those for very low volume production, the result will be as sharp and dark as ordinary text. However, if your book sells well (or is being prepared to sell well), the image will be converted to halftone, and the text that lies above it may also be converted to halftone. This will reduce the sharpness of the text. It is not necessarily a problem, unless your text is very small or has fine details.</p> <p>If the text-over-image is part of a title, then the text is naturally large and dark, and will easily withstand halftoning.</p> -<p>Be aware that not all print services will accept text over images. It's not that they <em>cannot</em> do it; after all, your home and office printers can easily do it. The reason they object is because the pages of your book will be handled in small volume by persons who are unfamiliar with the book. Text over an image may be flagged as a printing error or a bug in the PDF. In the advertising world, text over image is routine. But in the world of fictional novels, it is unusual. Don't imagine that they will decide what you meant to do, by reading your book. Also, very sharp image/text, at low printing volume, will not appear as sharp when the technology changes for higher volume production. They know that, but are not sure if <em>you</em> know that.</p> -<p>An inline image occupies zero vertical space. If you place its top near the bottom of the textblock, then the image will happily flow into the lower margin and perhaps off the bottom of the page, without an error (but the print service will reject it). The reason that TeX does not provide an error message is quite simple: Technically, it is not an error! It is just not what you meant to do. The software cannot read your mind. This is where the <a href="#h2.3">shademargins</a> class option helps.</p> +<p class="item"><b>C.</b> Not all print services will accept text over images. It's not that they <em>cannot</em> do it; after all, your home and office printers can easily do it. The reason they object is because the pages of your book will be handled in small volume by persons who are unfamiliar with the book. Text over an image may be flagged as a printing error or a bug in the PDF. In the advertising world, text over image is routine. But in the world of fictional novels, it is unusual.</p> +<p class="item"><b>D.</b> An inline image occupies zero vertical space. If you place its top near the bottom of the textblock, then the image will happily flow into the lower margin and perhaps off the bottom of the page, without an error (but the print service will reject it). The reason that TeX does not provide an error message is quite simple: Technically, it is not an error! It is just not what you meant to do. The software cannot read your mind. This is where the <a href="#h2.3">shademargins</a> class option helps, especially when you set an <a href="#h4.3.1.2">unsafe zone</a>.</p> <p>Example:</p> <p class="code"><code> -\noindent\InlineImage*[0pt,1.2\nbs]{gavel.png} Lord Withens took a seat at the rear of the courtroom, attempting to be inconspicuous. Yet his effort was in vain, as he was the only person there with a riding crop and spurs.\par<br/> +\noindent\InlineImage*[0pt,1.2<span style="cursor:help" title="normal baseline skip">\nbs</span>]{gavel.png} Lord Withens took a seat at the rear of the courtroom, attempting to be inconspicuous. Yet his effort was in vain, as he was the only person there with a riding crop and spurs.\par<br/> He would have taken the car, had it not been stolen. But that was why he was here, at the arraignment of the person charged with the theft. It was most unfortunate that the accused was his own elderly father; but then, theft ran in the family line.\par </code></p> <p class="centerimg"><img src="html-resources/inlineimagest.png" width="651" height="249" alt="example of InlineImage*"/></p> -</div><!-- end 7.3.3 --> - -<h4 id="h7.3.4">7.3.4. <code>\BlockImage[<em>alignment,hoffset,voffset</em>]{<em>imageFile.png or .jpg</em>}[<em>accompanying text</em>]</code></h4> -<div class="d4" id="d7.3.4"> -<p>The <code>\BlockImage</code> command places its image as a block element, distinct from the preceding or following text. Be sure to close the preceding paragraph before writing <code>\BlockImage</code>.</p> -<p>The command takes an optional argument with up to three comma-separated values. The first is <i>alignment</i>: <code>l</code>, <code>c</code>, or <code>r</code> for left, center, or right. The second and third values are lengths, <i>hoffset</i> and <i>voffset</i> for the image. Positive offsets are up and right.</p> -<p>Unlike the <code>\InlineImage</code> command, you may not use "b" in the vertical offset. By default top of the image is aligned to the baseline of where text would be, if you did not place an image. You may find that <code>\normalXheight</code> is a useful vertical offset, at it aligns the top of the image to where the X-height would be.</p> -<p>Following the mandatory image filename, an optional argument allows text to appear in the same block as the image. See the next section.</p> -<p>An automatic calculation ensures that text after <code>\BlockImage</code> will comfortably clear the bottom of the image (taking its voffset into account). The text will be on-grid.</p> -<p>Remember that TeX does not care if the image overflows into the margins. Thus, you must review the PDF to ensure that an image does not appear in an unsuitable location. You can visualize margins using the <i>draft,shademargins</i> document class options.</p> -</div><!-- end 7.3.4 --> - -<h4 id="h7.3.5">7.3.5. <code>\BlockImage</code> with Accompanying Text</h4> -<div class="d4" id="d7.3.5"> -<p><b>Attention:</b> Changed behavior of <code>\BlockImage</code> in v. 1.46.</p> -<p class="noindent">The second optional argument of <code>\BlockImage</code>, following the image filename, may contain text that will accompany the image in the same block of space. The text may be more than one paragraph.</p> -<p>If the image is aligned at left or right, then the accompanying text block will be separated from the image by the length of the normal paragraph indent. Within this block, the text will be justified. The usual indentation rules apply.</p> -<p>If the image is aligned at center, then the accompanying text will also be centered (and usually will overlie the image). If you wish to confine the width of this text block to less than the full page text width, then wrap the accompanying text (inside the brackets) in an <i>adjustwidth</i> environment.</p> -<p>Whatever the alignment of image offset, the first line of accompanying text will be vertically located on-grid, where the first line of text would ordinarily sit. If you wish to displace it vertically, then begin the accompanying text with <code>\pushtextdown{<em>length</em>}</code>. It is best to measure the length in terms of the normal baselineskip, <code>\nbs</code>.</p> -<p>Note that you cannot automatically "flow" text around an image in <i>novel</i> class. Although there is a LaTeX package that will do that, parts of it are incompatible with the grid structure of <i>novel</i>, so the package is disallowed. If you cleverly place just the right amount of accompanying text, then you can fill the area next to the image; but this is not automated.</p> -<p>If you write too much accompanying text, it will overflow into the text that follows. There is no automatic increase in the vertical space reserved for the image.</p> -<p>Example:</p> -<p class="code"><code><small>It was a dark and stormy night. Lord Withens mounted his horse and rode through the darkness, accidentally trampling some petunias in Her Ladyship's garden.\par<br/> -\BlockImage[r]{gnome.png}[\pushtextdown{2\nbs}Suddenly he was confronted by an irate gnome, who expressed an opinion in the crudest of language, even for a gnome.\par]<br/> -Lord Withens shrugged, and rode on. There was nothing to do but remain silent, this time taking more care. He would speak with his wife about the gnome situation when he returned.\par</small></code></p> -<p class="centerimg"><img src="html-resources/gnome-censored.png" width="437" height="270" alt="example of BlockImage with accompanying text"/></p> -<p>• In general, avoid using accompanying text with an image, with the possible exception of titles and other special layouts. There is little need for it in the flowing text of a novel. If you find that you need to use it frequently, then perhaps your book would benefit from a page layout program such as <i>Scribus</i>, instead of TeX.</p> -</div><!-- end 7.3.5 --> -</div><!-- end 7.3 --> - -<h3 id="h7.4">7.4. Color Cover Artwork</h3> -<div class="d3" id="d7.4"> -<p class="noindent">This portion serves a limited purpose. It is for the benefit of those who need to submit color print cover artwork in the form of a PDF/X-1a:2001 file, with the artwork as CMYK and 240% ink limit. This is the format required by some American print-on-demand services. It is also generally acceptable to others, whose requirements are less restrictive.</p> -<p><b>Before you begin:</b> Do you really need to do this? Many print-on-demand services are perfectly happy to accept something such as an ordinary RGB jpeg image, as long as it has the correct size (with bleed area). They can easily process it for print production in a few moments, using professional software. If they do it, then whether or not you are surprised by the resulting colors, will depend on whether or not your original image is within the printer gamut. In other cases, the print service prefers (or insists) that you do the image print production processing yourself. Then, you get to see an emulation of the print colors <em>before</em> you submit the file, and can change your artwork if the resulting colors are disappointing.</p> -<p>The <em>novel</em> document class does not provide any support for creating the original artwork, either image or text. In fact, TeX is not the best way to do that. Use a graphics program (such as the free GIMP) to do your artwork, including text. In the end, your text will be rasterized, just like any background image. For this reason, avoid using small text, or consider using a sans-serif typeface on the cover (even though there is no sans-serif in the book itself).</p> -<p>DO NOT PLACE A BARCODE. If your print service requests a white rectangle where the barcode will go, then include it in your image. Almost every print service is willing to create the barcode from your ISBN, and place the barcode image into your PDF during post-processing. Most of them even demand that they do it themselves. Do-it-yourself barcodes are incompatible with the following instructions.</p> -<p><b>DISCLAIMER:</b> This documentation, and its accompanying software, is offered AS-IS, WITHOUT WARRANTY EXPRESS OR IMPLIED. USE ONLY AT YOUR OWN RISK. The author is an amateur who does not profess expertise in these matters. The best I can say is, "It works for me."</p> - -<h4 id="h7.4.1">7.4.1. Begin With PNG</h4> -<div class="d4" id="d7.4.1"> -<p class="noindent">Create your artwork, including all text (but not barcode or barcode text) using whatever means you have. How you do it is not relevant. To follow these instructions, you must provide the artwork as a flattened (no transparency) PNG format image, at correct size (including bleed area) and resolution (dpi).</p> -<p style="margin-top:8px"><b>Example:</b> Suppose your book is 5.5" x 8.5" softcover, a typical size for American fiction. Based on its page count and paper, you are told that the spine width must be 0.62". The required bleed width, on all four sides, must be 0.125".</p> -<p>Then, the image is 0.125 + 5.5 + 0.62 + 5.5 + 0.125 = 11.87in wide.</p> -<p>The image is 0.125 + 8.5 + 0.125 = 8.75in high.</p> -<p>At 300dpi resolution (a typical value) the image must be 11.87 x 300 = 3561 pixels wide, and 8.75 x 300 = 2625 pixels high. In case of fractional pixels, round upward. The exact pixel count is important.</p> -<p style="margin-top:8px">It is best to use the AdobeRGB1998 color workspace, or equivalent. But you can also use sRGB, or equivalent, and in many cases you will not notice much difference. It is helpful to attach (embed) the workspace color profile in your PNG image, especially if it is something other than AdobeRGB1998 or sRGB. Note that the workspace is NOT the color profile of your monitor (if you have it). If you do not attach (embed) the workspace color profile, then remember whether you were using AdobeRGB1998 or sRGB. If you make a mistake here, it is not fatal. It merely means that some colors (particularly bright greens and blue-greens) will print somewhat brighter or duller than you were expecting.</p> -<p>When done, export it as a flattened PNG.</p> -<p>If you are provided with an image other than PNG, you have to convert it to PNG. No alternative. It is easy enough to use GIMP to convert most image formats. If you have a PDF (which is not already in the required format), GIMP can probably open it as an image. Be sure you import it with the correct resolution. Again, the pixel width and height are important.</p> -<p><b>Cover Text:</b> These instructions assume that your cover text is rasterized, and is part of the image rather than vector text. In many cases your graphics program has enough text capability to do what you need.</p> -<p>If you wish to use TeX to typeset the cover text, do it this way: Use TeX to create one or more PDFs of the cover text, without images. You can create several blocks of text at different pages sizes, if you wish. Open your background artwork in GIMP. Add a new transparent layer above it. Open a text PDF in GIMP. Choose resolution 300dpi, full antialiasing, grayscale or color. The opened text is now a raster image. Copy it, and paste it atop the transparent layer. Anchor it. Use Color: Color to Alpha: white to alpha filter. That removes the white area from the PDF image. Finally, move the text to where it should go. You can rotate the text 90 degrees, but do not resize it! If you would rather the text be at a different size, then either change it in TeX, or use a different resolution when you open the PDF in GIMP. Note that even when you open the PDF at a different resolution, it will still be at 300dpi when you place it over the 300dpi background image; but its size will change.</p> -</div><!-- end 7.4.1 --> - -<h4 id="h7.4.2">7.4.2. Get Some Software</h4> -<div class="d4" id="d7.4.2"> -<p class="noindent">Get the 238% total ink limit color profile from <a href="http://www.newselfpublishing.com/TotalInkLimit.html" rel="external" target="new">Aaron Shepard</a>. Direct link to <a href="http://www.newselfpublishing.com/TotalInkLimit.zip" rel="external" target="new">zipped profile</a>. This does the magic of ensuring that you comply with the 240% ink limit (the profile provides a little headroom, which seems useful). It can also be used for softproofing, if you know how to do that. That's not the only possible profile, but it seems to me that it is the best of several available. A good alternative is from <a class="external" rel="external" target="new" href="https://indesignsecrets.com/force-color-images-cmyk-240-ink-limit.php">David Blatner</a>. Direct link to <a class="external" rel="external" target="new" href="http://indesignsecrets.com/downloads/SWOP%20Coated%20240%25%20Ink%20Limit.icc">icc profile</a>.</p> -<p>Included in the <i>novel</i> documentation <i>extras</i> folder is an open-source color profile for sRGB (file <i>srgb.icc</i>). There is also an open-source Equivalent to AdobeRGB (file <i>crgb.icc</i>). You will be using these when you convert your PNG image to a JPG in CMYK color space. These are re-named, cross-platform files obtained from <a class="external" rel="external" target="new" href="https://ninedegreesbelow.com">Elle Stone</a>. I can think of no technical need to use the "real" profiles that may be lurking somewhere in your computer.</p> -<p>Get GraphicsMagick or ImageMagick. On Linux, you can install it via your system package manager. On Windows, get GraphicsMagick Q16 binaries for your system (32 or 64 bit) from <a href="https://sourceforge.net/projects/graphicsmagick/files/graphicsmagick-binaries/" rel="external" target="new">SourceForge</a>. I am told that versions for Mac are available via homebrew and macports, but again, I do not have a Mac, so I cannot check that. Or, get ImageMagick Q16 for various platforms from <a href="https://www.imagemagick.org/script/download.php" rel="external" target="new">here</a>.</p> -</div><!-- end 7.4.2 --> - -<h4 id="h7.4.3">7.4.3. Convert Your Image to CMYK at 240% (or less) Ink Limit</h4> -<div class="d4" id="d7.4.3"> -<p class="noindent">The effect of conversion is explained in <a href="#hD">Appendix D</a>.</p> -<p><b>Get ready:</b> Make a copy of the above 238% (or 240%) ink limit color profile, and re-name the copy as <i>240.icc</i>. I will call your original PNG image <i>yourimage.png</i>. Put this image, the <i>240.icc</i> file, and files <i>srgb.icc</i> and <i>crgb.icc</i> in a single working folder.</p> -<p>I will also assume that the image resolution is <i>300dpi</i>. If it is something else, then modify <i>300</i> to the other number, when you see it below.</p> -<p><i>Note: Each of the following boxed commands is a single command line. You may need to scroll the box to the right, or the text may wrap, depending on how you view this file.</i></p> -<p style="margin-top:16px"><b>Step 1:</b> Open a Terminal (Command Prompt) and navigate to that folder.</p> -<p>In the following commands, the initial "gm" calls GraphicsMagick (same code Linux and Windows). If you prefer ImageMagick, then eliminate the initial "gm" on Linux, or change the "gm" to "magick" on Windows.</p> -<div class="codeblock"> -<p><code>gm convert yourimage.png embedded.icc</code></p> -</div> -<p>The above command may return the message "No color profile available" and generate a zero-byte embedded.icc file. Not a problem. Discard the zero-byte file. But if it generates a non-zero embedded.icc file, keep it.</p> -<p style="margin-top:16px"><b>Step 2:</b> Next (note the file extensions):</p> -<div class="codeblock"> -<p><code>gm convert -strip yourimage.png yourimage-stripped.tif</code></p> -</div> -<p style="margin-top:16px"><b>Step 3:</b> At this point, there are three possibilities:</p> -<p><b>(a)</b> You have a non-zero embedded.icc file. In this case:</p> -<div class="codeblock"> -<p><code>gm convert -profile embedded.icc -profile 240.icc yourimage-stripped.tif yourimage-temp.tif</code></p> -</div> -<p><b>(b)</b> No embedded.icc, but you know that the artwork was create using AdobeRGB1998 workspace, or equivalent. Then:</p> -<div class="codeblock"> -<p><code>gm convert -profile crgb.icc -profile 240.icc yourimage-stripped.tif yourimage-temp.tif</code></p> -</div> -<p><b>(c)</b> Neither of the above. The image is probably sRGB (default). Then:</p> -<div class="codeblock"> -<p><code>gm convert -profile srgb.icc -profile 240.icc yourimage-stripped.tif yourimage-temp.tif</code></p> -</div> -<p style="margin-top:16px"><b>Step 4:</b> Now, regardless of which possibility you used above:</p> -<div class="codeblock"> -<p><code>gm mogrify -strip yourimage-temp.tif</code></p> -</div> -<p style="margin-top:16px"><b>Step 5:</b> And finally:</p> -<div class="codeblock"> -<p><code>gm convert -units PixelsPerInch -density 300 -quality 100 yourimage-temp.tif yourimage-cmyk240.jpg</code></p> -</div> -<p style="margin-top:16px"><b>Step 6:</b> Now verify your work:</p> -<div class="codeblock"> -<p><code>gm identify -verbose yourimage-cmyk240.jpg</code></p> -</div> -<p>The report should show that the image is CMYK, that it is at 300 pixels/inch, and that there is NO entry for "Profile-color". It will not have anything to say about ink limit, or SWOP.</p> -</div><!-- end 7.4.3 --> - -<h4 id="h7.4.4">7.4.4. Convert your CMYK Image to PDF/X.</h4> -<div class="d4" id="d7.4.4"> -<p class="noindent">Up to now, you did not need TeX. Now you do. Be sure that you have a working TeX installation, with the <em>novel</em> document class package.</p> -<p>In folder (your TeX root)/doc/lualatex/novel/extras you will find file "novel-cover-template.tex". Place a copy in the same working folder as your image, and modify it as needed.</p> -<p><code>\SetMediaSize</code> refers to the full size of the image, with units (usually in). This includes the bleed box. For example, <code>\SetMediaSize{11.87in}{8.75in}</code>.</p> -<p><code>\SetTrimSize</code> refers to the trimmed image, without bleed. For example, <code>\SetTrimSize{11.62in}{8.5in}</code>.</p> -<p><code>\SetPDFX[CGATSTR001]{X-1a:2001}</code> will get you "US Web Coated SWOP v2" output intent (most common the USA), and PDF/X-1a:2001 compliance. The Output Intent *.icc color profile will NOT be embedded, because this is almost always the way that print services want it. The PDF contains a code identifying the intent, so there is no need to embed the color profile (and disadvantages to embedding it). In the unlikely event that they demand the Output Intent color profile embedded, put an asterisk on the command.</p> -<p>For compliance you need to use <code>\SetTitle</code>. The title for this file might not be the title of your book, because this file isn't your book. Ask you print service what they want. Same with <code>\SetAuthor</code>.</p> -<p>You can use <code>\SetApplication</code> and <code>\SetProducer</code> to change internal identifiers. Don't use these unless you have a reason.</p> -<p><code>\SetCoverImage</code> is self-explanatory. Must have file extension jpg, jpeg, JPG, or JPEG. Must be CMYK. Note that TeX cannot verify whether the image is in correct color space. It will compile, even if the image is wrong. Beware!</p> -<p>Do not attempt to write anything between <code>\begin{document}</code> and <code>\end{document}</code>. If you erroneously put some text there, the document will probably compile, and it may even be a valid PDF/X file. However, the resulting text color will almost surely be wrong. If so, the problem will be detected when you submit your file (wrong ink limit or color space).</p> -<p>Compiling may take a little longer than expected. If your TeX system opens a PDF viewer automatically, the image might be missing (or partial) until a few seconds after the viewer opens. Be patient. The file size is large.</p> -</div><!-- end 7.4.4 --> - -<h4 id="h7.4.5">7.4.5. Final Check</h4> -<div class="d4" id="d7.4.5"> -<p class="noindent">Open the PDF in Adobe Reader, which does a trick that no other free software will do, to my knowledge. If your platform does not have Adobe Reader, then find a friend who has it. May be a different platform.</p> -<p>In Adobe Reader, go to Edit, Preferences, Documents. Check "Save As optimizes for fast web view." Then go to Edit, Preferences, Page Display. Check "Show art, trim, and bleed boxes." Then OK.</p> -<p>Open your PDF. You should see a light green box, just inside the image boundary. This shows the Trim Area. This box does not print; it is only for visualization. Go to File, Properties, Fonts. There should be no fonts listed.</p> -<p>Then, "Save As" the same file name (or another one, if you prefer). This will optimize the file. You probably do not need to do that, but it does not hurt, and a few services expect it.</p> -<p>There will always be some difference between color as viewed on your monitor, and color as printed. This is due to the difference between emitted light (your monitor) and reflected light (print). In professional use, the monitor will be calibrated, and operated at a specific screen brightness. The print will be viewed under lighting with a specific color temperature and illumination. Your own colors are not that critical, are they? If you have a calibrated monitor, and view the PDF and images in color-managed software, then what you see on your computer will be reasonably close to what prints. If your monitor is not calibrated, or you are not using color-managed software, then the printed cover may have its greens a bit more colorful than you were expecting. That doesn't mean there will be a greenish cast. It merely means that things such as spring leaves and shamrocks will be a bit greener (in print) than you expected.</p> -<p><b>Remember the Disclaimer!</b> Your PDF file should now be ready for submission. Only "should," not "is," because this documentation and its accompanying software comes without warranty. Submit at your own risk!</p> -<p>All I can say is that it "worked for me." Screenshots:</p> -<p class="centerimg"><img src="html-resources/workedforme.png" width="860" height="275" title="worked for me" alt="worked for me"/></p> -</div><!-- end 7.4.5 --> -</div><!-- end 7.4 --> +</div><!-- end 7.2.3 --> + +<h4 id="h7.2.4">7.2.4. <code>\FloatImage[<em>floatmethod,xoffset,yoffset</em>]{<em>ImageFile .png or .jpg</em>}</code></h4> +<div class="d4" id="d7.2.4"> +<p class="item"><b>A.</b> <code>\FloatImage</code> places the image in its own block, like a paragraph.</p> +<p class="item"><b>B.</b> The image will always be horizontally centered. If that is not what you wish, then you can widen the image in a graphics program, adding white space as needed. Or, you can use <code>xoffset</code> to move the image.</p> +<p class="item"><b>C.</b> The top of the image will be positioned at the baseline of text, where text would have been without the image. You may adjust that position using <code>yoffset</code> (a positive length is upward). In some cases, <code>\normalXheight</code> (the normal text X height) is a good choice for <code>yoffset</code>.</p> +<p class="item"><b>D.</b> The height of the image is automatically measured, so that the following paragraph will be positioned at an integer number of baseline skips. This maintains the text line grid.</p> +<p class="item"><b>E.</b> The optional argument is comma-separated, with up to three values. The first is float method. The second (if used) is horizontal offset. The third (if used) is vertical offset. In some cases, changing the vertical offset will determine where the image fits.</p> +<p class="item"><b>F.</b> The <i>float method</i> is a code describing how the floated image should be placed. The available choices are <code>t</code>, <code>b</code>, <code>ht</code>, and <code>hb</code>. Default is <code>ht</code>. Any un-listed float method will be substituted with <code>ht</code>.</p> +<p class="code"><code>ht</code> places the float "here" (mid-page, where code appears) if possible. But if the image doesn't fit, it will appear at the top of the following page.</p> +<p class="code"><code>hb</code> places the float "here" (mid-page, where code appears) if possible. But if the image doesn't fit, it will appear at the bottom of the following page. This method is unusual.</p> +<p class="code"><code>t</code> places the float at the top of the following page. It may appear at the top of the page where the code is written, but only if the image happens to be the first content there.</p> +<p class="code"><code>b</code> places the float at the first page bottom where it can fit.</p> +<p class="item"><b>G.</b> No other kind of float is available, not even by loading other packages. The <i>novel</i> class is not intended for books that rely on floats. Other document classes already have that capability. Or, consider using a page layout program instead of TeX.</p> +<p class="item"><b>H.</b> When a floated image is pushed to the following page, it will appear there, even if the image is too large for the page size. Other TeX classes will defer it.</p> +<p class="item"><b>I.</b> The <i>floatpag</i> package does not work in <i>novel</i>. If a floated image occupies a full page, you cannot customize the head/foot style for that page; it will be the same as it was on the calling page.</p> +</div><!-- end 7.2.4 --> + +<h4 id="h7.2.5">7.2.5. <code>\WrapImage[<em>position</em>]{<em>ImageFile.png or .jpg</em>}</code></h4> +<div class="d4" id="d7.2.5"> +<p class="item"><b>A.</b> The <code>\WrapImage</code> command is a front-end to the included <i>wrapfig</i> package. Do not use commands from <i>wrapfig</i> directly.</p> +<p class="item"><b>B.</b> <code>\WrapImage</code> is written between paragraphs. The image will appear with the next paragraph (unless moved). You cannot achieve the effect of wrapping an image mid-paragraph.</p> +<p class="item" style="text-align:justify"><b>C.</b> <img class="floatright" style="position:relative; top:6px; margin-right:0px" src="html-resources/wrapme.png" width="104" height="104" alt="Wrap me!" title="Wrap me!"/><code>\WrapImage</code> allows text (may be more than one paragraph) to wrap around an image. What you are now reading uses this technique in HTML. The text is wrapped around the image at right. Next to the image, the lines of text are shorter. Past the bottom of the image, the line length is restored to its usual size. In HTML, this is called <i>floating</i> an image; but in TeX, it is called <i>wrapping</i>. Wrapped images are uncommon in fiction, but they might be more useful on display pages, which have many positioned elements but little running text.</p> +<p class="item"><b>D.</b> The optional argument is position, any one of these letters: <code style="white-space:nowrap">l r o i L R O I</code>. Default is <code>r</code>. The letters place the image at left, right, outside, or inside (spine).</p> +<p>Lowercase position places the image where you wrote the code. However, if there is not enough space to fit it (too close to bottom of page), then both the image and the wrapped text will be moved to the next page. This leaves a white gap at the bottom of the previous page, which is undesirable. But it guarantees that the image remains attached to the expected text.</p> +<p>Uppercase position places the image where you wrote the code, if possible. However, if the image cannot fit there, then the image is floated to the next page, and accompanies the first new paragraph. This avoids a white gap at page bottom, but the image no longer accompanies the expected text. If you use this kind of position, avoid referring to "the image at right" or anything else that makes no sense if the image is moved.</p> +<p class="item"><b>E.</b> The top of the image will be placed as the X-height of normal text. This provides a good compromise between visual clearance and conserving space. You cannot increase the separation between text and image via command. If you need more white space around the image, then enlarge it in a graphics program, with surrounding white areas.</p> +<p class="item"><b>F.</b> You cannot wrap around a shape other than a rectangle. For that, you need a page layout program. Note: Actually, it can be done in TeX, but the code is mind-boggling and not part of any package. Don't ask.</p> +</div><!-- end 7.2.5 --> +</div><!-- end 7.2 --> </div><!-- end 7 --> </div><!-- end page07 --> <!-- ************************************************************ --> -<div id="page08" class="page"> +<div id="pageA" class="page"> -<h2 id="h8">8. Book Design</h2> -<div class="d2" id="d8"> +<h2 id="hA">Appendix A. Sample Document</h2> +<div class="d2" id="dA"> +<p class="noindent">If you click on a command, you will be taken to its documentation. +There are many other commands available, but they are not specific to novel class.</p> +<div class="sampledoc"> +<p>Non-empty default values are <em>shown like this</em>.<br/> + </p> +<p style="text-indent:0"> +<a href="#h1.1.1">% !TeX TS-program = LuaLaTeX</a><br/> +<a href="#h1.1.2">% !TeX encoding = UTF-8</a><br/> +<a href="#h2">\documentclass{novel}</a> % See list of class options; usually none needed.<br/> +%%% METADATA (FILE DATA):<br/> +<a href="#h3.3.1">\SetTitle{<em>IMPORTANT: Provide Book Title</em>}</a> % Required for PDF/X.<br/> +<a href="#h3.3.3">\SetSubtitle{}</a> % Default: empty.<br/> +<a href="#h3.3.2">\SetAuthor{}</a> % Default: empty.<br/> +<a href="#h3.3.4">\SetApplication{<em>LuaLaTeX with novel and microtype</em>}</a><br/> +<a href="#h3.3.4">\SetProducer{<em>LuaLaTeX with novel-pdfx and hyperref</em>}</a><br/> +<a href="#h3.4">\SetPDFX[<em>CGATSTR001</em>]{<em>X-1a:2001</em>}</a><br/> +%%% DIMENSIONS:<br/> +<a href="#h4.1.1">\SetTrimSize{<em>5.5in</em>}{<em>8.5in</em>}</a> % Sets width, height of your book.<br/> +% Default Media Size equals Trim Size.<br/> +% Rarely-used over-ride, except for cover artwork:<br/> +% <a href="#h4.1.2">\SetMediaSize[<em>alignment</em>]{<em>width</em>}{<em>height</em>}</a><br/> +% Default margins vary with Trim Size. Defaults for {5.5in}{8.5in}:<br/> +<a href="#h4.3.1">\SetMargins{<em>0.5in</em>}{<em>0.5in</em>}{<em>0.5in</em>}{<em>0.75in</em>}</a><br/> +%%% GENERAL FONTS:<br/> +% Percent at end of line is necessary, when writing font settings multi-line:<br/> +<a href="#h4.2.1.1">\SetParentFont[%<br/> +<em>SmallCapsFeatures={Renderer=Basic},</em></a>% Effective when small caps requested locally.<br/> +<a href="#h4.2.1.1"><em>Kerning=On,</em> %<br/> +<em>Ligatures=TeX,</em> %<br/> +]{<em>Libertinus Serif</em>}</a><br/> +% Main text font automatically adds <em>Numbers=OldStyle,Ligatures=Common</em>.<br/> +% Default main font size is based on other layout settings.<br/> +% Varies from 11pt to 12pt. With all default layouts, value is 11.4pt.<br/> +% You may manually choose a different main font size:<br/> +% <a href="#h4.2.1.2">\SetFontSize{<em>length</em>}</a><br/> +% Default lines per page (main textblock) is calculated from other layout settings.<br/> +% When using all defaults, the calculated value is 35.<br/> +% If used, \SetLinesPerPage manually chooses the value:<br/> +% <a href="#h4.3.2">\SetLinesPerPage{<em>integer</em>}</a><br/> +<a href="#h4.2.3">\SetDecoFont{<em>NovelDeco.otf</em>}</a><br/> +<a href="#h4.2.4">\setsansfont{<em>Libertinus Sans</em>}</a><br/> +<a href="#h4.2.4">\setmonofont{<em>Libertinus Mono</em>}</a><br/> +<a href="#h4.2.4">\setmathfont{<em>Libertinus Math</em>}</a> % unicode-math<br/> +%%% HEADERS/FOOTERS:<br/> +<a href="#h4.3.3">\SetHeadFootStyle{<em>1</em>}</a> % This style has headers only.<br/> +<a href="#h4.3.4.1">\SetHeadJump{<em>1.5</em>}</a><br/> +<a href="#h4.3.4.1">\SetFootJump{<em>1.5</em>}</a><br/> +<a href="#h4.3.4.3">\SetLooseHead{<em>50</em>}</a><br/> +<a href="#h4.3.4.5">\SetEmblems{}{}</a> % Default blanks.<br/> +<a href="#h4.3.4.2">\SetHeadFont[<em>\parentfontfeatures,Letters=SmallCaps,Scale=0.92</em>]{<em>\parentfontname</em>}</a><br/> +<a href="#h4.3.4.4">\SetPageNumberStyle{<em>\thepage</em>}</a><br/> +<a href="#h4.3.4.6">\SetVersoHeadText{<em>\theAuthor</em>}</a><br/> +<a href="#h4.3.4.6">\SetRectoHeadText{<em>\theTitle</em>}</a><br/> +%%% CHAPTERS:<br/> +<a href="#h5.1.2.1">\SetChapterStartStyle{<em>footer</em>}</a> % Equivalent to empty, when style has no footer.<br/> +<a href="#h5.1.2.2">\SetChapterStartHeight{<em>10</em>}</a><br/> +<a href="#h5.1.3.1">\SetChapterFont[<em>Numbers=Lining,Scale=1.6</em>]{<em>\parentfontname</em>}</a><br/> +<a href="#h5.1.3.1">\SetSubchFont[<em>Numbers=Lining,Scale=1.2</em>]{<em>\parentfontname</em>}</a><br/> +<a href="#h5.3.1">\SetScenebreakIndent{<em>false</em>}</a><br/> +%%% CUSTOM FONTS:<br/> +% <a href="#h4.2.5">\NewFontFamily[]{}</a> % Optional command.<br/> +% <a href="#h4.2.5">\NewFontFace[]{}</a> % Optional command.<br/> +% <a href="#hE.2.3">\CreateFontFeature{}{}</a> % Optional command.<br/> +%%% OTHER:<br/> +<a href="#h1.1.3">\setdefaultlanguage[<em>variant=american</em>]{<em>english</em>}</a> % polyglossia<br/> +<a href="#h6">\microtypesetup{<em>config=novel-microtype,stretch=20,shrink=20,final</em>}</a> % microtype<br/> +%%% BEGIN DOCUMENT:<br/> +\begin{document}<br/> +<a href="#hD.3.2">\frontmatter</a> % Required.<br/> +% Typically <a href="#hB">six pages</a> of front matter, but <a href="#hD.3.2">could be more</a>.<br/> +<a href="#hD.3.3">\mainmatter</a> % Required<br/> +% <a href="#h5">Chapters</a> go here. SAMPLE Chapter structure:<br/> +<a href="#h5.1.1">\clearpage</a> % or <a href="#h5.1.1">\cleartorecto</a><br/> +<a href="#h5.1.2.3">\begin{ChapterStart}</a><br/> +\vspace*{2<span style="cursor:help" title="normal baseline skip">\nbs</span>} % Space above chapter title. \nbs = normal baseline skip.<br/> +<a href="#h5.1.3">\ChapterTitle{</a>— 1 —<a href="#h5.1.3">}</a> % Perhaps also <a href="#h5.1.3">ChapterSubtitle</a>, <a href="#h5.1.3">ChapterDeco</a>.<br/> +<a href="#h5.1.2.3">\end{ChapterStart}</a><br/> +It was a dark and stormy night, etc.<br/> +<a href="#h5.1.1">\clearpage</a> % or <a href="#h5.1.1">\cleartorecto</a><br/> +\end{document} +</p> +</div> + + +</div><!-- end A --> +</div><!-- end Appendix A --> +<!-- ************************************************************ --> +<div id="pageB" class="page"> + + +<h2 id="hB">Appendix B. Basic Six-Page Front Matter</h2> +<div class="d2" id="dB" style="padding-top:0.5em"> +<p class="imgcentered"><img src="html-resources/sixpage-frontmatter.png" width="740" height="189" alt="Six-page front matter, with Epigraph on page v." title="Six-page front matter."/></p> +<p class="noindent1">In many instances, six pages of front matter are all you need for fiction. This is often true for major publishers, not just self-published P.O.D. authors.</p> +<p class="noindent1">You can use six pages, provided that:</p> +<p class="overhang">• Your front matter does not contain material written by someone else (such as a Foreword), no matter how short. Exception: You may use an Epigraph.</p> +<p class="overhang">• Your front matter contains at most one of the following, limited to a single page: Dedication, Epigraph, Table of Contents, Acknowledgements, Author's Note, Map.</p> +<p class="noindent2">If both of the above points apply, then your front matter is organized as follows. Be sure that your document begins with the <code>\frontmatter</code> command, and that each page begins with <code>\thispagestyle{empty}</code> and ends with <code>\clearpage</code>.</p> + +<h3 id="hB.1">B.1. Half-Title to Copyright</h3> +<div class="d3" id="dB.1"> +<p class="noindent">The first four pages (i - iv) are the same for nearly every book.</p> +<p class="overhang"><b>Page i. Half-Title.</b></p> +<p class="overhang"><b>Page ii. Blank.</b> Alternatively, if you wrote numerous books, you can provide a list of them. However, many print/distribution services will not allow such a list, unless they carry everything on the list.</p> +<p class="overhang"><b>Page iii. Title Page.</b></p> +<p class="overhang"><b>Page iv. Copyright Page.</b></p> +</div><!-- end B.1 --> + +<h3 id="hB.2">B.2. Post-Copyright</h3> +<div class="d3" id="dB.2"> +<p class="noindent">After the copyright page, there may be some variation.</p> +<p class="overhang"><b>Page v. Varies.</b> One of: Dedication, Epigraph, Table of Contents, Acknowledgements, Author's Note, Map. If you have none of them, then repeat the Half-Title.</p> +<p>Don't be afraid to simply repeat the Half-Title. Even major publishers do it, when they have nothing else to say in front matter.</p> +<p class="overhang"><b>Page vi. Blank.</b> Exception: If Page v does not have an Epigraph or Half-Title, you may place an Epigraph here, provided that it does not visually detract from the story that begins on the facing page.</p> +</div><!-- end B2 --> + +<h3 id="hB.3">B.3. Sample TeX Code</h3> +<div class="d3" id="dB.3"> +<div style="margin-left:32px"> +<p class="code"><code> +\begin{document}<br/> +\frontmatter % Sets page number to i.<br/> +\thispagestyle{empty}<br/> +% Half-Title Page.<br/> +\clearpage<br/> +\thispagestyle{empty}<br/> +\null % Necessary for blank page.<br/> +% Alternatively, List of Books.<br/> +\clearpage<br/> +\thispagestyle{empty}<br/> +% Title Page.<br/> +\clearpage<br/> +\thispagestyle{empty}<br/> +% Copyright Page.<br/> +\clearpage<br/> +\thispagestyle{empty}<br/> +% Dedication or Epigraph or TOC or Acknowledgements or Author's Note or Map.<br/> +% Alternatively, repeat the Half-Title.<br/> +\clearpage<br/> +\thispagestyle{empty}<br/> +\null % Necessary for blank page.<br/> +% Alternatively, Epigraph if it does not detract from facing page.<br/> +\clearpage<br/> +\mainmatter % Sets page number to 1 for following material. +</code></p> +</div> +</div><!-- end B.3 --> + + +</div><!-- end B --> +</div><!-- end Appendix B --> +<!-- ************************************************************ --> +<div id="pageC" class="page"> + + +<h2 id="hC">Appendix C. Shopping for Fonts</h2> +<div class="d2" id="dC"> +<p class="noindent1">Since the <i>novel</i> class uses only <i>LuaLaTeX</i> and <i>fontspec</i> with utf-8 encoding, you may use any Open Type or TrueType font, subject to licensing. You are not limited to TeX fonts.</p> +<p>Many TeX fonts are only available in older Type 1 format (PostScript). Use of such fonts is <i>strongly discouraged</i>, due to possible issues in <i>novel</i> class (which will not be fixed, if they appear).</p> +<p>In some other cases, a TeX font package provides both the older format, and a newer Open Type or TrueType format. The different formats will have different font names. Sometimes the difference is very slight. Carefully look at the font name for the Open Type format, using TrueType only as a second choice. Remember that most on-line discussions will refer to the older Type 1 PostScript fonts, simply because they have been around longer. For example: <i>Linux Biolinum</i> is a sans-serif font available via TeX as a PostScript font. But <i>Linux Biolinum O</i> (note the O) is an Open Type font. If you need this font, then call for <i>Linux Biolinum O</i>, not simply <i>Linux Biolinum</i>.</p> +<p><b>Important:</b> Do not attempt to load a font by the <code>\RequirePackage</code> or <code>\usepackage</code> commands. Instead, if you choose to use fonts other than the defaults, load them via the <a href="#h4.2">font setting commands</a> described in this documentation. If you attempt to load a font the wrong way, you may get an error message, or the font may quietly fail to load.</p> + +<h3 id="hC.1">C.1. Licensing Issues</h3> +<div class="d3" id="dC.1"> +<p class="noindent1">Presumably, you are writing your novel for commercial value, and do not intend to give anything away for free. For that reason, avoid any font licensed under the GPL (GNU Public License) unless it has the <a class="external" rel="external" target="new" href="https://en.wikipedia.org/wiki/GPL_font_exception">font exception</a> clause. Many TeX fonts, and many non-TeX free fonts, are licensed under GPL, but <i>without</i> the relatively-recent font exception clause. Be careful!</p> +<p>Beware of fonts "free for personal use" from download sites. Your commercial application is not "personal use." Of course, if you like the font, you may purchase its commercial license.</p> +<p>Also beware of fonts generically labeled as "freeware" with no particular designer name. If you don't know who created the font, then how do you know that it can be given away for free? Even if there is a designer name, some of them had second thoughts about "freeware." They intended the fonts to be free only if you give your own work away for free. But they didn't mention it. Maybe they have no legal recourse, but you don't want them making anonymous negative reviews of your book.</p> +<p>You have numerous fonts already installed in your operating system, and perhaps others that came bundled with a particular application. If you intend to use those fonts, carefully read their licenses. It is often the case that fonts bundled with an application may <em>only</em> be used for documents created within, or processed by, that application. Or, the fonts may be OK to use for printing directly by your own home printer, but not for embedding in a PDF that will go to a commercial printer.</p> +<p>Although it does not pertain to TeX, another issue can arise if you later publish an ebook version. Fonts licensed for printing are often not licensed for an ebook. Indeed, the ebook distributor may ban them.</p> +<p>Always look for a Copyright notice, which can be identified with a particular person or organization. Copyright is good! It means that someone is claiming authorship of the font software. Only the Copyright owner has the right to give the font away for free, or license it to you after payment (often through an intermediary).</p> +<p>If you prefer free fonts, the most widely accepted license is the <a class="external" rel="external" target="new" href="http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL">SIL Open Font License</a>. This allows you to use the font for commercial purposes, embed it in PDF, modify it to suit your needs (if you change the font name), and even re-distribute the modifications. The recommended default <i>Libertinus Serif</i> bears this font license. So does the included font <i>NovelDeco</i>.</p> +</div><!-- end C.1 --> + +<h3 id="hC.2">C.2. Technical Issues</h3> +<div class="d3" id="dC.2"> +<p class="noindent1">Many fonts have technical errors, even among professional fonts. Some of the errors are so minor that they are not worth fixing.</p> +<p>However, beware of fonts based on traced artwork. The late 1990s had an explosion of amateur dingbat and decorative fonts produced this way, by scanning images from old books and digitizing the scan. The resulting vector glyphs rarely meet standards, and often are quite awful. The problem is that when a commercial printer renders your PDF to print, the printer's software is very different from what you have on your home computer. A technically erroneous glyph might look OK at home, but be rejected commercially.</p> +<p>If you have the knowledge, you can open a font in font editor software (such as <i>FontForge</i>) and ask it for validation. Missing extrema are rarely a problem, even if a lot of them are missing. Self-intersecting glyphs are not a problem if the the glyph is composed of two elements stuck together, such as Ç composed of C with separate cedilla. However, a self-intersecting glyph may be a problem if its lines criss-cross each other. Open paths, and outer paths drawn the wrong way, are often a problem. If the errors are confined to glyphs that you will not be using, then it can pass.</p> +</div><!-- end C.2 --> + +<h3 id="hC.3">C.3. Appearance Issues</h3> +<div class="d3" id="dC.3"> +<p class="noindent1">There are general expectations for book fonts, in terms of character sizes and shapes, and weights. Many of the widely-used TeX fonts, including Latin Modern, are unacceptable in fiction for this reason. Times New Roman is not quite acceptable for fiction; but it is often mis-used by amateurs with a word processor.</p> +<p>The best way to assess a font is to print it to paper, at actual size. Use an inkjet (not laser) printer with only-black cartridge.</p> +<p>Depending on whom you ask for an opinion, fiction is most easily read when there are about 60 to 66 characters (including spaces) per line. To evaluate a font for the main text, print out some paragraphs about 4" to 4.25" wide, and scale the font's point size so that you get an average number of characters per line in that range. Be sure to do that. Adobe Garamond Pro at 12pt, Libertinus Serif at 11.4pt, and Libre Caslon Text at 9.6pt (!) provide about the same number of characters per line of text. At the proper point size, some fonts will look too dark, and others will look too light.</p> +<p>Things to look for: (1) Are the lowercase letters too tall? If they are, then it is hard for readers in many Western languages to find where sentences start, by looking for capital letters. Also, there is less white space between lines, which makes the text appear dense and harder to read. (2) Is the shape of the characters so natural that you don't notice them? That's good! It is your writing, not the font, that is to be noticed. (3) Remember that some fonts are designed for use at large size, in posters; such fonts tend to look mechanical in fiction. Other fonts are designed for computer screens; the letters will be too widely-spaced in fiction. Nearly all modern fonts have decent kerning and important ligatures, so that's not usually a decisive factor.</p> +<p>The prevailing rule: If you notice the font, it's wrong.</p> +</div><!-- end C.3 --> + + +</div><!-- end C --> +</div><!--end Appendix C --> +<!-- ************************************************************ --> +<div id="pageD" class="page"> + + +<h2 id="hD">D. Book Design</h2> +<div class="d2" id="dD"> <p class="noindent">Most authors in P.O.D. use an ordinary word processor, particularly MS Word. For that reason, many print services, and most online user forums, refer to the terminology and settings of MS Word, rather than to the meanings in traditional book publishing. In the case of images, Photoshop settings are often described.</p> <p>Since you are neither using MS Word nor Photoshop, you must understand the terminology of printed book design. Then, you can apply that knowledge to the physical layout and internal design of your book, using <i>novel</i> document class.</p> -<h3 id="h8.1">8.1. Terminology</h3> -<div class="d3" id="d8.1"> +<h3 id="hD.1">D.1. Terminology</h3> +<div class="d3" id="dD.1"> <p class="noindent">You <i>must</i> understand these terms, as used in printing.</p> -<h4 id="h8.1.1">8.1.1. Sheet, Page, Leaf</h4> -<div class="d4" id="d8.1.1"> +<h4 id="hD.1.1">D.1.1. Sheet, Page, Leaf</h4> +<div class="d4" id="dD.1.1"> <p class="noindent">A <b>sheet</b> of paper is a single, physical piece of paper, regardless of whether anything is printed on it, or where. Often, paper starts out as a large sheet that will subsequently be cut into smaller sheets. The size doesn't matter. A sheet of paper is, in ordinary understanding, a piece of paper.</p> <p><img class="floatright" src="html-resources/page-leaf.png" width="490" height="155" alt="page, leaf"/> In a finished book, a <b>page</b> is one side of a <b>leaf</b>. Thus, there are always exactly twice as many pages are there are leaves. From the manufacturer's point of view, a 240-page (double-sided printing) book has 120 leaves, regardless of whether or not anything is printed on the pages, or how they are numbered.</p> -</div><!-- end 8.1.1 --> +</div><!-- end D.1.1 --> -<h4 id="h8.1.2">8.1.2. Folio, Spine</h4> -<div class="d4" id="d8.1.2"> +<h4 id="hD.1.2">D.1.2. Folio, Spine</h4> +<div class="d4" id="dD.1.2"> <p class="noindent">Imagine a single sheet of US Letter 8.5"Wx11"H paper. It has two pages, since you can print on both sides (even if one is empty).</p> <p>If you fold that sheet in half across its width, it is still one sheet. But now you have a <b>folio</b>, consisting of two leaves of size 5.5"Wx8.5"H. Each leaf has two pages, so you now have four pages. The fold is at the <b>spine</b>.</p> <p>Caution: The term "folio" has several different meanings, even in the narrow field of book publishing. It may refer to folded paper, as mentioned above. Or it may refer to a particular sheet size of paper ("foolscap"). Or, it may simply refer to the number printed on a page. This last use of "folio" is discussed in the context of headers and footers.</p> -</div><!-- end 8.1.2 --> +</div><!-- end D.1.2 --> -<h4 id="h8.1.3">8.1.3. Signature, Imposition</h4> -<div class="d4" id="d8.1.3"> +<h4 id="hD.1.3">D.1.3. Signature, Imposition</h4> +<div class="d4" id="dD.1.3"> <p class="noindent"><img class="floatright" src="html-resources/signature.png" width="133" height="102" alt="signature"/> When a book is commercially manufactured, folios are nested to form <b>signatures</b>. The number of folios in a signature is typically 6 to 16 (that would be 24 to 64 pages). If you were hand-making a single book at home, you might use only one folio per signature.</p> <p>Now, think about how those pages must be ordered. Suppose a book contains a single signature of 4 folios. The outermost folio is printed with pages 1 and 16 on one side (before folding), and pages 2 and 15 on its other side. The next nested folio has pages 3/14 and 4/13. Nested inside is 5/12 and 6/11. Innermost is 7/10 and 8/9.</p> <p>Re-arranging the page order is part of the <b>imposition</b> process. The process may involve tweaking the position of each page slightly, to account for offset due to paper thickness when the folios are grouped into signatures. If numerous folios are printed on a larger sheet of paper before cutting, the process may involve rotating folios so that they waste less paper.</p> <p>Your home printer software can probably do imposition for a single-folio design (four pages). Anything beyond that is left to professional software. You don't need to do it. The print service does it for you, automatically.</p> -</div><!-- end 8.1.3 --> -</div><!-- end 8.1 --> +</div><!-- end D.1.3 --> +</div><!-- end D.1 --> -<h3 id="h8.2">8.2. Book Manufacture</h3> -<div class="d3" id="d8.2"> +<h3 id="hD.2">D.2. Book Manufacture</h3> +<div class="d3" id="dD.2"> <p class="noindent">In many cases, when you choose how your book will be manufactured, you will have <i>at most</i> these choices: Trim Size, interior b/w or color, paper, binding, cover finish. The <i>novel</i> class does not address the particular requirements of color interiors (grayscale is OK, since it is emulated by black and white). When you choose the Trim Size, other options may be limited.</p> -<h4 id="h8.2.1">8.2.1 Perfect Binding</h4> -<div class="d4" id="d8.2.1"> +<h4 id="hD.2.1">D.2.1. Perfect Binding</h4> +<div class="d4" id="dD.2.1"> <p class="noindent"><img class="floatright" src="html-resources/perfectbinding.png" width="160" height="290" alt="perfect binding"/>Most modern softcover books (and some inexpensive hardcovers) are manufactured using a process named <b>Perfect Binding</b>. <p>In Perfect Binding, the signatures are clamped together, and the folded area is removed by a cutting machine. Then there are no longer any folios, just individual leaves.</p> <p>The leaves are glued together at the spine, possibly with reinforcement. Note that the glue is not merely at the edge of the leaves; it penetrates the paper slightly, for better strength. Finally, the cover is attached.</p> <p>The Perfect Binding method is inexpensive, and is more than adequate for a book that will not receive rough handling. Whether using P.O.D. or a major mass-quantity publisher, most softcover books have been made this way for a long time. Unless you know that your book will be acquired by libraries for addition to their long-term literary collection, there is little reason to have your book manufactured by any other process. The possible exception would be books for small children, which receive rough handling under all circumstances.</p> -</div><!-- end 8.2.1 --> +</div><!-- end D.2.1 --> -<h4 id="h8.2.2">8.2.2 Library Binding</h4> -<div class="d4" id="d8.2.2"> +<h4 id="hD.2.2">D.2.2. Library Binding</h4> +<div class="d4" id="dD.2.2"> <p class="noindent">Libraries rarely purchase Perfect Binding books (regardless of soft or hard cover) due to lack of durability in a library environment. The exceptions are popular books of no lasting literary value, and how-to books for evolving technologies. These may be obtained by libraries in the cheapest softcover version, because such books will be discarded long before they wear out.</p> <p>Unless you are sure that your book will be acquired by numerous libraries for long-term addition to their collections, there is little reason to produce a quality hardcover version. Not all P.O.D. services offer hardcover. If you do need a hardcover version, then be sure to carefully inquire regarding its manufacture, and preferably obtain a copy of someone else's book manufactured that way.</p> <p><img class="floatright" src="html-resources/smythsewn.png" width="177" height="141" alt="perfect binding"/> The best hardcovers, suitable for library use, are made using the <b>Smyth Sewing</b> process. A Smyth Sewn book has signatures of (typically) 12 or 16 folios. But instead of removing the creases after folding, each signature is sewn through its crease using strong thread, onto a durable spine material. The pages will remain attached, even with hard usage. If the spine material is sufficiently flexible, then the book will lie flat when opened.</p> <p>Be sure to ask about spine flexibility. The most flexible methods have a soft, curved spine, and are best suited to thick novels. There is also a variety that has a square (flat) spine, which will not quite lie flat when opened. Square-spine Smyth Sewn books seem to be the fashion for documenting intellectual property.</p> <p>If a major publisher is producing a book that is sure to be ordered by many libraries, due to its author's popularity or maybe a movie tie-in, then it is likely to be released as a Smyth Sewn hardcover. That's because the production method is affordable in quantity. But on a P.O.D. basis, it is a significant expense.</p> <p>Different bindings must have different ISBNs, because they are different products.</p> -</div><!-- end 8.2.2 --> +</div><!-- end D.2.2 --> -<h4 id="h8.2.3">8.2.3 Other Bindings</h4> -<div class="d4" id="d8.2.3"> +<h4 id="hD.2.3">D.2.3. Other Bindings</h4> +<div class="d4" id="dD.2.3"> <p class="noindent">A Perfect Bound softcover cannot be retroactively converted to a Smyth Sewn, Library Bound hardcover. However, it is possible to convert a softcover book to some other kinds of hardcover.</p> <p>In the simplest method, the soft cover is removed, and a hard cover is glued on. The pages may be shaved in size, so that they don't edge beyond the new cover; or the new cover may be slightly over-sized. Part of the soft cover may be pasted onto the hard cover. That won't look the same as original manufacture, but it avoids creating a dust jacket. Such a hard cover book is no more durable than the softcover, no more flexible at the spine, and perhaps no more resistant to losing pages. But it has a harder cover.</p> <p>A more advanced method involves adding strength to the glued spine, by sewing it <em>sideways</em>, before adding the hard cover. This results in a book that is less flexible at the spine, but less likely to lose pages. Sometimes, small (page count) books are made this way, when there are a limited number stored for archival purposes, rather than reading. In other words, it does not concern novels.</p> <p>I only mention this because there are services that will create a hardcover book from an existing softcover copy. That is how they do it. Not very useful to you, except possibly as a personal souvenir. If you want a "real" hardcover book, you want a Smyth Sewn Library Binding with hard cover and curved (flexible) spine. Those must be made directly from PDF, not by re-working an existing book. There are services that will do it (not cheaply), but you must remove the ISBN from wherever it appears, because it does not apply to the book in any binding but its original.</p> -</div><!-- end 8.2.3 --> +</div><!-- end D.2.3 --> -<h4 id="h8.2.4">8.2.4. Paper and Cover Materials</h4> -<div class="d4" id="d8.2.4"> -<p class="noindent">The interior paper may be white or "creme" (off-white). White paper is generally used for nonfiction, and must be used if there are interior color images. Creme paper is generally used for fiction. The idea is that white paper creates an air of authority, whereas creme paper is more comfortable for lengthy reading. I agree. I recently read a novel that was (mis-) printed on white paper, and it was hard to read in a bright area. So, for your novel, choose creme paper.</p> +<h4 id="hD.2.4">D.2.4. Paper and Cover Materials</h4> +<div class="d4" id="dD.2.4"> +<p class="noindent">The interior paper may be white or "creme" (off-white). White paper is generally used for nonfiction, and must be used if there are interior color images (<i>novel</i> does not do interior color). Creme paper is generally used for fiction. The idea is that white paper creates an air of authority, whereas creme paper is more comfortable for lengthy reading. I agree. I recently read a novel that was (mis-) printed on white paper, and it was hard to read in a bright area. So, for your novel, choose creme paper.</p> <p>The cover of a Perfect-Binding softcover book may be produced with a glossy or a matte finish. The fashion is to use glossy for nonfiction, matte for fiction. Again, the idea is authority versus comfort. But you may choose what you wish. "Instant Best-Seller" mass-market paperbacks often have an embossed texture, and maybe even metal foil. In the print-on-demand market, forget it. Don't even think about it.</p> -<p>If you do request a hardcover edition, then it may or may not have a dust jacket (costs extra). The general rule is that books for libraries have a dust jacket, which will be encased in plastic by the library. Books for documentation generally have no dust jacket, with the title and other info embossed in the cover material, for permanance.</p> -</div><!-- end 8.2.4 --> -</div><!-- end 8.2 --> +<p>If you do request a hardcover edition, then it may or may not have a dust jacket (costs extra). The general rule is that books for libraries have a dust jacket, which will be encased in plastic by the library. Books for documentation generally have no dust jacket, with the title and other info embossed in the cover material, for permanance. If the printer offer harcover, but does not even offer you the option of purchasing a dust jacket, then beware: Are you sure that the book is <a href="#hD.2.2">Smyth Sewn</a>?</p> +</div><!-- end D.2.4 --> +</div><!-- end D.2 --> -<h3 id="h8.3">8.3. Interior Structure</h3> -<div class="d3" id="d8.3"> +<h3 id="hD.3">D.3. Interior Structure</h3> +<div class="d3" id="dD.3"> <p class="noindent">This section discusses how a book is designed, in terms of its component pages, where they are placed, and how they are styled. The emphasis is on popular fiction. Some sections that would be required in a dissertation or other nonfiction, are much rarer in popular fiction, or are entirely missing. There is also considerable "wiggle room" in terms of structure, particularly for genres that <i>pretend to be</i> a truthful report of someone else's writing.</p> <p>The advice you are about to receive is <em>not</em> authoritative. It is combined from <i style="cursor:help" title="Chicago Manual of Style">CMoS</i> (which focuses on nonfiction) and on actual practice, as I have seen by looking through numerous professionally-published works of popular fiction at the local public library. There is a certain amount of variation.</p> -<h4 id="h8.3.1">8.3.1. Display Pages vs. Chapter-Like Sections</h4> -<div class="d4" id="d8.3.1"> +<h4 id="hD.3.1">D.3.1. Display Pages vs. Chapter-Like Sections</h4> +<div class="d4" id="dD.3.1"> -<h5 id="h8.3.1.1">8.3.1.1. Display Pages</h5> -<div class="d5" id="d8.3.1.1"> +<h5 id="hD.3.1.1">D.3.1.1. Display Pages</h5> +<div class="d5" id="dD.3.1.1"> <p class="noindent">A <em>Display Page</em> has its own design, and stands by itself. Examples are Half-Title, Title, Copyright, Dedication, Epigraph, Table of Contents, Map, Part Separator, and of course Blank.</p> <p>Half-Title, Title, Dedication, and Part Separators are always single-page recto. A Table of Contents begins recto, but may continue verso. An Epigraph is single-page, and may be recto or verso.</p> <p>Maps are one per page, and may be recto or verso. If you intend to create a large map that spreads verso-recto, be aware that the technology you will be using does not allow continuous image through the spine area. Instead, you must create two separate maps, one per page. There will be the usual inside margins.</p> <p>A Blank page is almost always verso; the only exception is when multiple blanks appear at the very end of the book.</p> <p>Each kind of display page has its own style, and position. What they have in common is that all of them lack a header or footer (and thus, lack a printed page number). Use <code>\thispagestyle{empty}</code>.</p> <p>If a display page extends to a second page (such as Table of Contents), then use <code>\thispagestyle{empty}</code> at its begining and end, to ensure that both pages omit header and footer.</p> -</div><!-- end 8.3.1.1 --> +</div><!-- end D.3.1.1 --> -<h5 id="h8.3.1.2">8.3.1.2. Chapter-Like Sections</h5> -<div class="d5" id="d8.3.1.2"> +<h5 id="hD.3.1.2">D.3.1.2. Chapter-Like Sections</h5> +<div class="d5" id="dD.3.1.2"> <p>A <em>Chapter-Like Section</em> includes things that are styled like a chapter. This includes Foreword, Preface, Introduction, Author's Note, Acknowledgements, Prologue, Chapters, Epilogue, Conclusion, Endnotes.</p> -<p>A Chapter-Like Section begins recto. However, chapters <i>after</i> Chapter One may begin recto or verso. If there is subsequent material (Epilogue, Conclusion, Endnotes, etc.) then the begin-recto rule applies.</p> +<p>Almost all Chapter-Like Sections begins recto. However, chapters <i>after</i> Chapter One may begin recto or verso. If there is subsequent material (Epilogue, Conclusion, Endnotes, etc.) then the begin-recto rule applies.</p> <p>The first page of a Chapter-Like Section section has no header, but <i>may</i> have a footer with page number. See the available choices for <code><a href="#h4.3.5.1">\thispagestyle</a></code>.</p> <p>Remaining pages in the section will have such header/footer style as pertains to ordinary chapters in the book. Exception: If a Chapter-Like Section in front matter is only two pages long, then you may optionally omit the header, or footer, on both pages. Then, use <code>\thispagestyle</code> at the end of the section, with choice that matches its beginning.</p> <p>When a Chapter-Like Section appears in front matter, its page headers (if any) do <em>not</em> show the author and title of the book, the way they would appear in main matter. Instead, they show the name of the section (such as Author's Note) both verso and recto. Commands <code><a href="#h4.3.4.6">\SetVersoHeadText</a></code> and <code><a href="#h4.3.4.6">\SetRectoheadText</a></code> are your friends, as they permit you to dynamically change header text as you move through the book.</p> -</div><!-- end 8.3.1.2 --> -</div><!-- end 8.3.1 --> +</div><!-- end D.3.1.2 --> +</div><!-- end D.3.1 --> -<h4 id="h8.3.2">8.3.2. Front Matter</h4> -<div class="d4" id="8.3F.2"> +<h4 id="hD.3.2">D.3.2. Front Matter</h4> +<div class="d4" id="D.3.2"> <p class="noindent">The <code><b>\frontmatter</b></code> command must be written immediately after <code>\begin{document}</code>. This sets page numbering to lowercase roman, and performs some other actions.</p> <p>A book's front matter is <em>about the book</em>. It is not part of the story. The only mandatory front matter is the Title Page and its verso, the Copyright Page. On a practical basis, six pages of front matter are the minimum, and this minimum is often used, even by major publishers. See <a href="#hB">Appendix B</a> for how to construct basic six-page front matter.</p> -<h5 id="h8.3.2.1">8.3.2.1. Half-Title, page i</h5> -<div class="d5" id="d8.3.2.1"> +<h5 id="hD.3.2.1">D.3.2.1. Half-Title, page i</h5> +<div class="d5" id="dD.3.2.1"> <p class="noindent"><p>Some book manufacturers (particulary in hardcover) place a blank or decorative <em>flyleaf</em> before any part of the book interior. A flyleaf (if present) is added at the bookbinding factory, and is not part of your book's interior PDF file.</p> -<p>Your book's first interior recto page is a Half-Title. It is a <a href="#h8.3.1.1">Display Page</a>. Historically it was a protective page for the full title page, in the era when a printed interior was not immediately bound. That tradition lives on.</p> +<p>Your book's first interior recto page is a Half-Title. It is a <a href="#hD.3.1.1">Display Page</a>. Historically it was a protective page for the full title page, in the era when a printed interior was not immediately bound. That tradition lives on.</p> <p>The Half-Title contains nothing but the book's title. No subtitle. It should be styled in the same manner as is used on the full Title Page, but typically smaller. You can place the title anywhere it looks good. It is almost never placed upper left.</p> -</div><!-- end 8.3.2.1 --> +</div><!-- end D.3.2.1 --> -<h5 id="h8.3.2.2">8.3.2.2. Blank, page ii</h5> -<div class="d5" id="d8.3.2.2"> -<p class="noindent">Verso page ii is a <a href="#h8.3.1.1">Display Page</a>. In most cases, it will be blank. This is achieved by using <code>\cleartorecto</code> at the end of the Half-Title page. But if you wish to manually create a blank page, verso or recto:</p> +<h5 id="hD.3.2.2">D.3.2.2. Blank, page ii</h5> +<div class="d5" id="dD.3.2.2"> +<p class="noindent">Verso page ii is a <a href="#hD.3.1.1">Display Page</a>. In most cases, it will be blank. This is achieved by using <code>\cleartorecto</code> at the end of the Half-Title page. But if you wish to manually create a blank page, verso or recto:</p> <p class="code"><code> \clearpage\thispagestyle{empty}\null\clearpage</code></p> <p>Instead of blank, prolific authors may show a list of their books. However, even if you wrote other books, many print services won't allow you to list them, unless the same service exclusively carries all of them.</p> -<p>Major publishers may provide an advertisement for the related movie. In the good old days (looong ago) an expensive book might have a high-quality illustration, known as Frontispiece. Unless you truly know what you are doing, avoid these, and just use a blank page.</p> -</div><!-- end 8.3.2.2 --> +<p>Major publishers may provide an advertisement for the related movie. In the good old days (looong ago) an expensive book might have a high-quality illustration, known as <b>Frontispiece</b>. Unless you truly know what you are doing, avoid these, and just use a blank page.</p> +<p>At the very fancy end of book design, or often for children's picture books, the full title uses two pages, beginning here and ending on the usual title page iii. You can do that, but <i>novel</i> does not provide for continuing an image (or text) across the spine. Each page is independent, and there will be the usual inside margins. So, a two-page title is not recommended.</p> +</div><!-- end D.3.2.2 --> -<h5 id="h8.3.2.3">8.3.2.3. Title Page, iii</h5> -<div class="d5" id="d8.3.2.3"> -<p class="noindent">The Title Page is a recto <a href="#h8.3.1.1">Display Page</a> It shows the title, subtitle (if any), and author. These elements are often very decorative, and may involve imagery. They must exactly match the information you provided when you obtained the book's ISBN. Exception: Some services allow the author's name to use initials.</p> +<h5 id="hD.3.2.3">D.3.2.3. Title Page, iii</h5> +<div class="d5" id="dD.3.2.3"> +<p class="noindent">The Title Page is a recto <a href="#hD.3.1.1">display page</a>. It shows the title, subtitle (if any), and author. These elements are often very decorative, and may involve imagery. They must exactly match the information you provided when you obtained the book's ISBN. Exception: Some services allow the author's name to use initials.</p> <p>If there is a publisher's imprint, it goes at the base. This is achieved by using <code>\vfill</code> just above it.</p> <p>Remember that a self-publishing service is not the publisher; <em>you are</em>. That's why it is called self-publishing. If you don't have anything else to put there, and don't like leaving the base of the page empty, you might use "Independently Published in Your City, YourState" or something similar.</p> <p>• Note: Others have written (and I agree) that the surest sign that a book was written by an amateur, is when the Title Page simply uses the book's main text font (perhaps bold and larger). That has "term paper" written all over it. Instead, be creative.</p> -</div><!-- end 8.3.2.3 --> +</div><!-- end D.3.2.3 --> -<h5 id="h8.3.2.4">8.3.2.4. Copyright Page, iv</h5> -<div class="d5" id="8.3.2.4"> -<p class="noindent">The Copyright Page is a verso <a href="#h8.3.1.1">Display Page</a>. It is primarily legalistic in nature, providing essential details about the book, as an item in commerce.</p> +<h5 id="hD.3.2.4">D.3.2.4. Copyright Page, iv</h5> +<div class="d5" id="D.3.2.4"> +<p class="noindent">The Copyright Page is a verso <a href="#hD.3.1.1">display page</a>. It is primarily legalistic in nature, providing essential details about the book, as an item in commerce.</p> <p>Some nations require specific information to appear on a Copyright Page. That is your responsibility to know, and is beyond the scope of this documentation.</p> <p>At least in the U.S.A., the nation where the book is printed must be indicated, either on the Copyright Page or some other allowed location (such as the final verso). Many print-on-demand services use multiple printers, which may be in various nations, depending on who purchases your book. With the services I have used, this is solved by omitting "Printed in the United States of America" on the Copyright page, because it may not be true. At the printing factory, the necessary information is added by them, as a Colophon on the final verso page. This is one reason why that final verso page must be blank (in your PDF). Ask your P.O.D. service.</p> <p>A Copyright Page is in ordinary text, perhaps using minimal styling such as italics or small caps. In all cases, its overall page style must differ from the page style of main text. Almost always, the content of the Copyright Page is forced downward, so that excess white space is on top, and the final line appears at the base of the textblock. This is achieved using <code>\null\vfill</code> at the beginning of the page.</p> <p>The <i>legalese</i> environment prevents hyphenation, aligns paragraphs ragged-right (instead of justified), and omits paragraph indents. This style is widely used for a Copyright Page. Be sure to use <code>\null</code>, or a similar vertical spacing command, to separate paragraphs. If you nest the <code>center</code> environment within <i>legalese</i>, it will over-ride the ragged-right alignment.</p> <p>The <i>adjustwidth</i> environment can be used to set the width of the lines at less than the full width. This is especially helpful if you have little to say, and choose to center the content.</p> -<p>Always review where lines break, if necessary insrting manual line breaks, to ensure that the meaning is sensible.</p> +<p>Always review where lines break, if necessary inserting manual line breaks, to ensure that the meaning is sensible.</p> <p>If you use them, certain words or phrases such as <span style="text-transform:lowercase; font-variant:small-caps">FIRST EDITION</span> are traditionally set in all small caps. Use <code>\allsmcp{FIRST EDITION}</code>.</p> <p>Numbers, such as date and ISBN, may be Old Style or Lining. The text default is probably Old Style. If you prefer Lining (looks more legalistic), then use <code>\lnum{<em>numbers</em>}</code>. Anything other than digits (and related characters) will remain unchanged by the <code>\lnum</code> command. <p>The Copyright Symbol © is pasted from a Unicode character map. Avoid using TeX code.</p> -<p>I have never seen a Copyright Page extend to a second page. Never. If you have that much to say, it may be that some of the information may be moved to an Author's Note or Acknowledgements section. Or, if necessary, you may use the <i>parascale</i> environment to slightly shrink the text and baseline skip.</p> +<p>I have never seen a Copyright Page extend to a second page. Never. If you have that much to say, it may be that some of the information may be moved to an Author's Note or Acknowledgements section. Or, if necessary, you may use the <a href="#h6.1.3">parascale</a> environment to slightly shrink the text and baseline skip.</p> <p>If you have a Cataloging-in-Publication data block (probably you do not), then be aware that its content may be provided to you in MS Word format. Pay attention to indents, as they are part of how the data is presented. Use <code>\forceindent</code> or <code>\backindent</code> to over-ride the normal indentation (or lack thereof). Use the <i>adjustwidth</i> environment for block indents, but be aware that nesting one <i>adjustwidth</i> inside another may cause problems. It is better to end one <i>adjustwidth</i> before beginning a new one.</p> <p>Also, CIP data uses emdash in places. MS Word may represent an emdash with <i>two</i> hyphens, whereas TeX uses <i>three</i> hyphens. Better to simply paste the emdash from a Unicode character map, which will appear the same in both MS Word and TeX.</p> -<p>If you need straight apostrophe or straight quotes, use <code>\straightquote</code> and <code>\straightdblquote</code> to insert a character that won't be converted to curly. These commands gobble the following space, in usual TeX fashion.</p> -</div><!-- end 8.3.2.4 --> +<p>If you need straight apostrophe or straight quotes, use <code>\straightquote{}</code> and <code>\straightdblquote{}</code> to insert a character that won't be converted to curly.</p> +</div><!-- end D.3.2.4 --> -<h5 id="h8.3.2.5">8.3.2.5. Dedication</h5> -<div class="d5" id="d8.3.2.5"> -<p class="noindent">If you use a Dedication, it is a recto <a href="#h8.3.1.1">Display Page</a>, and must be placed immediately facing the Copyright Page.</p> +<h5 id="hD.3.2.5">D.3.2.5. Dedication</h5> +<div class="d5" id="dD.3.2.5"> +<p class="noindent">If you use a Dedication, it is a recto <a href="#hD.3.1.1">display page</a>, and must be placed immediately facing the Copyright Page.</p> <p>A Dedication is not required. But sadly, nowadays many authors write a frivolous Dedication, which detracts from the book. If you feel that you need a Dedication, why not put it on your web site? Then you can always edit or remove it, if the subject of your affection runs off with someone else (or, you do). Keep it simple.</p> <p>A Dedication is centered. If it is more than a few words, use the <i>adjustwidth</i> environment to keep it bounded, as you would for an Epigraph.</p> -</div><!-- end 8.3.2.5 --> +</div><!-- end D.3.2.5 --> -<h5 id="h8.3.2.6">8.3.2.6. Epigraph</h5> -<div class="d5" id="d8.3.2.6"> -<p class="noindent">If you use an Epigraph, it is a <a href="#h8.3.1.1">Display Page</a>, which may be placed verso or recto.</p> +<h5 id="hD.3.2.6">D.3.2.6. Epigraph</h5> +<div class="d5" id="dD.3.2.6"> +<p class="noindent">If you use an Epigraph, it is a <a href="#hD.3.1.1">display page</a>, which may be placed verso or recto.</p> <p>An Epigraph is optional. It is a short quotation, traditionally from a work by someone else. Its purpose is to set the tone of your own book, or shamelessly imply that your own talents resemble that of the person quoted. However, even though it is short, do not place copyrighted material there, unless you have the necessary legal permission. You probably don't, so forget about quoting a famous contemporary author or performer. Quotations from the Bible, Shakespeare, and Nineteenth-Century authors are popular; but even then, a more recent translation may be still under copyright.</p> <p>Alternatively, you can quote from your own book, or make up something entirely new. One famous Epigraph is used in J.R.R. Tolkien's <i>Lord of the Rings</i> trilogy, in which each book uses the long form of the Ring's incantation as its Epigraph.</p> <p>One possible use of an Epigraph is on recto page v, in books that lack a Dedication, a Table of Contents, or other important front matter beyond the Copyright Page. Alternatively, if a book has both Dedication and Table of Contents, an Epigraph may be placed on the otherwise-blank verso page vi between them. Or, an Epigraph may appear in some later convenient place in front matter.</p> <p>In general, an Epigraph is set as a centered block, not occupying the full page width. The <i>adjustwidth</i> environment serves this purpose. You will have to manually adjust the widths at left and right, for best visual effect.</p> <p>The source of the quotation should be right-justified within the block, and may be preceded by an emdash. Typically, names of people are not italicized, but titles of books are. It is not necessary to give elaborate details; this is not a bibliography.<p> +<p>It is not necessary to load the <i>epigraph</i> package. Simply construct your own style of epigraph using other methods. But if you do load <i>epigraph</i>: Only use <code>\epigraph</code>, or the <code>epigraphs</code> environment, within the ChapterStart environment, or on a display page. Commands <code>\epigraphhead</code>, <code>\dropchapter</code>, <code>\undocrop</code> do not work in <i>novel</i>. The <code>\cleartoevenpage[<i>option</i>]</code> command does work. Ignore the material regarding epigraphs on part pages or in bibliographies.</p> -<h6 id="h8.3.2.6.1"><span class="n"></span>Example Epigraph: Real Quotation</h6> -<div class="d6" id="u8.3.2.6.1"> +<h6 id="hD.3.2.6.1"><span class="n"></span>D.3.2.6.1. Example Epigraph: Real Quotation</h6> +<div class="d6" id="uD.3.2.6.1"> <p class="noindent">This might be used for an action adventure:</p> <p class="code"><img class="floatright" src="html-resources/shakepi.png" width="131" height="208" alt="sample epigraph: Shakespeare"/> <code><small> \clearpage<br/> \thispagestyle{empty}<br/> -\vspace*{10\nbs}<br/> +\vspace*{10<span style="cursor:help" title="normal baseline skip">\nbs</span>}<br/> \begin{adjustwidth}{7em}{7em}<br/> Cowards die many times before their deaths;\\<br/> The valiant never taste of death but once.\par<br/> @@ -2426,16 +2552,16 @@ The valiant never taste of death but once.\par<br/> \clearpage </small></code></p> <div style="clear:both"></div> -</div><!-- end 8.3.2.6.1 --> +</div><!-- end D.3.2.6.1 --> -<h6 id="h8.3.2.6.2"><span class="n"></span>Example Epigraph: Imaginary Quotation</h6> -<div class="d6" id="u8.3.2.6.2"> +<h6 id="hD.3.2.6.2"><span class="n"></span>D.3.2.6.2. Example Epigraph: Imaginary Quotation</h6> +<div class="d6" id="uD.3.2.6.2"> <p class="noindent">This might be used for contemporary fiction with a humorous style. The fictional speaker will appear as a character in the book:</p> <p class="code"><img class="floatright" src="html-resources/dorfmcnorf.png" width="131" height="208" alt="sample epigraph: imaginary"/> <code><small> \clearpage<br/> \thispagestyle{empty}<br/> -\vspace*{10\nbs}<br/> +\vspace*{10<span style="cursor:help" title="normal baseline skip">\nbs</span>}<br/> \begin{adjustwidth}{7em}{7em}<br/> Let me tell you, there's nothing more exciting than the brouhaha at Mickey's Pub each Saturday night in April.\par<br/> \stake\hfill---Dorf McNorf\par<br/> @@ -2443,21 +2569,21 @@ Let me tell you, there's nothing more exciting than the brouhaha at Mickey's Pub \clearpage </small></code></p> <div style="clear:both"></div> -</div><!-- end 8.3.2.6.2 --> -</div><!-- end 8.3.2.6 --> +</div><!-- end D.3.2.6.2 --> +</div><!-- end D.3.2.6 --> -<h5 id="h8.3.2.7">8.3.2.7. Table of Contents</h5> -<div class="d5" id="d8.3.2.7"> -<p class="noindent">If you use a Table of Contents, it is a <a href="#h8.3.1.1">Display Page</a>, beginning recto. If a second page is needed, add <code>\thispagestyle{empty}</code> after the table completes, but before you clear that page.</p> +<h5 id="hD.3.2.7">D.3.2.7. Table of Contents</h5> +<div class="d5" id="dD.3.2.7"> +<p class="noindent">If you use a Table of Contents, it is a <a href="#hD.3.1.1">display page</a>, beginning recto. If a second page is needed, add <code>\thispagestyle{empty}</code> after the table completes, but before you clear that page.</p> <p>Most fiction does not have, and does not need, a Table of Contents. It is more useful when the story consists of discrete episodes with distinctive names, not just numbers. Or, if the book is a collection of short stories, a table of contents is suggested. If your book is a critical edition, or has sections by different authors, then a Table of Contents is mandatory.</p> -<p>Avoid any of the table environments that come with TeX or its packages. These do not provide the most attractive presentation for fiction, without a lot of work on your part.</p> +<p>Avoid any of the table environments that come with TeX or its packages. These do not provide the most attractive presentation for fiction, without a lot of work on your part. But if you wish the use them, do it using <a href="#h2.2">sandbox</a> mode.</p> <p>A Table of Contents has no header or footer, and no printed page number. Use <code>\thispagestyle{empty}</code>. If it continues to a second page, add <code>\thispagestyle{empty}</code> at the end, if you don't know where the page breaks.</p> <p>Anything preceding a Table of Contents is not listed in the table. Neither is the table itself. An Epigraph is normally not listed, even if it follows the table.</p> <p>You may or may not list maps or other illustrations in the table. Fiction rarely has more than a map or two, easily located in front matter by the reader, so there's no need to mention them. Use your judgement. That's different from the practice in nonfiction, especially academic works, where the illustrations convey factual data rather than artistry.</p> <p>A basic Table of Contents uses the <i>center</i> environment, so that the Table's title and each entry appear centered on the page, without any fancy layout. So simple. So effective. However, if you prefer a more rectangular table, <i>novel</i> has commands for this purpose.</p> -<h6 id="h8.3.2.7.1"><span class="n"></span>8.3.2.7.1. The <i>toc</i> Environment</h6> -<div class="d6" id="u8.3.2.7.1"> +<h6 id="hD.3.2.7.1"><span class="n"></span>D.3.2.7.1. The <i>toc</i> Environment</h6> +<div class="d6" id="uD.3.2.7.1"> <p class="noindent">Unlike some other TeX document classes, <i>novel</i> will not automatically build a Table of Contents. Also, LaTeX commands related to tables are generally disabled; adding other packages does not help (and may hurt).</p> <p>You may create a Table of Contents in your own style, or use the <i>toc</i> environment for <i>novel's</i> own style. The choice is yours.</p> <p class="code"><code>\begin{toc}[<em>extra entry separation</em>]{<em>extra margins</em>} <em>...</em> \end{toc}</code></p> @@ -2475,16 +2601,16 @@ Let me tell you, there's nothing more exciting than the brouhaha at Mickey's Pub <p>The <i>description</i> is usually the chapter title. If it cannot easily fit on one line, then use an additional <code>\tocitem</code>, because the text cannot be wrapped. The following example shows how this can be done.</p> <p>Without the asterisk, <code>\tocitem</code> fills the area between the description and the page number with empty space. The more popular, starred <code>\tocitem*</code> command fills with a dotted line, and is very attractive.</p> <p>You may use ordinary style commands, such as <code>\textit</code>, in the entries.</p> -</div><!-- end 8.3.2.7.1 --> +</div><!-- end D.3.2.7.1 --> -<h6 id="h8.3.2.7.2"><span class="n"></span>8.3.2.7.2. Example Table of Contents</h6> -<div class="d6" id="u8.3.2.7.2"> +<h6 id="hD.3.2.7.2"><span class="n"></span>D.3.2.7.2. Example Table of Contents</h6> +<div class="d6" id="uD.3.2.7.2"> <p class="noindent">This content of this table is a spoiler, in that you can figure out where the story is going. Sometimes that's desirable, but usually not:</p> <p class="code" style="text-indent:0px; font-size:small"><img class="floatright" src="html-resources/toc.png" width="264" height="408" alt="toc example"/> <code> \cleartorecto % because ToC must start recto<br/> \thispagestyle{empty}<br/> -\vspace*{4\nbs}<br/> +\vspace*{4<span style="cursor:help" title="normal baseline skip">\nbs</span>}<br/> \begin{toc}[0.25]{5.5em}<br/> {\centering\charscale[1.25]{Contents}\par}<br/> \null\null<br/> @@ -2507,38 +2633,38 @@ Let me tell you, there's nothing more exciting than the brouhaha at Mickey's Pub </code> </p> <div style="clear:both"></div> -</div><!-- end 8.3.2.7.2 --> -</div><!-- end 8.3.2.7 --> +</div><!-- end D.3.2.7.2 --> +</div><!-- end D.3.2.7 --> -<h5 id="h8.3.2.8">8.3.2.8. Foreword, Preface, Introduction</h5> -<div class="d5" id="d8.3.2.8"> -<p class="noindent">A Foreword, Preface, or Introduction is a <a href="#h8.3.1.2">Chapter-Like Section</a>, beginning recto.</p> +<h5 id="hD.3.2.8">D.3.2.8. Foreword, Preface, Introduction</h5> +<div class="d5" id="dD.3.2.8"> +<p class="noindent">A Foreword, Preface, or Introduction is a <a href="#hD.3.1.2">Chapter-Like Section</a>, beginning recto.</p> <p>A <i>Foreword</i> is written by someone other than the author. It is essentially a marketing tool, by which the publisher addes credence to the work, or mere publicity, by having an expert or celebrity write something in front matter. Introductions are common in nonfiction, but extremely rare (I have never seen one) in fiction, except for critical editions of older works (where the new, original material is essentially nonfiction).</p> -<p>A <i>Preface</i> is written by the author, speaking as author, and may include a general discussion of this and that about how the author came to write the book. It may also include acknowledgements, if they are not in a separate section. A Preface is rather formal, and very rare in popular fiction. If you wish to address the reader, the less-formal <i>Author's Note</i> is better for your purpose.</p> +<p>A <i>Preface</i> is written by the author, speaking as author, and may include a general discussion of how the author came to write the book. It may also include acknowledgements, if they are not in a separate section. A Preface is rather formal, and very rare in popular fiction. If you wish to address the reader, the less-formal <i>Author's Note</i> is better for your purpose.</p> <p>An <i>Introduction</i>, when used in front matter, is written by the author. Its purpose is to provide sufficient background for understanding the material that is to follow. Thus, an Introduction is sometimes seen in the front matter of historical or technical nonfiction.</p> <p>An Introduction in front matter is inappropriate for popular fiction, but I suppose it <i>might</i> be used for the purpose of world-building in that genre, where the main story assumes that the reader is familiar with the setting. In such a case, the setup is described by the author (as author), but <i>not</i> by a character in the story. Also see <i>Author's Note</i>.</p> -<p>A Foreword, Preface, or Introduction is a "chapter-like" section. That is, its style is the same as if it were a chapter, in terms of how it is titled, and the use of page header/footer. But there is a significant exception: If your book design uses header text, you do <i>not</i> write the author and title in headers. Instead, you use <code>\SetVersoHeadText</code> and <code>\SetRectoHeadText</code> to write Foreword, Preface, or Introduction in both. See the example <a href="#h8.3.2.10">Author's Note</a>, below, for how this is done.</p> +<p>A Foreword, Preface, or Introduction is a "chapter-like" section. That is, its style is the same as if it were a chapter, in terms of how it is titled, and the use of page header/footer. But there is a significant exception: If your book design uses header text, you do <i>not</i> write the author and title in headers. Instead, you use <code>\SetVersoHeadText</code> and <code>\SetRectoHeadText</code> to write Foreword, Preface, or Introduction in both. See the example <a href="#hD.3.2.10">Author's Note</a>, below, for how this is done.</p> <p>A Foreword or Preface is often signed at the end by its writer, with place and date. A lengthy Foreword might instead place its writer's name and credentials under the Foreword title.</p> -</div><!-- end 8.3.2.8 --> +</div><!-- end D.3.2.8 --> -<h5 id="h8.3.2.9">8.3.2.9. Acknowledgements</h5> -<div class="d5" id="d8.3.2.9"> -<p class="noindent">If you use Acknowledgements, it begins recto. If very short, style it as a <a href="#h8.3.1.1">Display Page</a>, possibly even using limited text width (as with an <a href="#h8.3.2.6">Epigraph</a>, above). Otherwise, it is a <a href="#h8.3.1.2">Chapter-Like Section</a>.</p> +<h5 id="hD.3.2.9">D.3.2.9. Acknowledgements</h5> +<div class="d5" id="dD.3.2.9"> +<p class="noindent">If you use Acknowledgements, it begins recto. If very short, style it as a <a href="#hD.3.1.1">Display Page</a>, possibly even using limited text width (as with an <a href="#hD.3.2.6">Epigraph</a>, above). Otherwise, it is a <a href="#hD.3.1.2">Chapter-Like Section</a>.</p> <p>Most fiction doesn't need acknowledgements. Don't write Acknowledgements just because you can. Acknowledgements are for those who provided real assistance. If you want to provide a shout-out to your friends for their encouragement, consider doing it on a web page.</p> <p>If you have a Preface or Author's Note, you can often include acknowledgements there (if you wish), rather than in separate Acknowledgements.</p> -<p>If styled like a chapter, in a book that has page headers, the verso and recto head text is set to Acknowledgements, not the author and title. See the Author's Note, below, for how this is done.</p> -</div><!-- end 8.3.2.9 --> +<p>If styled like a chapter, in a book that has page headers, the verso and recto head text is set to Acknowledgements, not the author and title. Then, the opening page of Acknowledgements has no header (as with a chapter), but following pages have the header. See the Author's Note, below, for how this is done.</p> +</div><!-- end D.3.2.9 --> -<h5 id="h8.3.2.10">8.3.2.10. Author's Note</h5> -<div class="d5" id="d8.3.2.10"> -<p class="noindent">If you use an Author's Note, it begins recto. If very short, style it as a <a href="#h8.3.1.1">Display Page</a>, possibly even using limited text width (as with an Epigraph, above). Otherwise, it is a <a href="#h8.3.1.2">Chapter-Like Section</a>.</p> +<h5 id="hD.3.2.10">D.3.2.10. Author's Note</h5> +<div class="d5" id="dD.3.2.10"> +<p class="noindent">If you use an Author's Note, it begins recto. If very short, style it as a <a href="#hD.3.1.1">Display Page</a>, possibly even using limited text width (as with an Epigraph, above). Otherwise, it is a <a href="#hD.3.1.2">Chapter-Like Section</a>.</p> <p>An Author's Note directly addresses the reader, from the author. It is often signed with name, place, and date at the end. There is no particular content. Some authors point out that a particular element of the story, which seems fictional, is actually based on a real historical event. Others babble their life stories, and how they came to write the book. Others use it as a catch-all, including acknowledgements and whatever else fits.</p> <p>There is some wiggle room regarding whether the Author's note is fact or fancy. For example, in the "lost manuscript" genre, authors may (fictionally) tell how the manuscript came into their hands; but a lengthy tale of discovery is better placed in main matter, as a fictional Introduction.</p> <p>If an Author's Note is two pages long, then on the second page use the same page style that you would ordinary use to start a chapter. Normally, this is <code>\thispagestyle{footer}</code>.</p> <p>If an Author's Note is three or more pages long, then a header is permitted (if the book's main style has header). You may allow author and title to appear in header text, but it is better to indicate that this is <em>not</em> the main story, using <code>\SetVersoHeadText{Author's Note}</code> and <code>\SetRectoHeadText{Author's Note}</code>.</p> -<h6 id="h8.3.2.10.1"><span class="n"></span>Example Author's Note</h6> -<div class="d6" id="u8.3.2.10.1"> +<h6 id="hD.3.2.10.1"><span class="n"></span>D.3.2.10.1. Example Author's Note</h6> +<div class="d6" id="uD.3.2.10.1"> <p class="noindent">In a book of historical fiction, based on the author's own travels and expertise:</p> <p class="code"><code><small> \cleartorecto % begins recto<br/> @@ -2561,26 +2687,26 @@ Finally, I would like to thank... \lipsum[1]<br/> </small></code></p> <p class="centerimg"><img src="html-resources/authorsnote.png" width="813" height="415" alt="sample author's note in frontmatter"/></p> <div style="clear:both"></div> -</div><!-- end 8.3.2.10.1 --> -</div><!-- end 8.3.2.10 --> +</div><!-- end D.3.2.10.1 --> +</div><!-- end D.3.2.10 --> -<h5 id="h8.3.2.11">8.2.1.11. Map</h5> -<div class="d5" id="d8.3.2.11"> -<p class="noindent">A Map is a <a href="#h8.3.1.1">Display Page</a>, which may be verso or recto. You may use more than one Map, but be aware that in the printing technology available to you via <i>novel</i> class, a single Map cannot be continued as a spread across the spine; you must break it into two independent Maps, allowing for the inside margins.</p> +<h5 id="hD.3.2.11">D.2.1.11. Map</h5> +<div class="d5" id="dD.3.2.11"> +<p class="noindent">A Map is a <a href="#hD.3.1.1">Display Page</a>, which may be verso or recto. You may use more than one Map, but be aware that in the printing technology available to you via <i>novel</i> class, a single Map cannot be continued as a spread across the spine; you must break it into two independent Maps, allowing for the inside margins.</p> <p>Many works of fiction have a map or other diagram. It might be the map of a real or fictional geographic area. It might be the map of a crime scene. It might be an inheritance chart. Even though fictional, it is usually placed in front matter, presumably because a map does not actually tell any part of the story.</p> <p>I have seen maps placed very early, or very late, in front matter. The general rule seems to be, "put it where it fits." However, do not place a map where some other item <i>must</i> be located, and do not place a map on the final verso that faces the beginning of main matter, due to its visual distraction.</p> <p>A single map, or maybe two, need not be mentioned in a table of contents or illustrations. If you have a lot of them strewn around the book, then they should be listed in such a table; but this is very rare in fiction.</p> <p>As with all images, a map must be placed using <i>novel's</i> own <a href="#h7">image placement methods</a>.</p> -<h6 id="h8.3.2.11.1"><span class="n"></span>Example Map</h6> -<div class="d6" id="u8.3.2.11.1"> +<h6 id="hD.3.2.11.1"><span class="n"></span>D.3.2.11.1. Example Map</h6> +<div class="d6" id="uD.3.2.11.1"> <p class="noindent">Typically, there will be nothing but the single image on a Map page, with all text self-contained. But in this example, the image only occupies part of the page. It is followed by ordinary text for the numbered locations: <p class="code"><img class="floatright" src="html-resources/map.png" width="178" height="274" alt="sample map"/> <code><small> \clearpage<br/> \thispagestyle{empty}<br/> -\BlockImage{areamap.png} <span class="ap">% 600dpi b/w</span><br/> -\vspace{2\nbs}<br/> +\FloatImage{areamap.png} <span class="ap">% b/w</span><br/> +\vspace{2<span style="cursor:help" title="normal baseline skip">\nbs</span>}<br/> \begin{center}<br/> 1. Alice Springs\\<br/> 2. Tuktoyaktuk\\<br/> @@ -2595,107 +2721,103 @@ Finally, I would like to thank... \lipsum[1]<br/> \clearpage </small></code></p> <div style="clear:both"></div> -</div><!-- end 8.3.2.11.1 --> -</div><!-- end 8.3.2.11 --> +</div><!-- end D.3.2.11.1 --> +</div><!-- end D.3.2.11 --> -<h5 id="h8.3.2.12">8.3.2.12. Second Half-Title</h5> -<div class="d5" id="d8.3.2.12"> +<h5 id="hD.3.2.12">D.3.2.12. Second Half-Title</h5> +<div class="d5" id="dD.3.2.12"> <p class="noindent">In many cases, front matter has very little content. After the Copyright Page, there is nothing else to say. But it is visually bad practice to go directly from verso Copyright Page to the start of the story on recto page 1. This can be solved by repeating the Half-Title as recto page <i>v</i>, with blank verso page <i>vi</i>. I've seen it with major writers and major publishers.</p> <p>You can do the same thing with longer front matter, if it would otherwise end on a verso page.</p> <p>When there is a lot of front matter (no particular amount), it is customary to use a second Half-Title to mark the boundary where front matter finally ends.</p> <p><i style="cursor:help" title="Chicago Manual of Style">CMoS</i> recommends that a second Half-Title be the first page of main matter. Thus, it would be page 1, with the actual story beginning on page 3. But it acknowledges that a <i>common practice</i> is for a second Half-Title and its verso to remain part of front matter, so that main matter begins with the story on page 1. Although I have seen a few books that follow the <i style="cursor:help" title="Chicago Manual of Style">CMoS</i> recommendation, it appears that the great majority of them follow the <i>common practice</i>.</p> -<p>If your book has <a href="#h8.3.3.2">Part Separators</a> in main matter, then you can do without a second Half-Title.</p> -</div><!-- end 8.3.2.12 --> +<p>If your book has <a href="#hD.3.3.2">Part Separators</a> in main matter, then you can do without a second Half-Title.</p> +</div><!-- end D.3.2.12 --> -<h5 id="h8.3.2.13">8.3.2.13. Final Page of Front Matter</h5> -<div class="d5" id="d8.3.2.13"> +<h5 id="hD.3.2.13">D.3.2.13. Final Page of Front Matter</h5> +<div class="d5" id="dD.3.2.13"> <p class="noindent">The final page of front matter is always verso. It is almost always blank. The easiest way to insert a blank page is to write <code>\cleartorecto</code> at the end of the preceding recto page.</p> <p>Why is the final page of front matter almost always blank? It is because it faces the opening page of the main story, and you don't want to show anything that detracts from the scene or mood. But there are exceptions. For example, an Epigraph might usefully contribute to the setting. Or, in the case of an old-style English murder mystery (where you already know that the murderer did it with arsenic to inherit the family estate), a map of the estate, or a family tree, would not detract from the setting. The choice is yours.</p> -</div><!-- end 8.3.2.13 --> -</div><!-- end 8.3.2 --> +</div><!-- end D.3.2.13 --> +</div><!-- end D.3.2 --> -<h4 id="h8.3.3">8.3.3. Main Matter</h4> -<div class="d4" id="d8.3.3"> +<h4 id="hD.3.3">D.3.3. Main Matter</h4> +<div class="d4" id="dD.3.3"> <p class="noindent">Main matter begins with the <code>\mainmatter</code> command. It forces its page to recto, changes the page numbering to Arabic, and sets the count to 1.</p> <p>Main matter is <i>the story itself</i>. In some cases, this also includes a fictional setup (Introduction or Prologue) that leads to the longer story line. It also includes material in the aftermath of the story, such as Epilogue, Conclusion, and end notes.</p> -<h5 id="h8.3.3.1">8.3.3.1. Half-Title in Main Matter ?</h5> -<div class="d5" id="d8.3.3.1"> +<h5 id="hD.3.3.1">D.3.3.1. Half-Title in Main Matter ?</h5> +<div class="d5" id="dD.3.3.1"> <p class="noindent">The <i style="cursor:help" title="Chicago Manual of Style">CMoS</i> prefers that a second Half-Title page (if used) mark the beginning of main matter. Thus, it would be page 1 (number not printed). Then, the story begins on page 3.</p> <p>However, <i style="cursor:help" title="Chicago Manual of Style">CMoS</i> also notes that this is not the regular practice, especially with fiction. In fact, among the many popular fiction books I have inspected, when a second Half-Title is used, it is <i>almost</i> always the last recto page of front matter, followed by a blank verso; then main matter begins with page 1 of the story.</p> <p>The choice is yours. I suggest agreeing with regular practice: If you use a second Half-Title, keep it in front matter.</p> -</div><!-- end 8.3.3.1 --> +</div><!-- end D.3.3.1 --> -<h5 id="h8.3.3.2">8.3.3.2. Part Separator in Main Matter</h5> -<div class="d5" id="d8.3.3.2"> -<p class="noindent">If used, a Part Separator is a recto <a href="#h8.3.1.1">Display Page</a>.</p> +<h5 id="hD.3.3.2">D.3.3.2. Part Separator in Main Matter</h5> +<div class="d5" id="dD.3.3.2"> +<p class="noindent">If used, a Part Separator is a recto <a href="#hD.3.1.1">Display Page</a>.</p> <p>Some books are partitioned into distinct sub-books. A sub-book is of substantial length, not individual chapters or short stories.</p> <p>If your book has distinct sub-books, then each of them has its own recto cover page, known as a Part Separator. Its verso is blank or an Epigraph. Then the accompanying story begins recto.</p> <p>A Part Separator is <i>always</i> main matter. So, the first Part Separator is <i>always</i> page 1 (number not printed). Then its text begins on page 3. Do not re-initialize the page count when you get to the next Part Separator.</p> <p>Part separators could be simply <i>Part I</i>, <i>Part II</i>, and so forth. They could be <i>Book I</i>, <i>Book II</i>. Or, they could have distinctive titles, such as <i>The Northern Front</i> and <i>The Southern Front</i>. If your book is two novelettes in one, then the Part Separators would be the title (and subtitle, if any) of the individual novelettes. Sometimes a Part Separator has a brief description of its purpose, as in <i>Book I. On Earth</i> followed by <i>Book II. On Mars</i>.</p> <p>Unless your book has a very complex structure, do <i>not</i> use both a second Half-Title (whether in front matter or main matter) and a Part Separator. Combine them as the recto main matter page 1: <i>The Withens Chronicles. Part I</i>, or simply <i>Part I</i>. Then the next Part Separator would be <i>Part II</i>.</p> <p>In one book I recently noticed, there were five parts, each of which corresponded to one calendar day. The Part Separator showed the day, as in <i>Monday, September 25</i>. Then within each part there were several chapters, each of which took us to some different event in a different setting, all on that same day. I also note that this book had no Table of Contents; the progress of the novel was therefore a surprise, by its author's intent.</p> -</div><!-- end 8.3.3.2 --> +</div><!-- end D.3.3.2 --> -<h5 id="h8.3.3.3">8.3.3.3. Introduction in Main Matter</h5> -<div class="d5" id="d8.3.3.3"> -<p class="noindent">An Introduction is a <a href="#h8.3.1.2">Chapter-Like Section</a>. If the book is nonfiction and the Introduction is factual, it belongs in front matter, as described above. But in fiction, where an Introduction is a fictional lead-in to the larger story, it belongs in main matter.</p> +<h5 id="hD.3.3.3">D.3.3.3. Introduction in Main Matter</h5> +<div class="d5" id="dD.3.3.3"> +<p class="noindent">An Introduction is a <a href="#hD.3.1.2">Chapter-Like Section</a>. If the book is nonfiction and the Introduction is factual, it belongs in front matter, as described above. But in fiction, where an Introduction is a fictional lead-in to the larger story, it belongs in main matter.</p> <p>A main matter Introduction is typically used in the "lost manuscript" genre, where some fictional adventurer or archaeologist describes how the manuscript was found and translated. Often, the narration is a moderately lengthy adventure tale, told in the first person, by some adventurer or achaeologist. Following such an Introduction, the various chapters will reveal the contents of the manuscript. If the voice of the Introduction returns at the end, it is called a Conclusion, and is in main matter.</p> <p>If an Introduction is in main matter, its header text (if any) is whatever is used throughout the main story. Typically that's author verso, title recto. The reason is that such an Introduction is actually part of the overall story.</p> -</div><!-- end 8.3.3.3 --> +</div><!-- end D.3.3.3 --> -<h5 id="h8.3.3.4">8.3.3.4. Prologue in Main Matter</h5> -<div class="d5" id="d8.3.3.4"> -<p class="noindent">A Prologue, even if one page, is a <a href="#h8.3.1.2">Chapter-Like Section</a>. It belongs in main matter.</p> +<h5 id="hD.3.3.4">D.3.3.4. Prologue in Main Matter</h5> +<div class="d5" id="dD.3.3.4"> +<p class="noindent">A Prologue, even if one page, is a <a href="#hD.3.1.2">Chapter-Like Section</a>. It belongs in main matter.</p> <p>The purpose of a Prologue is to provide a quick lead-in or setting for the story, and get the reader's attention. It is confined in place and time (one scene, one perspective). The narrator may be first-person or third-person.</p> -<p>Do not use a Prologue for the voice of the author speaking about the book, as author; that goes in front matter, as an <a href="#h8.3.2.10">Author's Note</a>.</p> +<p>Do not use a Prologue for the voice of the author speaking about the book, as author; that goes in front matter, as an <a href="#hD.3.2.10">Author's Note</a>.</p> <p>If a book has a Prologue, then it is likely to have an Epilogue after the main story ends. An Epilogue also belongs in main matter.</p> <p>I do not know of any fiction with both a fictional Introduction and a Prologue. If so, Introduction precedes Prologue.</p> <p>Note: I have seen some web pages advising that a Prologue should go in front matter, and be narrated by a character who appears in the following story. Based on <i style="cursor:help" title="Chicago Manual of Style">CMoS</i> and actual books, I do not think that is correct.</p> -</div><!-- end 8.3.3.4 --> +</div><!-- end D.3.3.4 --> -<h5 id="h8.3.3.5">8.3.3.5. Chapters</h5> -<div class="d5" id="d8.3.3.5"> -<p class="noindent">Finally, you have arrived at Chapter One! Not surprisingly, it is a <a href="#h8.3.1.2">Chapter-Like Section</a>. Chapter One is always recto, whether or not preceded by an Introduction or Prologue.</p> +<h5 id="hD.3.3.5">D.3.3.5. Chapters</h5> +<div class="d5" id="dD.3.3.5"> +<p class="noindent">Finally, you have arrived at Chapter One! Not surprisingly, it is a <a href="#hD.3.1.2">Chapter-Like Section</a>. Chapter One is always recto, whether or not preceded by an Introduction or Prologue.</p> <p>Subsequent chapters may begin recto or verso. Or, the book may be designed so that each chapter always begins recto. In the majority of novels I have seen, recto/verso is used. The <code>\clearpage</code> command starts a new page (recto or verso), and the <code>\cleartorecto</code> command will (if necessary) insert a blank verso, so that the following material is always recto.</p> <p>In the case of short stories, especially if they are by different authors, it is customary to begin each one as recto.</p> -</div><!-- end 8.3.3.5 --> +</div><!-- end D.3.3.5 --> -<h5 id="h8.3.3.6">8.3.3.6. Epilogue, Conclusion</h5> -<div class="d5" id="d8.3.3.6"> -<p class="noindent">If your book has an Epilogue or Conclusion, it begins recto as a <a href="#h8.3.1.2">Chapter-Like Section</a> in main matter.</p> +<h5 id="hD.3.3.6">D.3.3.6. Epilogue, Conclusion</h5> +<div class="d5" id="dD.3.3.6"> +<p class="noindent">If your book has an Epilogue or Conclusion, it begins recto as a <a href="#hD.3.1.2">Chapter-Like Section</a> in main matter.</p> <p>An Epilogue is structurally like a Prologue, but tells the aftermath of the story. A Conclusion is like an Introduction, in which we step outside the main story. I am not aware of any book that has both; but if so, Epilogue precedes Conclusion.</p> -</div><!-- end 8.3.3.6 --> +</div><!-- end D.3.3.6 --> -<h5 id="h8.3.3.7">8.3.3.7. End Notes, Appendix, etc.</h5> -<div class="d5" id="d8.3.3.7"> -<p class="noindent">If used, End Notes begin recto, as a <a href="#h8.3.1.2">Chapter-Like Section</a> in main matter. The same applies to an Appendix and like material.</p> +<h5 id="hD.3.3.7">D.3.3.7. End Notes, Appendix, etc.</h5> +<div class="d5" id="dD.3.3.7"> +<p class="noindent">If used, End Notes begin recto, as a <a href="#hD.3.1.2">Chapter-Like Section</a> in main matter. The same applies to an Appendix and like material.</p> <p>Page numbering continues Arabic. It may surprise you to learn that this is still main matter, but <i style="cursor:help" title="Chicago Manual of Style">CMoS</i> says so, and that's what was done in the few fictional books that have them, among those I have seen.</p> <p>The reason is that this kind of material, which is fictional, is actually the original author's writing, entwined with the main story. It was always intended to be part of the book. Never mind that it "looks like" academic material added later.</p> -</div><!-- end 8.3.3.7 --> -</div><!-- end 8.3.3 --> +</div><!-- end D.3.3.7 --> +</div><!-- end D.3.3 --> -<h4 id="h8.3.4">8.3.4. At Very End</h4> -<div class="d4" id="d8.3.4"> -<p class="noindent">In <i>novel</i>, you must always end your document this way:</p> -<p class="code"><code> -\cleartoend<br/> -\end{document} -</code></p> -<p>The final page of your book is necessarily verso. P.O.D. printers (and many others) require that it be completely blank, because they will add some manufacturing information to that page. So, if the text of your book finishes on a recto page, <code>\cleartoend</code> adds one blank page. But if the text finishes on a verso page, then <code>\cleartoend</code> adds <em>two</em> blank pages, so that the final page is blank verso.</p> +<h4 id="hD.3.4">D.3.4. At the End</h4> +<div class="d4" id="dD.3.4"> +<p class="noindent">The final page of your book is necessarily verso. P.O.D. printers (and many others) require that it be completely blank, because they will add some manufacturing information to that page.</p> +<p>So, if the text of your book finishes on a recto page, then one blank page is automatically added. However, if the text of your book finishes on a verso page, then <i>two</i> blank pages are automatically added.</p> -<h5 id="h8.3.4.1">8.3.4.1. Backmatter? Not!</h5> -<div class="d5" id="d8.3.4.1"> +<h5 id="hD.3.4.1">D.3.4.1. Backmatter? Not!</h5> +<div class="d5" id="dD.3.4.1"> <p class="noindent"> Once upon a time, when printing was not so electronically automated, it was difficult to add material to the end of a previously-typeset section of front matter. So, if there was a subsequent printing of the book, with new material that ought to go in front matter, the problem was solved by placing the new material in "back matter." Then, the original pagination did not have to be altered. To stress that the added material was not part of the original, it would have non-Arabic page numbering, which might be a continuation of lowercase roman numerals from where the front matter left off, or might begin with uppercase Roman numerals.</p> <p>A similar situation applied to critical editions of earlier works, which added material from different authors. The added material was never part of the original book.</p> <p>That is a situation you are never likely to address. When most authors speak about "back matter," what they mean is explanatory material that follows the end of the story. That is, anything after the final Chapter, Epilogue, or Conclusion. A good example can be found in J.R.R. Tolkien's <i>The Return of the King,</i> which has quite a bit of material following the end of the story. That material discusses the language and history of the Elves, and a variety of other things. But its page numbering continues Arabic. It looks like critical commentary, but it is part of Tolkien's original, fictional structure for the book. Thus, it is main matter.</p> <p>So, your book is unlikely to have true back matter. If you use the <code>\backmatter</code> command, it does nothing. If you really wish to change page numbering, then you must code it manually. This is not advised for P.O.D. books, as it may confuse someone performing quality inspection; true back matter is so rare.</p> -</div><!-- end 8.3.4.1 --> +</div><!-- end D.3.4.1 --> -<h5 id="h8.3.4.2">8.3.4.2. About the Author</h5> -<div class="d5" id="d8.3.4.2"> -<p class="noindent">A hardcover book often has "About the Author" on the inside flap of its dust jacket. Softcover doesn't have a dust jacket, so one strategy is to add a leaf after the story finishes (but before <code>\cleartoend</code>) and place "About the Author" on its recto. That avoids repagination of the original. It is still treated as main matter, with continued (non-printing) Arabic page number. Thus:</p> +<h5 id="hD.3.4.2">D.3.4.2. About the Author</h5> +<div class="d5" id="dD.3.4.2"> +<p class="noindent">A hardcover book often has "About the Author" on the inside flap of its dust jacket. Softcover doesn't have a dust jacket, so one strategy is to add a leaf after the story finishes, and place "About the Author" on its recto. That avoids repagination of the original. It is still treated as main matter, with continued (non-printing) Arabic page number. Thus:</p> <p class="code"><code> .. and they rode off into the sunset. % end of story<br/> \cleartorecto<br/> @@ -2704,244 +2826,11 @@ Once upon a time, when printing was not so electronically automated, it was diff \ChapterTitle{About the Author}<br/> \end{ChapterStart}<br/> Dirk Hardcase is a former... etc.\par<br/> -\cleartoend<br/> \end{document} </code></p> <p>• I suggest that if you wish to tell about yourself, you can put it on a web site instead, where you can easily edit or delete it.</p> -</div><!-- end 8.3.4.2 --> -</div><!-- end 8.3.4 --> -</div><!-- end 8.3 --> - - -</div><!-- end 8 --> -</div><!-- end page08 --> -<!-- ************************************************************ --> -<div id="pageA" class="page"> - - -<h2 id="hA">Appendix A. Sample Document</h2> -<div class="d2" id="dA"> -<p class="noindent">If you click on a command, you will be taken to its documentation. -There are many other commands available, but they are not specific to novel class.</p> -<div class="sampledoc"> -<p>Non-empty default values are <em>shown like this</em>.<br/> - </p> -<p style="text-indent:0"> -<a href="#h1.2.3">% !TeX TS-program = LuaLaTeX</a><br/> -<a href="#h1.2.1">% !TeX encoding = UTF-8</a><br/> -<a href="#h2">\documentclass{novel}</a> % See list of class options; usually none needed.<br/> -%%% METADATA (FILE DATA):<br/> -<a href="#h3.3.1">\SetTitle{}</a> % Default: empty. Required for PDF/X.<br/> -<a href="#h3.3.3">\SetSubtitle{}</a> % Default: empty.<br/> -<a href="#h3.3.2">\SetAuthor{}</a> % Default: empty.<br/> -<a href="#h3.3.4">\SetApplication{<em>LuaLaTeX with novel and microtype</em>}</a><br/> -<a href="#h3.3.4">\SetProducer{<em>LuaLaTeX with novel-pdfx and hyperref</em>}</a><br/> -<a href="#h3.4">\SetPDFX{<em>off</em>}</a><br/> -%%% DIMENSIONS:<br/> -<a href="#h4.1.1">\SetTrimSize{<em>5.5in</em>}{<em>8.5in</em>}</a> % Sets width, height of your book.<br/> -% Default Media Size equals Trim Size.<br/> -% Rarely-used over-ride:<br/> -% <a href="#h4.1.2">\SetMediaSize[<em>alignment</em>]{<em>width</em>}{<em>height</em>}</a><br/> -% Cropmark gap is ignored unless document class option cropmarks:<br/> -<a href="#h4.1.3">\SetCropmarkGap{<em>0.125in</em>}</a><br/> -% Default margins vary with Trim Size. Defaults for {5.5in}{8.5in}:<br/> -<a href="#h4.3.1">\SetMargins{<em>0.5in</em>}{<em>0.5in</em>}{<em>0.5in</em>}{<em>0.75in</em>}</a><br/> -%%% GENERAL FONTS:<br/> -% Percent at end of line is necessary, when writing font settings multi-line:<br/> -<a href="#h4.2.1.1">\SetParentFont[%<br/> -<em>SmallCapsFeatures={Renderer=Basic},</em></a>% Effective when small caps requested locally.<br/> -<a href="#h4.2.1.1"><em>Kerning=On,</em> %<br/> -<em>Ligatures=TeX,</em> %<br/> -]{<em>Libertinus Serif</em>}</a><br/> -% Main text font automatically adds <em>Numbers=OldStyle,Ligatures=Common</em>.<br/> -% Default main font size is based on other layout settings.<br/> -% Varies from 11pt to 12pt. With all default layouts, value is 11.4pt.<br/> -% You may manually choose a different main font size:<br/> -% <a href="#h4.2.1.2">\SetFontSize{<em>length</em>}</a><br/> -% Default lines per page (main textblock) is calculated from other layout settings.<br/> -% When using all defaults, the calculated value is 35.<br/> -% If used, \SetLinesPerPage manually chooses the value:<br/> -% <a href="#h4.3.2">\SetLinesPerPage{<em>integer</em>}</a><br/> -<a href="#h4.2.3">\SetDecoFont{<em>NovelDeco.otf</em>}</a><br/> -<a href="#h4.2.4">\setsansfont{<em>Libertinus Sans</em>}</a><br/> -<a href="#h4.2.4">\setmonofont{<em>Libertinus Mono</em>}</a><br/> -<a href="#h4.2.4">\setmathfont{<em>Libertinus Math</em>}</a> % unicode-math<br/> -%%% HEADERS/FOOTERS:<br/> -<a href="#h4.3.3">\SetHeadFootStyle{<em>1</em>}</a> % This style has headers only.<br/> -<a href="#h4.3.4.1">\SetHeadJump{<em>1.5</em>}</a><br/> -<a href="#h4.3.4.1">\SetFootJump{<em>1.5</em>}</a><br/> -<a href="#h4.3.4.3">\SetLooseHead{<em>50</em>}</a><br/> -<a href="#h4.3.4.5">\SetEmblems{}{}</a> % Default blanks.<br/> -<a href="#h4.3.4.2">\SetHeadFont[<em>\parentfontfeatures,Letters=SmallCaps,Scale=0.92</em>]{<em>\parentfontname</em>}</a><br/> -<a href="#h4.3.4.4">\SetPageNumberStyle{<em>\thepage</em>}</a><br/> -<a href="#h4.3.4.6">\SetVersoHeadText{<em>\theAuthor</em>}</a><br/> -<a href="#h4.3.4.6">\SetRectoHeadText{<em>\theTitle</em>}</a><br/> -%%% CHAPTERS:<br/> -<a href="#h5.1.2.1">\SetChapterStartStyle{<em>footer</em>}</a> % Equivalent to empty, when style has no footer.<br/> -<a href="#h5.1.2.2">\SetChapterStartHeight{<em>10</em>}</a><br/> -<a href="#h5.1.3.1">\SetChapterFont[<em>Numbers=Lining,Scale=1.6</em>]{<em>\parentfontname</em>}</a><br/> -<a href="#h5.1.3.1">\SetSubchFont[<em>Numbers=Lining,Scale=1.2</em>]{<em>\parentfontname</em>}</a><br/> -<a href="#h5.3.1">\SetScenebreakIndent{<em>false</em>}</a><br/> -%%% CUSTOM FONTS:<br/> -% <a href="#h4.2.5">\NewFontFamily[]{}</a> % Optional command.<br/> -% <a href="#h4.2.5">\NewFontFace[]{}</a> % Optional command.<br/> -% <a href="#hE.2.3">\CreateFontFeature{}{}</a> % Optional command.<br/> -%%% OTHER:<br/> -<a href="#h1.2.1.1">\setdefaultlanguage[<em>variant=american</em>]{<em>english</em>}</a> % polyglossia<br/> -<a href="#h6">\microtypesetup{<em>config=novel-microtype,stretch=20,shrink=20,final</em>}</a> % microtype<br/> -%%% BEGIN DOCUMENT:<br/> -\begin{document}<br/> -<a href="#h8.3.2">\frontmatter</a> % Required.<br/> -% Typically <a href="#hB">six pages</a> of front matter, but <a href="#h8.3.2">could be more</a>.<br/> -<a href="#h8.3.3">\mainmatter</a> % Required<br/> -% <a href="#h5">Chapters</a> go here. SAMPLE Chapter structure:<br/> -<a href="#h5.1.1">\clearpage</a> % or <a href="#h5.1.1">\cleartorecto</a><br/> -<a href="#h5.1.2.3">\begin{ChapterStart}</a><br/> -\vspace*{2\nbs} % Space above chapter title. \nbs = normal baseline skip.<br/> -<a href="#h5.1.3">\ChapterTitle{</a>— 1 —<a href="#h5.1.3">}</a> % Perhaps also <a href="#h5.1.3">ChapterSubtitle</a>, <a href="#h5.1.3">ChapterDeco</a>.<br/> -<a href="#h5.1.2.3">\end{ChapterStart}</a><br/> -It was a dark and stormy night, etc.<br/> -<a href="#h5.1.1">\clearpage</a> % or <a href="#h5.1.1">\cleartorecto</a><br/> -<a href="#h8.3.4">\cleartoend</a><br/> -\end{document} -</p> -</div> - - -</div><!-- end A --> -</div><!-- end Appendix A --> -<!-- ************************************************************ --> -<div id="pageB" class="page"> - - -<h2 id="hB">Appendix B. Basic Six-Page Front Matter</h2> -<div class="d2" id="dB"> -<p class="imgcentered"><img src="html-resources/sixpage-frontmatter.png" width="740" height="189" alt="Six-page front matter, with Epigraph on page v." title="Six-page front matter."/></p> -<p class="noindent1">In many instances, six pages of front matter are all you need for fiction. This is often true for major publishers, not just self-published P.O.D. authors.</p> -<p class="noindent1">You can use six pages, provided that:</p> -<p class="overhang">• Your front matter does not contain material written by someone else (such as a Foreword), no matter how short. Exception: You may use an Epigraph.</p> -<p class="overhang">• Your front matter contains at most one of the following, limited to a single page: Dedication, Epigraph, Table of Contents, Acknowledgements, Author's Note, Map.</p> -<p class="noindent2">If both of the above points apply, then your front matter is organized as follows. Be sure that your document begins with the <code>\frontmatter</code> command, and that each page begins with <code>\thispagestyle{empty}</code> and ends with <code>\clearpage</code>.</p> - -<h3 id="hB.1">B.1 Half-Title to Copyright</h3> -<div class="d3" id="dB.1"> -<p class="noindent">The first four pages (i - iv) are the same for nearly every book.</p> -<p class="overhang"><b>Page i. Half-Title.</b></p> -<p class="overhang"><b>Page ii. Blank.</b> Alternatively, if you wrote numerous books, you can provide a list of them. However, many print/distribution services will not allow such a list, unless they carry everyhing on the list.</p> -<p class="overhang"><b>Page iii. Title Page.</b></p> -<p class="overhang"><b>Page iv. Copyright Page.</b></p> -</div><!-- end B.1 --> - -<h3 id="hB.2">B.2 Post-Copyright</h3> -<div class="d3" id="dB.2"> -<p class="noindent">After the copyright page, there may be some variation.</p> -<p class="overhang"><b>Page v. Varies.</b> One of: Dedication, Epigraph, Table of Contents, Acknowledgements, Author's Note, Map. If you have none of them, then repeat the Half-Title.</p> -<p>Don't be afraid to simply repeat the Half-Title. Even major publishers do it, when they have nothing else to say in front matter.</p> -<p class="overhang"><b>Page vi. Blank.</b> Exception: If Page v does not have an Epigraph or Half-Title, you may place an Epigraph here, provided that it does not visually detract from the story that begins on the facing page.</p> -<p class="noindent1"><b>The TeX code looks like this:</b></p> -<div style="margin-left:32px"> -<p class="code"><code> -\begin{document}<br/> -\frontmatter % Sets page number to i.<br/> -\thispagestyle{empty}<br/> -% Half-Title Page.<br/> -\clearpage<br/> -\thispagestyle{empty}<br/> -\null % Necessary for blank page.<br/> -% Alternatively, List of Books.<br/> -\clearpage<br/> -\thispagestyle{empty}<br/> -% Title Page.<br/> -\clearpage<br/> -\thispagestyle{empty}<br/> -% Copyright Page.<br/> -\clearpage<br/> -\thispagestyle{empty}<br/> -% Dedication or Epigraph or TOC or Acknowledgements or Author's Note or Map.<br/> -% Alternatively, repeat the Half-Title.<br/> -\clearpage<br/> -\thispagestyle{empty}<br/> -\null % Necessary for blank page.<br/> -% Alternatively, Epigraph if it does not detract from facing page.<br/> -\clearpage<br/> -\mainmatter % Sets page number to 1 for following material. -</code></p> -</div> -</div><!-- end B.2 --> - - -</div><!-- end B --> -</div><!-- end Appendix B --> -<!-- ************************************************************ --> -<div id="pageC" class="page"> - - -<h2 id="hC">Appendix C. Shopping for Fonts</h2> -<div class="d2" id="dC"> -<p class="noindent1">Since the <i>novel</i> class uses only <i>LuaLaTeX</i> and <i>fontspec</i> with utf-8 encoding, you may use any Open Type or TrueType font, subject to licensing. You are not limited to TeX fonts.</p> -<p>Many TeX fonts are only available in older Type 1 format (PostScript). Use of such fonts is <i>strongly discouraged</i>, due to possible issues in <i>novel</i> class (which will not be fixed, if they appear).</p> -<p>In some other cases, a TeX font package provides both the older format, and a newer Open Type or TrueType format. The different formats will have different font names. Sometimes the difference is very slight. Carefully look at the font name for the Open Type format, using TrueType only as a second choice. Remember that most on-line discussions will refer to the older Type 1 PostScript fonts, simply because they have been around longer. For example: <i>Linux Biolinum</i> is a sans-serif font available via TeX as a PostScript font. But <i>Linux Biolinum O</i> (note the O) is an Open Type font. If you need this font, then call for <i>Linux Biolinum O</i>, not simply <i>Linux Biolinum</i>.</p> -<p><b>Important:</b> Do not attempt to load a font by the <code>\RequirePackage</code> or <code>\usepackage</code> commands. Instead, if you choose to use fonts other than the defaults, load them via the <a href="#h4.2">font setting commands</a> described in this documentation. If you attempt to load a font the wrong way, you may get an error message, or the font may quietly fail to load.</p> - -<h3 id="hC.1">C.1 Licensing Issues</h3> -<div class="d3" id="dC.1"> -<p class="noindent1">Presumably, you are writing your novel for commercial value, and do not intend to give anything away for free. For that reason, avoid any font licensed under the GPL (GNU Public License) unless it has the <a class="external" rel="external" target="new" href="https://en.wikipedia.org/wiki/GPL_font_exception">font exception</a> clause. Many TeX fonts, and many non-TeX free fonts, are licensed under GPL, but <i>without</i> the relatively-recent font exception clause. Be careful!</p> -<p>Beware of fonts "free for personal use" from download sites. Your commercial application is not "personal use." Of course, if you like the font, you may purchase its commercial license.</p> -<p>Also beware of fonts generically labeled as "freeware" with no particular designer name. If you don't know who created the font, then how do you know that it can be given away for free? Even if there is a designer name, some of them had second thoughts about "freeware." They intended the fonts to be free only if you give your own work away for free. But they didn't mention it. Maybe they have no legal recourse, but you don't want them making anonymous negative reviews of your book.</p> -<p>You have numerous fonts already installed in your operating system, and perhaps others that came bundled with a particular application. If you intend to use those fonts, carefully read their licenses. It is often the case that fonts bundled with an application may <em>only</em> be used for documents created within, or processed by, that application. Or, the fonts may be OK to use for printing directly by your own home printer, but not for embedding in a PDF that will go to a commercial printer.</p> -<p>Although it does not pertain to TeX, another issue can arise if you later publish an ebook version. Fonts licensed for printing are often not licensed for an ebook. Indeed, the ebook distributor may ban them.</p> -<p>Always look for a Copyright notice, which can be identified with a particular person or organization. Copyright is good! It means that someone is claiming authorship of the font software. Only the Copyright owner has the right to give the font away for free, or license it to you after payment (often through an intermediary).</p> -<p>If you prefer free fonts, the most widely accepted license is the <a class="external" rel="external" target="new" href="http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL">SIL Open Font License</a>. This allows you to use the font for commercial purposes, embed it in PDF, modify it to suit your needs (if you change the font name), and even re-distribute the modifications. The recommended default <i>Libertinus Serif</i> bears this font license. So does the included font <i>NovelDeco</i>.</p> -</div><!-- end C.1 --> - -<h3 id="hC.2">C.2 Technical Issues</h3> -<div class="d3" id="dC.2"> -<p class="noindent1">Many fonts have technical errors, even among professional fonts. Some of the errors are so minor that they are not worth fixing.</p> -<p>However, beware of fonts based on traced artwork. The late 1990s had an explosion of amateur dingbat and decorative fonts produced this way, by scanning images from old books and digitizing the scan. The resulting vector glyphs rarely meet standards, and often are quite awful. The problem is that when a commercial printer renders your PDF to print, the printer's software is very different from what you have on your home computer. A technically erroneous glyph might look OK at home, but be rejected commercially.</p> -<p>If you have the knowledge, you can open a font in font editor software (such as <i>FontForge</i>) and ask it for validation. Missing extrema are rarely a problem, even if a lot of them are missing. Self-intersecting glyphs are not a problem if the the glyph is composed of two elements stuck together, such as Ç composed of C with separate cedilla. However, a self-intersecting glyph may be a problem if its lines criss-cross each other. Open paths, and outer paths drawn the wrong way, are often a problem. If the errors are confined to glyphs that you will not be using, then it can pass.</p> -</div><!-- end C.2 --> - -<h3 id="hC.3">C.3 Appearance Issues</h3> -<div class="d3" id="dC.3"> -<p class="noindent1">There are general expectations for book fonts, in terms of character sizes and shapes, and weights. Many of the widely-used TeX fonts, including Latin Modern, are unacceptable in fiction for this reason. Times New Roman is not quite acceptable for fiction; but it is often mis-used by amateurs with a word processor.</p> -<p>The best way to assess a font is to print it to paper, at actual size. Use an inkjet (not laser) printer with only-black cartridge. In the print-on-demand world, your book is likely to be printed using an industrial-strength inkjet machine. Characters may be not quite as black as you would expect from the offset press technology used for larger-quantity production runs. Also, keep in mind that the paper you use at home is not like the (higher quality) paper that will be used for your book.</p> -<p>Depending on whom you ask for an opinion, fiction is most easily read when there are about 60 to 66 characters (including spaces) per line. To evaluate a font for the main text, print out some paragraphs about 4" to 4.25" wide, and scale the font's point size so that you get an average number of characters per line in that range. Be sure to do that: Adobe Garamond Pro at 12pt, Libertinus Serif at 11.4pt, and Libre Caslon Text at 9.6pt (!) provide about the same number of characters per line of text. At the proper point size, some fonts will look too dark, and others will look too light.</p> -<p>Things to look for: (1) Are the lowercase letters too tall? If they are, then it is hard for readers in many Western languages to find where sentences start, by looking for capital letters. Also, there is less white space between lines, which makes the text appear dense and harder to read. (2) Is the shape of the characters so natural that you don't notice them? That's good! It is your writing, not the font, that is to be noticed. (3) Remember that some fonts are designed for use at large size, in posters; such fonts tend to look mechanical in fiction. Other fonts are designed for computer screens; the letters will be too widely-spaced in fiction. Nearly all modern fonts have decent kerning and important ligatures, so that's not usually a decisive factor.</p> -<p>The prevailing rule: If you notice the font, it's wrong.</p> -</div><!-- end C.3 --> - - -</div><!-- end C --> -</div><!--end Appendix C --> -<!-- ************************************************************ --> -<div id="pageD" class="page"> - - -<h2 id="hD">Appendix D. The 240% Ink Limit (TAC) Color Gamut</h2> -<div class="d2" id="dD"> -<p class="noindent">The <i>gamut</i>, or range of available colors, is not the same for your computer monitor as it is for a printer. Obviously that depends on the technology of your monitor, and the technology of the printer. By and large, a good CMYK commercial printer can provide blue-greens that your monitor cannot accurately display. And, your monitor might display purple-violet colors that cannot accurately be printed. The monitor's advantage in purple-violet largely disappears for inexpensive LCD flat panels, which is what most of us have.</p> -<p>However, the full CMYK gamut is only realized when each ink channel can act independently. That is, each spot on the paper must be able to retain as much as a full dose of each ink. At 0%-100% ink per channel, a spot of paper would have to hold up to 400% ink. For a variety of reasons, most printing technologies cannot apply that much ink. Or rather, if they did try to apply that much, the resulting print might smear, fail to dry, lift off, or soak through to the opposite side of the paper. Subsequent lamination might fail to adhere.</p> -<p>Quality books and magazines, using coated paper, can typically hold 300%-360% ink (the technical name is TAC, Total Area Coverage). However, the color cover of a print-on-demand book might be produced by a method that holds less ink. The operative word is "might." Common P.O.D. printers are industrial-strength inkjet machines, capable of very high quality when used with suitable paper. The print job will be sent out on a copy-by-copy basis to any number of different print shops, who may use other technology. Therefore, P.O.D. services may require that the color gamut be limited to those printable by a "lowest common denominator" process. One widely-used "lowest common denominator" is 240% ink limit.</p> -<p>At 240% ink limit, brightly colored areas are generally unaffected. Deep, rich colors cannot be produced, since they would require too much ink. You will be required to provide an image with colors that fit within the ink limit, or the P.O.D. service may quietly alter your image for you.</p> -<p>Print simulation, or <i>softproofing</i>, is a method of viewing an image on your computer, "as if it were printed" to some standard. GIMP can do this, as long as you provide the necessary *.icc color profile for the printer. Then you can decide whether or not the result is acceptable. The actual CMYK image is produced by the methods described in <a href="#h7.4">section 7.4</a>.</p> - -<h3 id="hD.1">D.1. Example: Bright Colors Preserved</h3> -<div class="d3" id="dD.1"> -<p>Below is a painting from the Middle Ages (photo by me) on display at the San Francisco Legion of Honor museum. The photo, at left, is as originally seen on a computer monitor. At right, the image is softproofed using the SWOP 238% ink limit color profile mentioned in Chapter 13. You can see that the brightest blue is about the same, The brightest reds and greens are almost the same. But the images differ in the dark areas. Especially look at the lion's leg (lower left corner) and the writer's hair and beard (right foreground).</p> -<p class="centerimg"><img src="html-resources/medieval-painting.jpg" width="707" height="321" title="Medieval Painting, monitor and softproof" alt="Medieval Painting, monitor and softproof"/></p> -</div><!-- end D.1 --> - -<h3 id="hD.2">D.2. Example: Natural Light Preserved</h3> -<div class="d3" id="dD.2"> -<p>Below is a photograph taken on a dull day along the California coast, near Bixby Creek. Whether in monitor color or softproofed, the results are almost exactly the same. With the exception of some tiny shadowed areas in the foreground (hard to notice), just about everything in the picture can print with not more than 238% ink.</p> -<p class="centerimg"><img src="html-resources/bixby-compare.jpg" width="738" height="340" title="Medieval Painting, monitor and softproof" alt="Bixby Creek, monitor and softproof"/></p> -</div><!-- end D.2" --> - -<h3 id="hD.3">D.3. Example: Dark, Rich Colors Lost</h3> -<div class="d3" id="dD.3"> -<p>The biggest problem occurs when the artwork is naturally dark. That might occur in night scenes, or with dark-skinned humans. For copyright reasons I cannot show you the original image of a painting by Hyacinthe Rigaud, on display in a European museum. But if it is reduced to a map of 256 colors (as with GIF images), you can see the effect. The original, at left, has many rich browns and reddish-browns. When softproofed, those become nearly gray. The original image still is attractive when softproofed, but its muted dark colors might be surprising if you were unaware of the ink limit effect.</p> -<p class="centerimg"><img src="html-resources/colormap-brown.jpg" width="674" height="305" title="Medieval Painting, monitor and softproof" alt="Dark color map, monitor and softproof"/></p> -<p>You might wonder why the ink limit caused rich browns to appear <i>darker</i>. That's because a blend of yellow, magenta, and black (with too much ink) was changed to one with much less yellow and magenta, but more black (and not too much ink).</p> +</div><!-- end D.3.4.2 --> +</div><!-- end D.3.4 --> </div><!-- end D.3 --> @@ -2951,11 +2840,11 @@ It was a dark and stormy night, etc.<br/> <div id="pageE" class="page"> -<h2 id="hE">Appendix E. Overview of <i>fontspec</i> Syntax</h2> +<h2 id="hE">Appendix E. Overview of <i>fontspec</i> Syntax</h2> <div class="d2" id="dE"> <p class="noindent">Much of what follows is a digested portion of the full <i>fontspec</i> package documentation. There are many more features, and ways to use them, than will be described below.</p> -<h3 id="hE.1">E.1. Font (Family) Name vs. Font File Name</h3> +<h3 id="hE.1">E.1. Font (Family) Name vs. Font File Name</h3> <div class="d3" id="dE.1"> <p class="noindent">A <em>font file</em> is an individual file, with its own <em>file name</em>, including file extension. For example, libertinusserif-regular.otf and libertinusserif-italic.otf are two different font files. This much is obvious.</p> <p>A <em>font family name</em>, often merely called <em>font name</em>, refers to one or more font files that are variations of the same basic font. Some fonts are so unique that the family consists of just one file. For example, the <i>NovelDeco</i> font family consists of the one file <i>NovelDeco.otf</i>. Typically, a font family has four files, consisting of Regular, Italic, Bold, and BoldItalic variants. Even though there are four font files, there is a single font family name.</p> @@ -2966,7 +2855,7 @@ It was a dark and stormy night, etc.<br/> <img src="html-resources/ublibser.png" width="431" height="176" alt="Ubuntu font viewer"/> </p> -<h4 id="hE.1.1">E.1.1. Set/New by Font Name vs. File Name</h4> +<h4 id="hE.1.1">E.1.1. Set/New by Font Name vs. File Name</h4> <div class="d4" id="dE.1.1"> <p class="noindent">When you set an existing font, or create a new font command, you can use either the font (family) name, or the specific font file name. However, there may be a big difference in results!</p> <p style="margin-top:10px"><b>By family name:</b></p> @@ -3001,7 +2890,7 @@ It was a dark and stormy night, etc.<br/> </div><!-- end E.1.1 --> </div><!-- end E.1 --> -<h3 id="hE.2">E.2. Open Type Features</h3> +<h3 id="hE.2">E.2. Open Type Features</h3> <div class="d3" id="dE.2"> <p class="noindent">Features are variations, contained within a single font file. In the bad old days, when you wanted true small caps, you had to load a separate font file that had them (and did not have ordinary lowercase letters). Now, if an Open Type font file has the <i>smcp</i> feature (most do), you obtain the small caps from within the same file, by asking for them. Requests for the feature may be made on-the-fly, or pre-loaded for global use.</p> <p>Here are several of the most frequently-used features, relevant to fiction writing. There are many more, and most fonts have only a few of them. Even when a font has a feature, it may be limited to some portion of the characters. For example, it is common for small caps to be available only for Latin-1 letters, even though the font also contains Greek and Cyrillic. To put this another way: The availability of a feature does not tell you its breadth of coverage. Unless the font has documentation showing coverage of its features, the only way to find out is to create and print a test page.</p> @@ -3025,7 +2914,7 @@ Some Frequently-Used Open Type Features <tr> <td><p>common ligatures</p></td> <td><p>liga</p></td> -<td><p>Ligatures=Common<br/><em>enabled: textfont, sansfont</em></p></td> +<td><p>Ligatures=Common<br/><em>enabled: mainfont, sansfont</em></p></td> </tr> <tr> <td><p>Tex ligatures</p></td> @@ -3050,7 +2939,7 @@ Some Frequently-Used Open Type Features <tr> <td><p>oldstyle numerals</p></td> <td><p>onum</p></td> -<td><p>Numbers=OldStyle<br/><em>enabled: textfont, sansfont</em></p></td> +<td><p>Numbers=OldStyle<br/><em>enabled: mainfont, sansfont</em></p></td> </tr> </tbody> </table> @@ -3066,7 +2955,7 @@ Some Frequently-Used Open Type Features <p>• True OldStyle numerals have a flat top on <em>one</em>, and a very round <em>zero</em>: <img src="html-resources/10trueold.png" width="37" height="13" alt="true oldstyle 10"/> This may be a bit distracting. Some fonts use a transitional form, where the one has a tilted top (like big 1) and the zero is not so round: <img src="html-resources/10transold.png" width="37" height="13" alt="transitional oldstyle 10"/> Others offer you a choice, via an Open Type "style set." See the <i>fontspec</i> manual for how to code style sets.</p> <p>• There are many more Open Type features, most of which are not useful in ordinary fiction writing. Fonts rarely have more than a few features. Some features (such as the ones shown above) have a specific meaning. Other features, such as "style sets", have whatever meaning the font designer assigns them; Thus the <i>ss03</i> feature of one font may do something very different from <i>ss03</i> in a different font.</p> -<h4 id="hE.2.1">E.2.1. Scale as Pseudo-Feature</h4> +<h4 id="hE.2.1">E.2.1. Scale as Pseudo-Feature</h4> <div class="d4" id="dE.2.1"> <p class="noindent">Although it is not an Open Type feature, <i>Scale=number</i> may be written like a feature. <i>Scale</i> globally adjusts the size of the font, relative to what it would otherwise be. If a local font size command is also applied, then the result is the compounded value.</p> <p>If the font will be mingled with other fonts in the same place, Scale can tweak a font so that it does not stand out. If Scale does not exceed 1, then the baselineskip will not be affected. Over 1 risks spreading lines to accomodate the extra size; this should not be done for fonts that will appear in the flowing main text. But over 1 is acceptable for display fonts that do not wrap lines and do not mingle with main text.</p> @@ -3078,16 +2967,15 @@ Some Frequently-Used Open Type Features <p>Scale is more often used for fonts that are pre-defined to have a special meaning and location, such as <a href="#h5.1.3.1">chapter titles</a> or <a href="#h4.3.4.2">page headers</a>. There, the font is not mingled with ordinary text, and it is OK to use a larger Scale. Then, it is not necessary to use local font scaling commands each time the font is used.</p> </div><!-- end E.2.1 --> -<h4 id="hE.2.2">E.2.2. Color and Opacity</h4> +<h4 id="hE.2.2">E.2.2. Color and Opacity</h4> <div class="d4" id="dE.2.2"> <p class="noindent">Even though the <i>fontspec</i> syntax allows you to set <i>Color</i> and <i>Opacity</i> as pseudo-features when you define a font, <em>the novel class blocks these features.</em> If you attempt to set them as features in a font definition, an error will result. The same applies if you attempt to add them, using <code>\addfontfeature</code>. However, you can still make use of grayscale using ordinary, local color commands.</p> -<p>When you use the <a href="#h2.2">graytext</a> class option, you may write text in grayscale, using commands from the included <i>xcolor</i> package. You should only do this for text that is in special locations. For example, if you begin each chapter with a number that is very large, you might wish to make that number gray, so that it does not overpower the main text.</p> +<p>You may write text in grayscale, using commands from the included <i>xcolor</i> package. You should only do this for text that is in special locations. For example, if you begin each chapter with a number that is very large, you might wish to make that number gray, so that it does not overpower the main text.</p> <p>To avoid possible conflicts, the color specification should be chosen from a limited list of names. In order from dark to light: black, blue, violet, darkgray, purple, red, teal, olive, magenta, gray, brown, green, orange, cyan, lightgray, lime, pink, yellow, white. They will all be rendered in <em>shades of gray</em> (of course, black and white will be themselves). You may also choose from this more convenient list: black, gray1, gray2, gray3, gray4, gray5, gray6, gray7, gray8, gray9, white.</p> -<p>If <i>graytext</i> is not chosen as class option, then any color (even white) will be rendered as black.</p> <p>• Placing light text over a dark background may produce unexpected results in print, even if it looks good in PDF. If you need this effect, it is better to build the text into the background, as a single image.</p> </div><!-- end E.2.2 --> -<h4 id="hE.2.3">E.2.3. <code>\CreateFontFeature{<em>code</em>}{<em>substitutions</em>}</code></h4> +<h4 id="hE.2.3">E.2.3. <code>\CreateFontFeature{<em>code</em>}{<em>substitutions</em>}</code></h4> <div class="d4" id="dE.2.3"> <p class="noindent">Once in a while, a font has a glyph that you would like to use, but it is not included in any of the font's Open Type feature sets. So, how to you grab that particular glyph? For example: One well-known font has a glyph named <em>emdash.alt</em>, which is not as long as the font's ordinary <em>emdash</em> glyph, and looks better in text. Unfortunately, <em>emdash.alt</em> is not in any of the font's style sets. Without some trickery, only a program such as InDesign can grab that glyph.</p> <p>Thanks to <i>fontspec</i>, <i>novel</i> has the necessary trickery. Command <code>\CreateFontFeature</code> creates a fake Open Type feature code, and assigns your list of substitutions to that code. Use comma-separated entries if there are multiple substitutions. For the case in question:</p> @@ -3099,7 +2987,7 @@ Some Frequently-Used Open Type Features </div><!-- end E.2.3 --> </div><!-- end E.2 --> -<h3 id="hE.3">E.3. Local Modifications to Open Type Features</h3> +<h3 id="hE.3">E.3. Local Modifications to Open Type Features</h3> <div class="d3" id="dE.3"> <p class="noindent">If you specify a particular Open Type feature, it will be generally used for that font command. So if you define a new font command with <i>Letters=SmallCaps</i> as a feature (and if the font actually has them), then small caps will be used for that font, whether or not you locally request them with a command such as <code>\textsc</code>.</p> <p>Often, you can add (or sometimes remove) features on a local basis. For example, suppose that you defined the font without using its <i>ss03</i> style set. You can locally add that feature to some text, using a command that looks like this:</p> @@ -3121,7 +3009,194 @@ Some text {\baskf\addfontfeature{Numbers=Monospaced} hello 123} is here. </div><!-- end E --> </div><!-- end Appendix E --> <!-- ************************************************************ --> +<div id="pageF" class="page"> + + +<h2 id="hF">Appendix F. Drop Caps</h2> +<div class="d2" id="dF"> +<p class="item">A <i>drop cap</i> is an enlarged letter (or image) at the beginning of chapter text, with the first few lines of text wrapped around it:</p> +<p class="centerimg"><img src="html-resources/dropcap.png" width="431" height="112" title="drop cap" alt="drop cap"/></p> +<p>Drop caps are out of fashion, largely because they do not look good when used with dialog or with short paragraphs. If you intend to use them, be prepared to write in a style where each chapter begins with a substantial paragraph. Or, consider using a specially designed <a href="#h5.5">first line</a> instead.</p> +<p>If you use a drop cap, the first paragraph must be long enough to fill all of the shortened lines, and continue to the line beneath the drop cap letter. If instead you try to have two or more short paragraphs, then the drop cap will not work as expected. To solve this problem, you can break using <code>\\</code> to fake a paragraph ending, then use <code>\forceindent</code> to fake a new paragraph indent.</p> + +<h3 id="hF.1">F.1. Built-In Method vs. Lettrine</h3> +<div class="d3" id="dF.1"> +<p class="item"><b>A.</b> In <i>novel</i>, the built-in <code>\dropcap</code> command is preferred to any other method for creating a drop cap. See the next section for its usage.</p> +<p class="item"><b>B.</b> Alternatively, you may load the <i>lettrine</i> package, and use it as described in its own documentation. If <i>lettrine</i> is detected, <i>novel</i> will configure it so that lines remain on grid, and are not pushed down.</p> +<p class="item"><b>C.</b> You may use both <code>\dropcap</code> and <code>\lettrine</code> in the same document, as they are independent, and use different settings.</p> +<p class="item"><b>D.</b> In <i>novel</i>, the <code>\lettrine</code> command does not accept an image. Use <code>\dropcap</code>.</p> +<p class="item"><b>E.</b> Only <i>lettrine</i> offers the rarely-used <i>slope</i> feature.</p> +<p class="item"><b>F.</b> Both <code>\dropcap</code> and <code>\lettrine</code> are incompatible with <code>\FirstLine</code>. If you need to set the entire first line in small caps, you are more likely to be successful using <code>\dropcap</code> as described below.</p> +</div><!-- end F.1 --> + +<h3 id="hF.2">F.2. \dropcap[<em>options</em>]{<em>letter or image</em>}</h3> +<div class="d3" id="dF.2"> +<p class="noindent">To ensure that this command works as described here, verify that font <i>NovelDeco.otf</i> is at least version 1.48. If you use your own <i>deco font</i>, be sure that it is based on at least that version. Also, clear <i>luatex-cache</i> so that the version is updated. If you do not do that, the <code>\dropcap</code> command still works, but the appearance of the result will differ.</p> +<p class="item"><b>A.</b> The <code>\dropcap</code> command is based on <i>lettrine</i> technology, but has different options and behavior.</p> +<p class="item"><b>B.</b> The <code>\dropcap</code> command accepts the following options as <span style="white-space:nowrap">comma-separated</span> key values:</p> +<p class="code"><code>lines=<em>integer</em></code> Number of lines indented by the drop cap. Default 3.</p> +<p class="code"><code>gap=<em>length</em></code> Distance from drop cap to indented text. Default 0.25em. (note 1)</p> +<p class="code"><code>hoffset=<em>length</em></code> Moves drop cap horizontally. Default 0em.</p> +<p class="code"><code>voffset=<em>length</em></code> Moves drop cap vertically. Default 0em.</p> +<p class="code"><code>ante={<em>text</em>}</code> Precedes drop cap with normal text. Default empty. (notes 2,4)</p> +<p class="code"><code>ante*={<em>text</em>}</code> Like <code>ante={<em>text</em>}</code> but auto-hangs text in left margin. (notes 3,4)</p> +<p class="code"><code>scale=<em>number</em></code> Scales drop cap letter (not image). Default 1.</p> +<p class="code"><code>bloat=<em>number</em></code> Horizontally scales drop cap letter (not image). Default 1. (note5)</p> +<p class="code"><code>depth=<em>integer</em></code> Adds blank line(s) beneath drop cap baseline. Default 0. (note 6)</p> +<p><img src="html-resources/dropcap-gap.png" class="floatright" width="82" height="150" title="dropcap gap" alt="dropcap gap"/>• Note 1: The <code>gap</code> is equivalent to <i>lettrine's</i> <code>findent</code>. There is no equivalent to <code>nindent</code> or <code>slope</code>. If you wish to move the first line of text closer to the drop cap, use <code>\kern</code> or <code>\hspace</code> there.</p> +<p>• Note 2: <code>ante</code> is typically used for placing quotation mark before the drop cap. But the authoritative <i style="cursor:help" title="Chicago Manual of Style">CMoS</i> recommends that such an opening mark be omitted, at least in American style. If the mark is placed, it is at normal text font, size, and position (this is the style used).</p> +<p><img src="html-resources/dropcap-antestar.png" class="floatright" width="110" height="102" title="ante*=``" alt="ante*=``"/>• Note 3: <code>ante</code> begins at the margin, and thus pushes the drop cap to the right. With <code>ante*</code> its text hangs in the left margin, so that the drop cap is aligned with the margin. This is visually better, providing that you have enough margin to accomodate the ante text. Setting an <i>unsafe zone</i> may be helpful. See the main documentation.</p> +<p>Example at right: <code>\dropcap[ante*=``]{O}</code></p> +<p>• Note 4: You may use <code>\charscale</code> to manipulate the size and position of ante text. No other styling (such as font or color) may be applied. The ante text will always be black, in the main font. This is standard.</p> +<p><img src="html-resources/dropcap-scalebloat.png" class="floatright" width="98" height="107" title="scale=1.2,bloat=.75" alt="scale=1.2,bloat=.75"/>• Note 5: <code>bloat</code> multiplies <code>scale</code> horizontally. The primary use of <code>bloat</code> is to tweak where the lines break, by making the drop cap slightly narrower or thicker.</p> +<p>Example at right: <code>\dropcap[scale=1.2,bloat=0.75]{O}</code>. The effective vertical scale is 1.2, and the effective horizontal scale is 1.2x0.75=0.8.</p> +<p>• Note 6: If the drop cap character has a prominent descender, then you may need to create room underneath it using <code>depth</code>, or the descender will intrude into the text beneath it. This can only be decided on a per-character basis, depending on the font.</p> +<p class="item"><img src="html-resources/I-shade.png" class="floatright" width="84" height="88" title="dropcap I image" alt="dropcap I image"/><b>C.</b> If the content of the drop cap ends with png, PNG, jpg, JPG, jpeg, or JPEG, it will be interpreted as an image. It will be aligned so that its bottom is at the lowest indented baseline. You may position the image using the <code>hoffset</code> and <code>voffset</code> option keys. The image cannot be scaled by <code>hscale</code> or <code>vscale</code>, because it must be at exact size and resolution. Thus, whether or not the image's top aligns in the desired location, depends on how you created the image.</p> +<p>Example at right: <code>\dropcap[voffset=-0.15em]{I-shade.png}</code>.</p> +<p class="item"><b>D.</b> If <code>lines=1</code>, then <code>\dropcap</code> has no effect. This applies whether or not the command or <code>ante</code> is starred. That is, the following lines of code have the same result:</p> +<p class="code"><code>“It was dark and stormy,” he said.</code></p> +<p class="code"><code>\dropcap[<i>any keys</i>,lines=1,ante*=“]{I}t was dark and stormy,” he said.</code></p> +<p class="item"><b>E.</b> When the drop cap is a letter (not image) without scale, or with <code>scale=1</code>, its top will lie at the capital X-height of main text. This is the most commonly-used style. If the letter has upper diacritical mark, then the mark will be set higher.</p> +</div><!-- end F.2 --> + +<h3 id="hF.3">F.3. \dropcap*[<em>options</em>]{<em>letter</em>} starred version</h3> +<div class="d3" id="dF.3"> +<p class="item"><b>A.</b> <img src="html-resources/Iboxcap.png" class="floatright" width="84" height="191" title="starred dropcap and image" alt="starred dropcap and image"/>In its starred form, <code>\dropcap*</code> will place a rectangular box around the drop cap letter (but not image).</p> +<p class="item"><b>B.</b> If the letter is in the Latin-1 or Latin Extended A character sets, then the box will ignore any upper diacritical mark, so that the mark sits above the box.</p> +<p class="item"><b>C.</b> The boxed letter is a convenient reference frame, in case you wish to create an image of the letter in a graphics program. If you do that, then you will probably need to apply some negative <code>voffset</code> to the image. You may also wish to kern the first line closer to the image.</p> +<p class="item"><b>D.</b> Example: At right, the top section shows a drop cap I with box. This portion of the PDF was imported to a graphics program, and the boxed area was used as template for the image shown in the lower section. Then the image was substituted for the original boxed letter.</p> +</div><!-- end F.3 --> + +<h3 id="hF.4">F.4. Drop Cap Font and Color</h3> +<div class="d3" id="dF.4"> +<p class="item"><b>A.</b> These settings apply to <code>\dropcap</code>, but not <code>\lettrine</code>.</p> +<p class="item"><b>B.</b> The default drop cap font is <i>NovelDeco.otf</i> with its Open Type feature <i>dcap</i>. These glyphs are modeled after the <i>Libertinus Serif Display</i> font, and are specially designed to look good at the enlarged size of drop caps, as well as align with the left margin. Also, characters with prominent descenders (such as Ccedilla) are designed so that the descender, rather than the base letter, sits at the baseline. This avoids the need for <code>depth</code> setting.</p> +<p class="item"><b>C.</b> To change the font used by <code>\dropcap</code>, you must first define one or more font commands in Preamble. For example:</p> +<p class="code"><code>\NewFontFace\mynicedc[<em>features</em>]{font file name}</code></p> +<p>Then, you set the font. This may be changed anywhere:</p> +<p class="code"><code>\SetDropCapFont{\mynicedc}</code></p> +<p class="item"><b>D.</b> Do not use Type1 or Metafont fonts. If the desired font is only available in one of those formats, you can use a font editor such as <a href="https://fontforge.github.io/en-US/" class="external" rel="external" target="new">FontForge</a> to convert it to Open Type or TrueType format. Then, as described above, load the converted file by its exact file name. If the font has mssing extrema, that is almost never a problem. Overlapped hints are rarely a problem. But self-intersecting glyphs and open paths may be a problem, if you use those glyphs.</p> +<p class="item"><b>E.</b> Default drop cap color is black. To change it, use <i>xcolor</i> syntax. Either of these:</p> +<p class="code"><code>\SetDropCapColor[<em>color model</em>]{<em>color value</em>}</code></p> +<p class="code"><code>\SetDropCapColor{<em>color name</em>}</code></p> +<p>Only grayscale may be used.</p> +</div><!-- end F.4 --> + +<h3 id="hF.5">F.5. Drop Cap With First Line Small Caps</h3> +<div class="d3" id="dF.5"> +<p class="item"><b>A.</b> The <code>\FirstLine</code> command does not play well with either <code>\dropcap</code> or <code>\lettrine</code>. This is not a trivial fix.</p> +<p class="item"><b>B.</b> If you require a drop cap to be followed by an entire first line in small caps, Then you must manually code it. You will probably get better results using <code>\dropcap</code> instead of <code>\lettrine</code>. +<p class="item"><b>C.</b> Use <code>\dropcap{letter or image}\textsc{some text} rest of paragraph.</code></p> +<p class="item"><b>D.</b> Guess at how much <code>{some text}</code> needs to be. Compile, look at result, then adjust and try again.</p> +<p class="item"><b>E.</b> It is possible (although unsightly) to end <code>{some text}</code> at a hyphenation point in its final word.</p> +<p class="item"><b>F.</b> Again: There is no known better way to do this.</p> +</div><!-- end F.5 --> + + +</div><!-- end F --> +</div><!-- end Appendix F --> +<!-- ************************************************************ --> + +<!-- Future appendices go here. --> + + +<!-- ************************************************************ --> +<div id="pageY" class="page"> + + +<h2 id="hY">Appendix Y. Licensing and Credits</h2> +<div class="d2" id="dY"> + +<p class="item"><b>A. Licensing:</b> The <i>novel</i> document class, including software, examples, documentation and supporting images, is distributed under the terms of the <a class="external" rel="external" target="new" href="https://www.latex-project.org/lppl/lppl-1-3c/">LaTeX Project Public License, version 1.3c</a>, or (at your option) any later version. Exception: The included fonts <i>NovelDeco.otf</i> and <i>CPmodified.otf</i> are distributed under terms of the <a class="external" rel="external" target="new" href="http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web">SIL Open Font License, v.1.1.</a></p> +<p>To ensure that your book may be sold commercially, be careful to use only fonts that allow commercial usage. That may exclude some of the fonts in the LaTeX font catalog. See <a href="#hC">Appendix C</a>.</p> + +<p class="item"><b>B. Credits:</b> Within the TeX code files, you will find places where small or large pieces of code are the work of someone else. Names or organizations are credited in-place within the TeX code, according to license.</p> +<p>Various clipart graphics were obtained from <a class="external" rel="external" target="new" href="https://openclipart.org">openclipart.org</a>.</p> +<p>Font <i>NovelDeco.otf</i> was created using <a class="external" rel="external" target="new" href="https://fontforge.github.io/en-US/">FontForge</a>. The font is partly derived from <a class="external" rel="external" target="new" href="https://github.com/khaledhosny/libertinus"><span style="white-space:nowrap"><i>Libertinus Serif</i></span></a>, which in turn is derived from <a class="external" rel="external" target="new" href="http://www.linuxlibertine.org/"><span style="white-space:nowrap"><i>Linux Libertine O</i></span></a>.</p> +<p>In places, I offer opinions or make suggestions regarding design. These are largely based on my own inspection of popular fiction books, at my local public library. In some cases, I follow the <a class="external" rel="external" target="new" href="http://www.chicagomanualofstyle.org/home.html"><i>Chicago Manual of Style</i></a> (CMoS), hardcover 16th edition. However, please do not regard my opinions and suggestions as authoritative.</p> +<p> </p> + + +</div><!-- end Y --> +</div><!-- end Appendix Y --> +<!-- ************************************************************ --> +<div id="pageZ" class="page"> + + +<h2 id="hZ">Appendix Z. Changes in v.1.50</h2> +<div class="d2" id="dZ"> + +<p class="noindent">Version 1.50 introduces some new features, and some changes, from version 1.46.2.</p> + +<h4>Post-Release Reversion to Old</h4> +<p>If you have an existing document created with version prior to 1.50, in rare circumstances the layout will change. </p> +<p>If the only change is the number of lines per page, then you can simply fix it manually, using the <code>\SetLinesPerPage</code> command. But if version 1.50 creates problems, you can run the old and new versions side-by-side. Be sure to keep the new version installed.</p> +<p>In the short term, an older version of <i>novel</i> can be found <a href="https://github.com/RobtAll/novel">here</a>, in the archives folder. Be sure that the zip file is named "novel-old".</p> +<p>1) Unpack novel-old.zip into your texmf-local directory.</p> +<p>2) Refresh your file name database.</p> +<p>3) Change your document class from <i>novel</i> to <i>novel-old</i>.</p> +<p>If performed correctly, you will be using version 1.46.2 of <i>novel</i>, when you change the document class to <i>novel-old</i>. To avoid version conflict, be sure that you do not duplicate font <i>NovelDeco.otf</i> in texmf-local; <i>novel-old</i> will rely on the current version installed with <i>novel</i>.</p> +<p>Any document using <i>novel</i> will get the installed version, rather than <i>novel-old</i>.</p> +<p>In the long term, the older version will be removed. No particular time frame. I do not believe that many users (if any) will be affected.</p> +<p>If your existing documents have no problem with version 1.50, then use the newer version.</p> + +<h4>Cover Art Methods Changed</h4> +<p>From version 1.50, the method used for cover art has changed. If you have existing cover artwork using the older syntax, it will still be honored, but it is no longer documented.</p> +<p>The new cover art syntax requires you to pre-process your image using a script, included in the documentation <i>extras</i> folder. The scripts works on Windows or Linux, and are believed to work on OSX (not tested). The processed image will be PDF, separated to CMYK, at 240% ink limit.</p> +<p>To obtain PDF/X, you post-process the above PDF in lualatex, using a template. Complete instructions are in the zip file containing the scripts.</p> +<p>Of course, you don't need to use TeX at all, if your print service accepts an ordinary RGB image.</p> + +<h4>New Class Option: sandbox</h4> +<p><i>Novel</i> does not permit things such as TikZ diagams, tables (other than its own method), imported PDf pages, and some other TeX effects. The purpose of the prohibition is to maintain grid layout, and ensure PDF/X compliance.</p> +<p>From version 1.50, the <code>sandbox</code> class option allows you to do nearly anything, provided that the result is no more than four pages. Then, you can create drawings or whatever, convert to raster images, and place the images in your main document.</p> + +<h4>\BlockImage Obsolete</h4> +<p>From version 1.50 the \BlockImage command is obsolete. It was never a very good macro. If you have an existing document that uses \BlockImage, it will be honored, but it is no longer documented.</p> +<p>You may prefer the new <code>\FloatImage</code> and <code>\WrapImage</code> commands.</p> + +<h4>\FloatImage Added</h4> +<p>Better than <code>\BlockImage</code>: Version 1.50 now has <code>\FloatImage</code>, which can place an image "here" or float it to the next page, if it doesn't immdiately fit. Full-page floats are supported. See the full documentation, above.</p> +<p>The <code>\InlineImage</code> command remains unchanged, and will probably remain forever. It's a good macro.</p> + +<h4>\WrapImage Added</h4> +<p>The new <code>\WrapImage</code> command provides limited support for wrapping text around an image. It is all you need in the context of fiction writing.</p> +<p>The <i>wrapfig</i> package is automatically loaded, and provides the layout engine. However, do not directly use the commands and environments from that package (they won't work). Instead, <i>novel</i> provides macro <code>\WrapImage</code>, which will format your input so that it can be processed correctly.</p> + +<h4>Drop Caps Added</h4> +<p>As before, you may use the <i>lettrine</i> package, if you wish. From version 1.50, <i>novel</i> now has built-in support for a certain style of drop caps, as a special interface to the <i>lettrine</i> layout engine.</p> +<p>Since the new <code>\dropcap</code> command requires an updated version of the <i>NovelDeco.otf</i> font, be sure to update your <span style="white-space:nowrap">luatex-cache</span>.</p> + +<h4>\Rework Obsolete</h4> +<p>From its early days, <i>novel</i> had an exotic built-in method for preserving layout if your book's Trim Size changed. It was a complicated piece of code, and even though it worked, it was inherently incapable of addressing some layout situations.</p> +<p>In version 1.46.1 it was quietly removed from the documentation. In the short term, existing documents that rely on <code>\Rework</code> commands will still compile. In the long term, forget it. To my knowledge, nobody is using it.</p> + +<h4>Class Option <i>graytext</i> Obsolete</h4> +<p>Formerly, you could use a class option to specify whether or not the use of grayscale text (anything other than solid black) was permitted. There was never any good reason for having that choice, so it has been removed. Now, you can always use grayscale text, if you wish.</p> + +<h4>\SetCropmarkGap Obsolete</h4> +<p>Formerly, there was a minimal ability to configure crop marks. It was not very useful, and made the code more complex. Now, the size of cropmarks is fixed.</p> + +<h4>New Error Messages for Endnotes</h4> +<p>Prior to version 1.50, incorrect use of <code>\endnote</code> commands would simply produce bad typesetting, without warning.</p> +<p>New error messages have been added. If you use <code>\endnote</code>, and get error messages that did not appear before, then be sure to read the command documentation again. The most likely reason for error is that you are using the commands according to the syntax of some other package, rather than using <i>novel's</i> own syntax.</p> + +<h4>New Algorithm for Layout Calculations</h4> +<p>Under the hood, version 1.50 uses a more accurate method for page layout. In most cases, the change is microscopic, and will not affect existing documents.</p> +<p>Books that use widely-spaced lines are most likely to show a noticeable change for the better. In a few cases, the default number of lines per page will change. If you have an existing document using default lines per page, and it has changed, then simply specify the exact number manually.</p> + +<h4>Revised Documentation Format</h4> +<p>This documentation has been slightly revised. Now, long sections are broken down into items, marked A, B, etc. This is for the convenience of translators.</p> +<p>Under the hood, in the TeX code, there has been some cleanup, for the benefit of future package maintainers.</p> + +<h4>What's Unchanged</h4> +<p>Most of <i>novel</i> is just as before, and will be...</p> +<p>In particular, there is no support for tables (other than novel's own Table of Contents), no support for automatic divisions into sections and other kinds of partitions, no support for automatic index or bibliography, and generally no support for the "academic" structure used by other document classes.</p> + + +</div><!-- end Z --> +</div><!-- end Appendix Z --> +<!-- ************************************************************ --> diff --git a/Master/texmf-dist/doc/lualatex/novel/novel.pdf b/Master/texmf-dist/doc/lualatex/novel/novel.pdf index 6344727d8bf..bbedbba49cf 100644 --- a/Master/texmf-dist/doc/lualatex/novel/novel.pdf +++ b/Master/texmf-dist/doc/lualatex/novel/novel.pdf @@ -9,10 +9,10 @@ stream <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/"> - <xmp:ModifyDate>2018-01-12T15:29:52-08:00</xmp:ModifyDate> - <xmp:CreateDate>2018-01-12T15:29:52-08:00</xmp:CreateDate> + <xmp:ModifyDate>2018-03-27T10:03:28-07:00</xmp:ModifyDate> + <xmp:CreateDate>2018-03-27T10:03:28-07:00</xmp:CreateDate> <xmp:CreatorTool>LuaLaTeX with novel and microtype</xmp:CreatorTool> - <xmp:MetadataDate>2018-01-12T15:29:52-08:00</xmp:MetadataDate> + <xmp:MetadataDate>2018-03-27T10:03:28-07:00</xmp:MetadataDate> </rdf:Description> <rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/"> @@ -26,7 +26,7 @@ stream <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"> <xmpMM:DocumentID>uuid:A12D98E081B6A0EC2CBA2D468474F922</xmpMM:DocumentID> - <xmpMM:InstanceID>uuid:2430AB7E0B2722BE01A2C97DE8DB3BCF</xmpMM:InstanceID> + <xmpMM:InstanceID>uuid:E7B46DD459CE0D8CF604A60EBA7E555F</xmpMM:InstanceID> <xmpMM:RenditionClass>default</xmpMM:RenditionClass> <xmpMM:VersionID>1</xmpMM:VersionID> </rdf:Description> @@ -125,58 +125,62 @@ stream endstream endobj 7 0 obj -<</Length 8238 >> +<</Length 8268 >> stream 0 g 0 G +0 g 0 G +0 g 0 G BT -/F56 18.17191 Tf 1 0 0 1 178.388 537.015 Tm [<002F0030>-37<00370026002D>]TJ -/F56 13.62884 Tf 1 0 0 1 105.124 503.725 Tm [<0022>-250<00250050>-7<00440056004E0046004F0055>-250<0024004D004200540054>-250<004700500053>-250<005500490046>-250<0033004600540055>-250<00500047>-250<00360054>]TJ +/F57 18.17191 Tf 1 0 0 1 178.388 537.016 Tm [<002F0030>-37<00370026002D>]TJ +/F57 13.62884 Tf 1 0 0 1 105.124 503.728 Tm [<0022>-250<00250050>-7<00440056004E0046004F0055>-250<0024004D004200540054>-250<004700500053>-250<005500490046>-250<0033004600540055>-250<00500047>-250<00360054>]TJ ET -1 0 0 1 161.57 477.093 cm +1 0 0 1 161.57 477.098 cm q 4 0 0 4 0 0 cm -1 0 0 1 -161.57 -477.093 cm +1 0 0 1 -161.57 -477.098 cm BT -/F58 11.3574 Tf 1 0 0 1 161.57 477.093 Tm [<0176>]TJ +/F59 11.3574 Tf 1 0 0 1 161.57 477.098 Tm [<0176>]TJ ET -1 0 0 1 161.57 477.093 cm +1 0 0 1 161.57 477.098 cm Q -1 0 0 1 -161.57 -477.093 cm +1 0 0 1 -161.57 -477.098 cm BT -/F59 11.3574 Tf 1 0 0 1 53.432 446.295 Tm [<0038004900460053>5<0046>-250<004A0054>-249<005500490046>-250<00450050>-7<00440056004E0046004F005500420055004A0050004F00200020>]TJ -/F56 11.3574 Tf 1.017 0 0 1 203.432 446.295 Tm [<002A0055>-245<004A0054>-246<004A004F>-246<0029>-36<0035002E002D>-246<004700500053004E00420055000D>-246<0042004F0045>-246<00440042004F004F00500055>]TJ -1 0 0 1 54 431.499 Tm [<0043>-10<0046>-249<0053>7<004600550053004A0046>7<0057>8<0046>-6<0045>-249<0057004A0042>]TJ -/F60 11.3574 Tf 1 0 0 1 128.745 431.499 Tm [<00550046>7<005900450050>-7<0044>]TJ -/F56 11.3574 Tf 1 0 0 1 157.229 431.499 Tm [<000F>-333<002A0047>-249<005A>7<00500056>-248<004900420057>7<0046>-248<00550049004A0054>-249<005100420044004C004200480046>-249<004A004F005400550042004D004D0046>-7<0045000D>-249<004D0050>-7<0050004C>-249<004700500053>]TJ -0.996 0 0 1 53.659 416.704 Tm [<000900550046>7<00590053>8<0050>-7<00500055000A001000450050>-7<00440010004D00560042004D004200550046>7<00590010004F0050>7<0057>8<0046004D0010004F0050>7<0057>8<0046004D000E00450050>-6<00440056004E0046004F005500420055004A0050004F000F00490055004E004D000F>-341<002A0047>-253<005A>7<00500056>-252<00420053>7<0046>]TJ -0.98 0 0 1 54 401.909 Tm [<0050004F004D004A004F0046>10<000D>-248<00480050>-247<00550050>-247<005500490046>-247<00240035>49<0022002F>-247<0051004200480046>-247<00420055>-247<00490A1D00510054001B00100010004400550042004F000F00500053004800100051004C00480010004F0050>6<0057>9<0046004D>-247<0042004F0045>-247<0044004D004A0044004C>]TJ -1 0 0 1 53.148 387.113 Tm [<06E0003100420044004C004200480046>-250<00250050>-7<00440056004E0046004F005500420055004A0050004F>-250<00090029>-37<0035002E002D000A000F>122<06E1>]TJ -/F59 11.3574 Tf 1 0 0 1 54 357.522 Tm [<0025>-5<0046005400440053004A00510055004A0050004F001B>]TJ -/F56 11.3574 Tf 1.02 0 0 1 117.818 357.522 Tm [<09AB0046>]TJ -/F60 11.3574 Tf 1.02 0 0 1 138.758 357.522 Tm [<004F0050>6<0057>8<0046004D>]TJ -/F56 11.3574 Tf 1.02 0 0 1 167.321 357.522 Tm [<00450050>-6<00440056004E0046004F0055>-313<0044004D004200540054>-313<004A0054>-312<004700500053>-313<00580053004A0055004600530054>-312<00500047>-313<00500053004A0048004A004F0042004D>]TJ -0.98 0 0 1 54 342.727 Tm [<098B00440055004A0050004F000D>-245<00550050>-244<0043>-10<0046>-243<00510053004A004F00550046>-7<0045>-244<00550050>-243<005100420051>-7<00460053>59<000D>-245<0058004A00550049>-243<00420A1D0046004F0055004A0050004F>-243<00550050>-244<005500490046>-243<0053>7<0046>-6<00520056004A0053>7<0046004E0046004F00550054>-242<00500047>]TJ -0.995 0 0 1 54 327.932 Tm [<005500490046>-249<00510053004A004F0055000E0050004F000E00450046004E0042004F0045>-250<004E00420053004C00460055000F>-335<002F0050004F000E00440050004D00500053>-249<004A004F005500460053004A005000530054>-250<0042004F0045>-250<00440050004D00500053>-250<00440050>6<0057>8<004600530054>]TJ +/F60 11.3574 Tf 1 0 0 1 53.432 446.286 Tm [<0038004900460053>5<0046>-250<004A0054>-249<005500490046>-250<00450050>-7<00440056004E0046004F005500420055004A0050004F00200020>]TJ +/F57 11.3574 Tf 1.017 0 0 1 203.432 446.286 Tm [<002A0055>-245<004A0054>-246<004A004F>-246<0029>-36<0035002E002D>-246<004700500053004E00420055000D>-246<0042004F0045>-246<00440042004F004F00500055>]TJ +1 0 0 1 54 431.492 Tm [<0043>-10<0046>-249<0053>7<004600550053004A0046>7<0057>8<0046>-6<0045>-249<0057004A0042>]TJ +/F61 11.3574 Tf 1 0 0 1 128.745 431.492 Tm [<00550046>7<005900450050>-7<0044>]TJ +/F57 11.3574 Tf 1 0 0 1 157.229 431.492 Tm [<000F>-333<002A0047>-249<005A>7<00500056>-248<004900420057>7<0046>-248<00550049004A0054>-249<005100420044004C004200480046>-249<004A004F005400550042004D004D0046>-7<0045000D>-249<004D0050>-7<0050004C>-249<004700500053>]TJ +0.996 0 0 1 53.659 416.697 Tm [<000900550046>7<00590053>8<0050>-7<00500055000A001000450050>-7<00440010004D00560042004D004200550046>7<00590010004F0050>7<0057>8<0046004D0010004F0050>7<0057>8<0046004D000E00450050>-6<00440056004E0046004F005500420055004A0050004F000F00490055004E004D000F>-341<002A0047>-253<005A>7<00500056>-252<00420053>7<0046>]TJ +0.98 0 0 1 54 401.903 Tm [<0050004F004D004A004F0046>10<000D>-248<00480050>-247<00550050>-247<005500490046>-247<00240035>49<0022002F>-247<0051004200480046>-247<00420055>-247<00490A1D00510054001B00100010004400550042004F000F00500053004800100051004C00480010004F0050>6<0057>9<0046004D>-247<0042004F0045>-247<0044004D004A0044004C>]TJ +1 0 0 1 53.148 387.108 Tm [<06E0003100420044004C004200480046>-250<00250050>-7<00440056004E0046004F005500420055004A0050004F>-250<00090029>-37<0035002E002D000A000F>122<06E1>]TJ +/F60 11.3574 Tf 1 0 0 1 54 357.519 Tm [<0025>-5<0046005400440053004A00510055004A0050004F001B>]TJ +/F57 11.3574 Tf 1.02 0 0 1 117.818 357.519 Tm [<09AB0046>]TJ +/F61 11.3574 Tf 1.02 0 0 1 138.758 357.519 Tm [<004F0050>6<0057>8<0046004D>]TJ +/F57 11.3574 Tf 1.02 0 0 1 167.321 357.519 Tm [<00450050>-6<00440056004E0046004F0055>-313<0044004D004200540054>-313<004A0054>-312<004700500053>-313<00580053004A0055004600530054>-312<00500047>-313<00500053004A0048004A004F0042004D>]TJ +0.98 0 0 1 54 342.725 Tm [<098B00440055004A0050004F000D>-245<00550050>-244<0043>-10<0046>-243<00510053004A004F00550046>-7<0045>-244<00550050>-243<005100420051>-7<00460053>59<000D>-245<0058004A00550049>-243<00420A1D0046004F0055004A0050004F>-243<00550050>-244<005500490046>-243<0053>7<0046>-6<00520056004A0053>7<0046004E0046004F00550054>-242<00500047>]TJ +0.995 0 0 1 54 327.93 Tm [<005500490046>-249<00510053004A004F0055000E0050004F000E00450046004E0042004F0045>-250<004E00420053004C00460055000F>-335<002F0050004F000E00440050004D00500053>-249<004A004F005500460053004A005000530054>-250<0042004F0045>-250<00440050004D00500053>-250<00440050>6<0057>8<004600530054>]TJ 1.02 0 0 1 54 313.136 Tm [<00420053>7<0046>-293<0054005600510051>-7<0050005300550046>-7<0045000F>-474<002A004E0042004800460054>-295<00420053>7<0046>-293<0054005600510051>-7<0050005300550046>-7<0045000D>-306<004300560055>-295<0050004F004D005A>-294<00420054>-294<005500490046>6<005A>-294<004E004A004800490055>-294<0043>-10<0046>]TJ 1 0 0 1 54 298.341 Tm [<005600540046>-7<0045>-250<004A004F>-250<098B00440055004A0050004F000D>-250<004F00500055>-250<0051004A0044005500560053>8<0046>-250<0043>-10<0050>-7<0050004C0054000F>]TJ -0.98 0 0 1 71.036 283.546 Tm [<002A0047>-226<005A>8<005000560053>-226<0058>8<00500053004C>-226<004A0054>-226<0042004F>-226<0026000E0043>-10<0050>-7<0050004C000D>-232<00500053>-226<0056005400460054>-226<004A004F005500460053004A00500053>-226<00440050004D00500053>-226<00500055004900460053>-227<005500490042004F>-226<004800530042005A>60<000D>]TJ -1 0 0 1 54 268.75 Tm [<00500053>-250<004A0054>-250<00420044004200450046004E004A0044000D>-250<005500490046004F>-250<00550049004A0054>-250<00450050>-7<00440056004E0046004F0055>-250<0044004D004200540054>-250<004A0054>-250<004F00500055>-250<004700500053>-250<005A>8<00500056000F>]TJ -1 0 0 1 71.036 253.955 Tm [<002300560055>-250<004A0047>-250<005A>7<00500056>-250<00420053>7<0046>-249<00580053004A0055004A004F0048>-250<0042>-251<0045004600550046>-7<00440055004A0057>7<0046>-249<004F0050>6<0057>8<0046004D000D>-250<00500053>-250<00540044004A0046004F00440046>-250<098B00440055004A0050004F000D>-251<00500053>-250<0042>]TJ -1 0 0 1 54 239.16 Tm [<00440050004D004D0046>-7<00440055004A0050004F>-250<00500047>-250<00540049005000530055>-250<0054005500500053004A00460054000D>-250<005500490046004F>-250<0053>8<004600420045>-250<0050004F0002>]TJ -/F56 13.62884 Tf 1 0 0 1 54 213.658 Tm [<0012000F>-333<002700460042005500560053>7<00460054>]TJ -/F56 11.3574 Tf 1.02 0 0 1 54 194.773 Tm [<09AB0053>7<0050005600480049005000560055000D>-334<004A0055>-318<004A0054>-317<0042005400540056004E0046>-7<0045>-318<0055004900420055>-317<005500490046>-318<0051005600530051>-6<005000540046>-318<00500047>-317<005A>7<005000560053>-317<00580053004A0055004A004F0048>-318<004A0054>-317<0042>]TJ -1 0 0 1 54 179.978 Tm [<00440050004E004E00460053>8<0044004A0042004D004D005A>-250<00510053004A004F00550046>-7<0045>-250<0043>-10<0050>-7<0050004C>-250<00500047>-250<098B00440055004A0050004F000F>]TJ -0.98 0 0 1 71.036 165.183 Tm [<0022>-244<004F0046>6<0058>]TJ -/F60 11.3574 Tf 0.98 0 0 1 103.452 165.183 Tm [<004F0050>7<0057>8<0046004D>]TJ -/F56 11.3574 Tf 0.98 0 0 1 130.156 165.183 Tm [<004A0054>-244<00510053>7<0046000E00440050004F098B004800560053>9<0046>-7<0045>-244<00550050>-244<00510053>7<0050>-6<0045005600440046>-244<0042>-245<005400550042004F004500420053>8<0045>-244<00550053004200450046>-244<0043>-10<0050>-7<0050004C>]TJ -1.003 0 0 1 54 150.387 Tm [<0054004A005B0046>-249<00500047>-249<0A25000F0A25004A004F>-249<0038>-249<0059>-249<0A28000F0A25004A004F>-249<0029000D>-250<0058004A00550049>-249<004D0042005A>7<005000560055>-248<004E004200530048004A004F0054>-249<0055004900420055>-249<00420053>7<0046>-248<004D004A004C0046004D005A>-250<00550050>-249<0043>-10<0046>]TJ -0.998 0 0 1 54 135.592 Tm [<00420044004400460051005500420043004D0046>-249<00550050>-249<005500490046>-250<004E005000540055>-249<0058004A00450046004D005A000E005600540046>-7<0045>-249<00510053004A004F0055>-250<005400460053>-15<0057004A004400460054000F>-333<09AB0046>-250<098B004D0046>-249<005A>7<00500056>-248<00420053>7<0046>]TJ -0.98 0 0 1 54 120.797 Tm [<004F0050>7<0058>-203<0053>8<004600420045004A004F0048>-202<004A0054>-204<004A004F>-203<00550049004A0054>-203<004700500053004E00420055000F>-323<002300560055>-203<004A0047>-203<0055004900420055>-203<004A0054>-203<004F00500055>-203<005500490046>-203<0054004A005B0046>-203<00500053>-203<004D0042005A>7<005000560055>-202<005A>7<00500056>]TJ -0.986 0 0 1 53.58 106.001 Tm [<00580042004F0055000D>-252<005500490046004F>-253<0055004900460053>8<0046>-252<00420053>7<0046>-251<00440050004E004E0042004F00450054>-252<0055004900420055>-253<00440050004F098B004800560053>7<0046>-251<004B005600540055>-252<00420043>-11<005000560055>-252<0042004F005A00550049004A004F0048000D>]TJ -1.02 0 0 1 54 91.206 Tm [<00560054004A004F0048>-243<005400550042004F004500420053>7<0045>-243<005500460053004E004A004F0050004D00500048005A>-244<0042004F0045>-243<0056004F004500460053005400550042004F004500420043004D0046>-244<0051005600530051>-7<005000540046>9<000F>-325<0023004600540055>-244<00500047>]TJ -0.984 0 0 1 54 76.411 Tm [<0042004D004D000D>-253<005500490046>-253<0029>-38<0035002E002D>-253<00450050>-7<00440056004E0046004F005500420055004A0050004F>-254<00440050004E00460054>-253<0058004A00550049>-253<004A004E0042004800460054>-254<0042004F0045>-253<0046>6<00590042004E0051004D00460054000D>-252<00540050>]TJ -1 0 0 1 54 61.615 Tm [<005A>8<00500056>-250<004C004F0050>7<0058>-250<0058004900420055>-250<005A>8<00500056>-250<00420053>8<0046>-250<00450050004A004F0048000F>]TJ -/F56 10.44878 Tf 1 0 0 1 204.571 39.407 Tm [<0012>]TJ +0.98 0 0 1 71.036 283.547 Tm [<002A0047>-226<005A>8<005000560053>-226<0058>8<00500053004C>-226<004A0054>-226<0042004F>-226<0026000E0043>-10<0050>-7<0050004C000D>-232<00500053>-226<0056005400460054>-226<004A004F005500460053004A00500053>-226<00440050004D00500053>-226<00500055004900460053>-227<005500490042004F>-226<004800530042005A>60<000D>]TJ +1 0 0 1 54 268.752 Tm [<00500053>-250<004A0054>-250<00420044004200450046004E004A0044000D>-250<005500490046004F>-250<00550049004A0054>-250<00450050>-7<00440056004E0046004F0055>-250<0044004D004200540054>-250<004A0054>-250<004F00500055>-250<004700500053>-250<005A>8<00500056000F>]TJ +1 0 0 1 71.036 253.958 Tm [<002300560055>-250<004A0047>-250<005A>7<00500056>-250<00420053>7<0046>-249<00580053004A0055004A004F0048>-250<0042>-251<0045004600550046>-7<00440055004A0057>7<0046>-249<004F0050>6<0057>8<0046004D000D>-250<00500053>-250<00540044004A0046004F00440046>-250<098B00440055004A0050004F000D>-251<00500053>-250<0042>]TJ +1 0 0 1 54 239.163 Tm [<00440050004D004D0046>-7<00440055004A0050004F>-250<00500047>-250<00540049005000530055>-250<0054005500500053004A00460054000D>-250<005500490046004F>-250<0053>8<004600420045>-250<0050004F0002>]TJ +/F57 13.62884 Tf 1 0 0 1 54 213.663 Tm [<0012000F>-333<002700460042005500560053>7<00460054>]TJ +/F57 11.3574 Tf 1.02 0 0 1 54 194.779 Tm [<09AB0053>7<0050005600480049005000560055000D>-334<004A0055>-318<004A0054>-317<0042005400540056004E0046>-7<0045>-318<0055004900420055>-317<005500490046>-318<0051005600530051>-6<005000540046>-318<00500047>-317<005A>7<005000560053>-317<00580053004A0055004A004F0048>-318<004A0054>-317<0042>]TJ +1 0 0 1 54 179.985 Tm [<00440050004E004E00460053>8<0044004A0042004D004D005A>-250<00510053004A004F00550046>-7<0045>-250<0043>-10<0050>-7<0050004C>-250<00500047>-250<098B00440055004A0050004F000F>]TJ +0.98 0 0 1 71.036 165.19 Tm [<0022>-244<004F0046>6<0058>]TJ +/F61 11.3574 Tf 0.98 0 0 1 103.452 165.19 Tm [<004F0050>7<0057>8<0046004D>]TJ +/F57 11.3574 Tf 0.98 0 0 1 130.156 165.19 Tm [<004A0054>-244<00510053>7<0046000E00440050004F098B004800560053>9<0046>-7<0045>-244<00550050>-244<00510053>7<0050>-6<0045005600440046>-244<0042>-245<005400550042004F004500420053>8<0045>-244<00550053004200450046>-244<0043>-10<0050>-7<0050004C>]TJ +1.003 0 0 1 54 150.396 Tm [<0054004A005B0046>-249<00500047>-249<0A25000F0A25004A004F>-249<0038>-249<0059>-249<0A28000F0A25004A004F>-249<0029000D>-250<0058004A00550049>-249<004D0042005A>7<005000560055>-248<004E004200530048004A004F0054>-249<0055004900420055>-249<00420053>7<0046>-248<004D004A004C0046004D005A>-250<00550050>-249<0043>-10<0046>]TJ +0.998 0 0 1 54 135.601 Tm [<00420044004400460051005500420043004D0046>-249<00550050>-249<005500490046>-250<004E005000540055>-249<0058004A00450046004D005A000E005600540046>-7<0045>-249<00510053004A004F0055>-250<005400460053>-15<0057004A004400460054000F>-333<09AB0046>-250<098B004D0046>-249<005A>7<00500056>-248<00420053>7<0046>]TJ +0.98 0 0 1 54 120.807 Tm [<004F0050>7<0058>-203<0053>8<004600420045004A004F0048>-202<004A0054>-204<004A004F>-203<00550049004A0054>-203<004700500053004E00420055000F>-323<002300560055>-203<004A0047>-203<0055004900420055>-203<004A0054>-203<004F00500055>-203<005500490046>-203<0054004A005B0046>-203<00500053>-203<004D0042005A>7<005000560055>-202<005A>7<00500056>]TJ +0.986 0 0 1 53.58 106.012 Tm [<00580042004F0055000D>-252<005500490046004F>-253<0055004900460053>8<0046>-252<00420053>7<0046>-251<00440050004E004E0042004F00450054>-252<0055004900420055>-253<00440050004F098B004800560053>7<0046>-251<004B005600540055>-252<00420043>-11<005000560055>-252<0042004F005A00550049004A004F0048000D>]TJ +1.02 0 0 1 54 91.218 Tm [<00560054004A004F0048>-243<005400550042004F004500420053>7<0045>-243<005500460053004E004A004F0050004D00500048005A>-244<0042004F0045>-243<0056004F004500460053005400550042004F004500420043004D0046>-244<0051005600530051>-7<005000540046>9<000F>-325<0023004600540055>-244<00500047>]TJ +0.984 0 0 1 54 76.423 Tm [<0042004D004D000D>-253<005500490046>-253<0029>-38<0035002E002D>-253<00450050>-7<00440056004E0046004F005500420055004A0050004F>-254<00440050004E00460054>-253<0058004A00550049>-253<004A004E0042004800460054>-254<0042004F0045>-253<0046>6<00590042004E0051004D00460054000D>-252<00540050>]TJ +1 0 0 1 54 61.629 Tm [<005A>8<00500056>-250<004C004F0050>7<0058>-250<0058004900420055>-250<005A>8<00500056>-250<00420053>8<0046>-250<00450050004A004F0048000F>]TJ +0 g 0 G +/F57 10.44878 Tf 1 0 0 1 204.571 39.437 Tm [<0012>]TJ +0 g 0 G ET endstream @@ -187,48 +191,53 @@ endobj /TrimBox[0 0 396 612]/Parent 12 0 R>> endobj 5 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font<</F56 8 0 R/F58 9 0 R/F59 10 0 R/F60 11 0 R>>/ProcSet[/PDF/Text]>> +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font<</F57 8 0 R/F59 9 0 R/F60 10 0 R/F61 11 0 R>>/ProcSet[/PDF/Text]>> endobj 15 0 obj -<</Length 7793 >> +<</Length 8096 >> stream +0 g 0 G +0 g 0 G BT -/F56 11.3574 Tf 1.02 0 0 1 53.036 564.643 Tm [<0022004D004E005000540055>-285<0046>6<0057>8<00460053>-14<005A00550049004A004F0048>-286<004A0054>-286<00510053>7<0046000E00440050004F098B004800560053>8<0046>-6<0045>-286<00550050>-285<06E0004B005600540055>-286<0058>7<00500053004C000D>120<06E1>-295<0046>6<0057>7<0046004F>-284<005500490046>]TJ -0.997 0 0 1 36 549.847 Tm [<004400490050004A00440046>-250<00500047>-251<00470050004F00550054000F>-335<09AB0046>-251<00440049005000540046004F>-250<00440050004E0051004A004D00460053>-251<004A0054>-251<002D00560042002D00420035>62<00460039000D>-250<0042004F0045>-251<00300051>-7<0046004F>-251<0035>49<005A0051>-6<0046>]TJ -1.02 0 0 1 36 535.052 Tm [<00470050004F00550054>-254<00420053>7<0046>-253<004D0050004200450046>-7<0045>-254<00560054004A004F0048>]TJ -/F60 11.3574 Tf 1.02 0 0 1 143.404 535.052 Tm [<00470050004F005500540051>-6<0046>-7<0044>]TJ -/F56 11.3574 Tf 1.02 0 0 1 184.399 535.052 Tm [<00550046>-6<00440049004F0050004D00500048005A>57<000F>-353<002A0047>-254<005A>7<00500056>-254<00510053>7<0046004700460053>-253<00550050>-254<005600540046>-254<0042>]TJ -1 0 0 1 36 520.257 Tm [<00510053>8<00500047004600540054004A0050004F0042004D>-250<00470050004F0055000D>-250<004A0055>-250<0058004A004D004D>-250<0043>-10<0046>-250<004600420054005A>-250<00550050>-250<004D005000420045>-250<0042004F0045>-250<005600540046>-250<004A004F>-250<005600550047000E0A28000F>]TJ -1.02 0 0 1 53.036 505.461 Tm [<002E0042004F005A>-339<005400550042004F004500420053>7<0045>-338<002D00420035>60<00460039>-338<00440050004E004E0042004F00450054>-339<00420053>7<0046>-339<0045004A005400420043004D0046>-7<0045000F>-609<09AB004A0054>-339<0058004A004D004D>-340<0043>-9<0046>]TJ -0.98 0 0 1 36 490.666 Tm [<00540056005300510053004A0054004A004F0048>-227<00420055>-228<098B005300540055000F>-331<002300560055>]TJ -/F60 11.3574 Tf 0.98 0 0 1 138.827 490.666 Tm [<004F0050>7<0057>8<0046004D>]TJ -/F56 11.3574 Tf 0.98 0 0 1 165.349 490.666 Tm [<004A0054>-227<00470050>-8<0044005600540046>-7<0045>-227<0050004F>-228<0050004F0046>-228<00550049004A004F0048>-228<0050004F004D005A>59<000F>-330<0022004F005A00550049004A004F0048>]TJ -0.986 0 0 1 36 475.87 Tm [<0055004900420055>-254<004E004A004800490055>-254<004A004F005500460053004700460053>7<0046>-254<0058004A00550049>-254<0055004900420055>-254<0051005600530051>-7<005000540046>-255<004E0042005A>-254<004900420057>7<0046>-254<0043>-10<0046>-7<0046004F>-254<00550050005400540046>-7<0045>-255<00420054004A00450046>10<000F>]TJ -0.98 0 0 1 36 461.075 Tm [<00340050>10<000D>-231<0043>-10<0046>-226<005400560053>7<0046>-224<0055004900420055>-226<005A>7<00500056>-225<0053>8<004600420045>-225<005500490046>-226<00450050>-7<00440056004E0046004F005500420055004A0050004F0002>-331<002A0047>-225<005A>7<00500056>-225<00550042004C0046>-226<0042004F>-225<0046>6<0059004A00540055004A004F0048>]TJ -0.98 0 0 1 36 446.28 Tm [<002D00420035>64<00460039>-173<00450050>-8<00440056004E0046004F0055>-174<0042004F0045>-174<004B005600540055>-174<004400490042004F00480046>-175<005500490046>-174<0044004D004200540054>-174<00550050>]TJ -/F60 11.3574 Tf 0.98 0 0 1 237.08 446.28 Tm [<004F0050>7<0057>8<0046004D000D>]TJ -/F56 11.3574 Tf 0.98 0 0 1 264.884 446.28 Tm [<004A0055>-174<004A0054>-174<0057>7<00460053>-14<005A>-175<0056004F004D004A004C0046004D005A>]TJ -1 0 0 1 36 431.484 Tm [<00550050>-250<0058>8<00500053004C>-250<00420054>-250<0046>7<00590051>-7<0046>-7<004400550046>-7<0045000F>]TJ -1.02 0 0 1 53.036 416.689 Tm [<002E0042004F005A>-273<004F0046>6<0058>-274<00440050004E004E0042004F00450054>-273<00420053>7<0046>-273<00510053>6<0050>7<0057004A00450046>-6<0045000F>-413<09AB0046>6<005A>-273<00420053>7<0046>-273<00470050>-7<0044005600540046>-7<0045>-274<0050004F>-273<005500490046>]TJ -0.98 0 0 1 36 401.894 Tm [<004F0046>-7<0046>-7<00450054>-239<00500047>-240<00510053004A004F0055>-240<098B00440055004A0050004F>-239<00580053004A0055004600530054000D>-243<0051>-7<00460053004A0050>-7<0045000F>-335<0022004F0045000D>]TJ -/F60 11.3574 Tf 0.98 0 0 1 231.129 401.894 Tm [<004F0050>7<0057>8<0046004D>]TJ -/F56 11.3574 Tf 0.98 0 0 1 257.782 401.894 Tm [<004900420054>-239<00430056004A004D0055000E004A004F>-240<00310025002700100039>]TJ -0.98 0 0 1 36 387.098 Tm [<00550046>-7<00440049004F0050004D00500048005A>-185<0055004900420055>-186<0046>6<005900440046>-6<0046>-7<00450054>-186<005500490046>-185<00440042005100420043004A004D004A0055004A00460054>-186<0044005600530053>7<0046004F0055004D005A>-184<004200570042004A004D00420043004D0046>-186<0057004A0042>-186<00500055004900460053>]TJ -1 0 0 1 36 372.303 Tm [<002D00420035>63<00460039>-250<005100420044004C0042004800460054000F>]TJ -/F56 13.62884 Tf 1 0 0 1 36 346.801 Tm [<0013000F>-333<00240050004E0051004D004600550046>-250<00250050>-7<00440056004E0046004F005500420055004A0050004F>]TJ -/F56 11.3574 Tf 1.012 0 0 1 35.455 327.917 Tm [<0038004900420055>-246<005A>7<00500056>-245<00420053>7<0046>-246<0053>7<004600420045004A004F0048>-245<004F0050>6<0058>58<000D>-246<004A0054>-246<0050004F004D005A>-246<0042004F>-247<004A004F00550053>7<0050>-6<0045005600440055004A0050004F000F>-329<09AB0046>-246<00440050004E0051004D004600550046>]TJ -0.98 0 0 1 36 313.121 Tm [<00450050>-7<00440056004E0046004F005500420055004A0050004F>-223<004A0054>-224<004A004F>-223<0029>-38<0035002E002D>-224<004700500053004E00420055000D>-230<0045004A0053>8<0046>-7<00440055004D005A>-223<00580053004A0A1D0046004F>-224<004A004F>-223<0029>-38<0035002E002D>-224<005300420055004900460053>]TJ -0.98 0 0 1 36 298.326 Tm [<005500490042004F>-183<0046>6<0059005500530042004400550046>-6<0045>-184<00470053>7<0050004E>-183<00440050>-7<00450046>10<000F>-316<09AB00460053>7<0046>-183<00420053>8<0046>-183<004F0056004E00460053>7<005000560054>-183<0046>7<00590042004E0051004D00460054>-183<0042004F0045>-184<004A004E0042004800460054000D>]TJ -1 0 0 1 36 283.531 Tm [<00550050>-7<0050>-250<0045004600550042004A004D0046>-7<0045>-250<00550050>-250<0043>-10<0046>-250<00510053>8<004600540046004F00550046>-7<0045>-250<00420054>-250<003100250027>24<000F>]TJ -/F56 13.62884 Tf 1 0 0 1 36 258.029 Tm [<0014000F>-333<002D004A00440046004F00540046>]TJ -/F56 11.3574 Tf 1.02 0 0 1 36 239.145 Tm [<09AB0046>-331<002D00420035>61<00460039>-330<00440050>-7<00450046>9<000D>-352<0042004F0045>-331<0042004400440050004E00510042004F005A004A004F0048>-331<00450050>-7<00440056004E0046004F005500420055004A0050004F000D>-353<004A0054>-331<0053>7<0046004D0046004200540046>-6<0045>]TJ -1 0 0 1 36 224.349 Tm [<0056004F004500460053>-250<005500490046>-250<002D0042005500460039>-250<00310053>8<0050004B0046>-7<00440055>-250<003100560043004D004A0044>-250<002D004A00440046004F00540046>10<000D>-250<0057>8<004600530054004A0050004F>-250<0A21000F0A230044>-250<00500053>-250<004D0042005500460053>59<000F>]TJ -0.983 0 0 1 53.036 209.554 Tm [<09AB0046>-255<00440050004E00510042004F004A0050004F>-255<00470050004F00550009>11<0054000A>-254<004A00540009>11<00420053>8<0046000A>-254<004D004A00440046004F00540046>-7<0045>-255<0056004F004500460053>-256<005500490046>-255<0034002A002D>-255<00300051>-7<0046004F>-255<00270050004F0055>]TJ -1 0 0 1 36 194.759 Tm [<002D004A00440046004F00540046>10<000D>-250<0057>8<004600530054004A0050004F>-250<0A21000F0A21000F>]TJ -/F56 13.62884 Tf 1 0 0 1 36 169.257 Tm [<0015000F>-333<0037>79<004600530054004A0050004F>]TJ -/F56 11.3574 Tf 1 0 0 1 36 150.372 Tm [<0A21000F0A240A26000F0A22000D>-250<0A220A200A210A28000E0A200A21000E0A210A24001B>-333<002E004A004F00500053>-250<004A004E00510053>7<0050>7<0057>8<0046004E0046004F00550054>-249<0054004A004F00440046>-250<0054005500420043004D0046>-250<0057>7<004600530054004A0050004F>-249<0A21000F0A240A26000F>]TJ -1 0 0 1 36 135.577 Tm [<0A21000F0A21000D>-250<0A220A200A210A27000E0A200A23000E0A200A21001B>-333<004A004F004A0055004A0042004D>-250<005100560043004D004A0044>-250<0053>7<0046004D0046004200540046>10<000F>]TJ -/F56 10.44878 Tf 1 0 0 1 186.571 39.407 Tm [<0013>]TJ +/F57 11.3574 Tf 1.02 0 0 1 53.036 564.643 Tm [<0022004D004E005000540055>-285<0046>6<0057>8<00460053>-14<005A00550049004A004F0048>-286<004A0054>-286<00510053>7<0046000E00440050004F098B004800560053>8<0046>-6<0045>-286<00550050>-285<06E0004B005600540055>-286<0058>7<00500053004C000D>120<06E1>-295<0046>6<0057>7<0046004F>-284<005500490046>]TJ +0.997 0 0 1 36 549.848 Tm [<004400490050004A00440046>-250<00500047>-251<00470050004F00550054000F>-335<09AB0046>-251<00440049005000540046004F>-250<00440050004E0051004A004D00460053>-251<004A0054>-251<002D00560042002D00420035>62<00460039000D>-250<0042004F0045>-251<00300051>-7<0046004F>-251<0035>49<005A0051>-6<0046>]TJ +1.02 0 0 1 36 535.054 Tm [<00470050004F00550054>-254<00420053>7<0046>-253<004D0050004200450046>-7<0045>-254<00560054004A004F0048>]TJ +/F61 11.3574 Tf 1.02 0 0 1 143.404 535.054 Tm [<00470050004F005500540051>-6<0046>-7<0044>]TJ +/F57 11.3574 Tf 1.02 0 0 1 184.399 535.054 Tm [<00550046>-6<00440049004F0050004D00500048005A>57<000F>-353<002A0047>-254<005A>7<00500056>-254<00510053>7<0046004700460053>-253<00550050>-254<005600540046>-254<0042>]TJ +1 0 0 1 36 520.259 Tm [<00510053>8<00500047004600540054004A0050004F0042004D>-250<00470050004F0055000D>-250<004A0055>-250<0058004A004D004D>-250<0043>-10<0046>-250<004600420054005A>-250<00550050>-250<004D005000420045>-250<0042004F0045>-250<005600540046>-250<004A004F>-250<005600550047000E0A28000F>]TJ +1.02 0 0 1 53.036 505.465 Tm [<002E0042004F005A>-339<005400550042004F004500420053>7<0045>-338<002D00420035>60<00460039>-338<00440050004E004E0042004F00450054>-339<00420053>7<0046>-339<0045004A005400420043004D0046>-7<0045000F>-609<09AB004A0054>-339<0058004A004D004D>-340<0043>-9<0046>]TJ +0.98 0 0 1 36 490.67 Tm [<00540056005300510053004A0054004A004F0048>-227<00420055>-228<098B005300540055000F>-331<002300560055>]TJ +/F61 11.3574 Tf 0.98 0 0 1 138.827 490.67 Tm [<004F0050>7<0057>8<0046004D>]TJ +/F57 11.3574 Tf 0.98 0 0 1 165.349 490.67 Tm [<004A0054>-227<00470050>-8<0044005600540046>-7<0045>-227<0050004F>-228<0050004F0046>-228<00550049004A004F0048>-228<0050004F004D005A>59<000F>-330<0022004F005A00550049004A004F0048>]TJ +0.986 0 0 1 36 475.875 Tm [<0055004900420055>-254<004E004A004800490055>-254<004A004F005500460053004700460053>7<0046>-254<0058004A00550049>-254<0055004900420055>-254<0051005600530051>-7<005000540046>-255<004E0042005A>-254<004900420057>7<0046>-254<0043>-10<0046>-7<0046004F>-254<00550050005400540046>-7<0045>-255<00420054004A00450046>10<000F>]TJ +0.98 0 0 1 36 461.081 Tm [<00340050>10<000D>-231<0043>-10<0046>-226<005400560053>7<0046>-224<0055004900420055>-226<005A>7<00500056>-225<0053>8<004600420045>-225<005500490046>-226<00450050>-7<00440056004E0046004F005500420055004A0050004F0002>-331<002A0047>-225<005A>7<00500056>-225<00550042004C0046>-226<0042004F>-225<0046>6<0059004A00540055004A004F0048>]TJ +0.98 0 0 1 36 446.286 Tm [<002D00420035>64<00460039>-173<00450050>-8<00440056004E0046004F0055>-174<0042004F0045>-174<004B005600540055>-174<004400490042004F00480046>-175<005500490046>-174<0044004D004200540054>-174<00550050>]TJ +/F61 11.3574 Tf 0.98 0 0 1 237.08 446.286 Tm [<004F0050>7<0057>8<0046004D000D>]TJ +/F57 11.3574 Tf 0.98 0 0 1 264.884 446.286 Tm [<004A0055>-174<004A0054>-174<0057>7<00460053>-14<005A>-175<0056004F004D004A004C0046004D005A>]TJ +1 0 0 1 36 431.492 Tm [<00550050>-250<0058>8<00500053004C>-250<00420054>-250<0046>7<00590051>-7<0046>-7<004400550046>-7<0045000F>]TJ +1.02 0 0 1 53.036 416.697 Tm [<002E0042004F005A>-273<004F0046>6<0058>-274<00440050004E004E0042004F00450054>-273<00420053>7<0046>-273<00510053>6<0050>7<0057004A00450046>-6<0045000F>-413<09AB0046>6<005A>-273<00420053>7<0046>-273<00470050>-7<0044005600540046>-7<0045>-274<0050004F>-273<005500490046>]TJ +0.98 0 0 1 36 401.903 Tm [<004F0046>-7<0046>-7<00450054>-239<00500047>-240<00510053004A004F0055>-240<098B00440055004A0050004F>-239<00580053004A0055004600530054000D>-243<0051>-7<00460053004A0050>-7<0045000F>-335<0022004F0045000D>]TJ +/F61 11.3574 Tf 0.98 0 0 1 231.129 401.903 Tm [<004F0050>7<0057>8<0046004D>]TJ +/F57 11.3574 Tf 0.98 0 0 1 257.782 401.903 Tm [<004900420054>-239<00430056004A004D0055000E004A004F>-240<00310025002700100039>]TJ +0.98 0 0 1 36 387.108 Tm [<00550046>-7<00440049004F0050004D00500048005A>-185<0055004900420055>-186<0046>6<005900440046>-6<0046>-7<00450054>-186<005500490046>-185<00440042005100420043004A004D004A0055004A00460054>-186<0044005600530053>7<0046004F0055004D005A>-184<004200570042004A004D00420043004D0046>-186<0057004A0042>-186<00500055004900460053>]TJ +1 0 0 1 36 372.314 Tm [<002D00420035>63<00460039>-250<005100420044004C0042004800460054000F>]TJ +/F57 13.62884 Tf 1 0 0 1 36 346.813 Tm [<0013000F>-333<00240050004E0051004D004600550046>-250<00250050>-7<00440056004E0046004F005500420055004A0050004F>]TJ +/F57 11.3574 Tf 1.012 0 0 1 35.455 327.93 Tm [<0038004900420055>-246<005A>7<00500056>-245<00420053>7<0046>-246<0053>7<004600420045004A004F0048>-245<004F0050>6<0058>58<000D>-246<004A0054>-246<0050004F004D005A>-246<0042004F>-247<004A004F00550053>7<0050>-6<0045005600440055004A0050004F000F>-329<09AB0046>-246<00440050004E0051004D004600550046>]TJ +0.98 0 0 1 36 313.136 Tm [<00450050>-7<00440056004E0046004F005500420055004A0050004F>-223<004A0054>-224<004A004F>-223<0029>-38<0035002E002D>-224<004700500053004E00420055000D>-230<0045004A0053>8<0046>-7<00440055004D005A>-223<00580053004A0A1D0046004F>-224<004A004F>-223<0029>-38<0035002E002D>-224<005300420055004900460053>]TJ +0.98 0 0 1 36 298.341 Tm [<005500490042004F>-183<0046>6<0059005500530042004400550046>-6<0045>-184<00470053>7<0050004E>-183<00440050>-7<00450046>10<000F>-316<09AB00460053>7<0046>-183<00420053>8<0046>-183<004F0056004E00460053>7<005000560054>-183<0046>7<00590042004E0051004D00460054>-183<0042004F0045>-184<004A004E0042004800460054000D>]TJ +1 0 0 1 36 283.547 Tm [<00550050>-7<0050>-250<0045004600550042004A004D0046>-7<0045>-250<00550050>-250<0043>-10<0046>-250<00510053>8<004600540046004F00550046>-7<0045>-250<00420054>-250<003100250027>24<000F>]TJ +/F57 13.62884 Tf 1 0 0 1 36 258.046 Tm [<0014000F>-333<002D004A00440046004F00540046>]TJ +/F57 11.3574 Tf 1.02 0 0 1 36 239.163 Tm [<09AB0046>-331<002D00420035>61<00460039>-330<00440050>-7<00450046>9<000D>-352<0042004F0045>-331<0042004400440050004E00510042004F005A004A004F0048>-331<00450050>-7<00440056004E0046004F005500420055004A0050004F000D>-353<004A0054>-331<0053>7<0046004D0046004200540046>-6<0045>]TJ +1 0 0 1 36 224.369 Tm [<0056004F004500460053>-250<005500490046>-250<002D0042005500460039>-250<00310053>8<0050004B0046>-7<00440055>-250<003100560043004D004A0044>-250<002D004A00440046004F00540046>10<000D>-250<0057>8<004600530054004A0050004F>-250<0A21000F0A230044>-250<00500053>-250<004D0042005500460053>59<000F>]TJ +0.983 0 0 1 53.036 209.574 Tm [<09AB0046>-255<00440050004E00510042004F004A0050004F>-255<00470050004F00550009>11<0054000A>-254<004A00540009>11<00420053>8<0046000A>-254<004D004A00440046004F00540046>-7<0045>-255<0056004F004500460053>-256<005500490046>-255<0034002A002D>-255<00300051>-7<0046004F>-255<00270050004F0055>]TJ +1 0 0 1 36 194.779 Tm [<002D004A00440046004F00540046>10<000D>-250<0057>8<004600530054004A0050004F>-250<0A21000F0A21000F>]TJ +/F57 13.62884 Tf 1 0 0 1 36 169.279 Tm [<0015000F>-333<0037>79<004600530054004A0050004F>]TJ +/F57 11.3574 Tf 1 0 0 1 36 150.396 Tm [<0A21000F0A250A20000D>-250<0A220A200A210A28000E0A200A23000E0A220A28001B>-333<002A004E00510053>7<0050>7<0057>8<0046>-6<0045>-250<004A004E004200480046>-250<00490042004F0045004D004A004F0048>-250<00440050004E004E0042004F00450054000D>-250<00540042004F00450043>-10<0050>6<0059000F>]TJ +1 0 0 1 36 135.601 Tm [<0A21000F0A240A26000F0A22000D>-250<0A220A200A210A28000E0A200A21000E0A210A24001B>-333<0034005500420043004D0046>-250<06E1>23<0050004D004506E1>-249<0057>7<004600530054004A0050004F000F>-332<003600540046>-250<004F0046>6<0058>8<00460053>-249<0A21000F0A250A20000F>]TJ +1 0 0 1 36 120.807 Tm [<0A21000F0A21000D>-250<0A220A200A210A27000E0A200A23000E0A200A21001B>-333<004A004F004A0055004A0042004D>-250<005100560043004D004A0044>-250<0053>7<0046004D0046004200540046>10<000F>]TJ +0 g 0 G +/F57 10.44878 Tf 1 0 0 1 186.571 39.437 Tm [<0013>]TJ +0 g 0 G ET endstream @@ -239,49 +248,77 @@ endobj /TrimBox[0 0 396 612]/Parent 12 0 R>> endobj 13 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font<</F56 8 0 R/F60 11 0 R>>/ProcSet[/PDF/Text]>> +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font<</F57 8 0 R/F61 11 0 R>>/ProcSet[/PDF/Text]>> endobj 18 0 obj -<</Length 8428 >> +<</Length 8573 >> stream +0 g 0 G +0 g 0 G BT -/F56 13.62884 Tf 1 0 0 1 54 553.936 Tm [<0016000F>-333<0027>58<0022>34<00320054>]TJ -/F56 11.3574 Tf 1 0 0 1 54 535.052 Tm [<0032>29<000F>-607<00240042004F>-250<00550049004A0054>-250<00450050>-7<00440056004E0046004F0055>-250<0044004D004200540054>-250<0043>-10<0046>-250<005600540046>-7<0045>-250<004700500053>-250<0026000E0043>-10<0050>-7<0050004C00540020>]TJ -1 0 0 1 54 520.257 Tm [<0022000F>]TJ -0.997 0 0 1 71.036 520.257 Tm [<002F0050>10<000F>-334<0022004F0045000D>-250<0055004900420055>-250<004700460042005500560053>7<0046>-249<0058004A004D004D>-250<004F0046>6<0057>8<00460053>-249<0043>-10<0046>-250<0042004500450046>-7<0045000D>-251<00420054>-250<005500490046>-250<00550046>-7<00440049004F0050004D00500048005A>-250<004A0054>]TJ -1 0 0 1 71.036 505.461 Tm [<004A004F004900460053>8<0046004F0055004D005A>-250<004A004F00440050004E005100420055004A0043004D0046>10<000F>-333<0022>-250<0058>7<00500053>8<0045>-249<00510053>7<0050>-6<004400460054005400500053>-250<004A0054>-250<005A>7<005000560053>-249<00470053004A0046004F0045000F>]TJ -1 0 0 1 54 490.666 Tm [<0032>29<000F>-607<0038004900420055>-250<0049004200510051>-7<0046004F0046>-7<0045>-250<00550050>-250<098C0050004200550054>-250<0042004F0045>-250<004D004A0054005500540020>]TJ -1 0 0 1 54 475.87 Tm [<0022000F>-585<002A06DD0057>8<0046>-250<004F0046>7<0057>8<00460053>-250<00540046>-7<0046004F>-250<005500490046004E>-250<004A004F>-250<0042>-250<004F0050>7<0057>8<0046004D000F>-333<00340050>9<000D>-249<005500490046>6<005A>-249<0058>7<00460053>8<0046>-249<00550050005400540046>-7<0045>-250<005000560055000F>]TJ -1 0 0 1 54 461.075 Tm [<0032>29<000F>-607<002E005A>-250<0055004900460054004A0054>-250<004200450057004A005400500053>-250<00550050004D0045>-250<004E004606D8>]TJ -1 0 0 1 54 446.28 Tm [<0022000F>]TJ -1.02 0 0 1 71.036 446.28 Tm [<0034005500500051>-323<0053004A004800490055>-323<0055004900460053>6<0046>10<000F>-561<09AB004A0054>-323<00450050>-7<00440056004E0046004F0055>-323<0044004D004200540054>-324<004A0054>-323<0057>7<00460053>-14<005A>-324<0045004A098A00460053>7<0046004F0055>-322<00470053>7<0050004E>]TJ -1 0 0 1 71.036 431.484 Tm [<0042004F005A00550049004A004F0048>-250<005600540046>-7<0045>-250<004700500053>-250<005500490046005400460054>-250<0042004F0045>-250<00500055004900460053>-250<00420044004200450046004E004A0044>-250<005100560043004D004A004400420055004A0050004F0054000F>]TJ -1 0 0 1 54 416.689 Tm [<0032>29<000F>-607<002A0047>-250<002A>-250<005600540046>-250<0035004A004C003B>-250<004700500053>-250<00270046>7<005A004F004E0042004F>-250<0045004A0042004800530042004E0054000D>-250<005500490046004F06D8>]TJ -1 0 0 1 54 401.894 Tm [<0022000F>-585<00280050>-250<004200580042005A>59<000F>]TJ -1 0 0 1 54 387.098 Tm [<0032>29<000F>-607<002900420054>-250<00550049004A0054>-250<00450050>-7<00440056004E0046004F0055>-250<0044004D004200540054>-250<0046>7<0057>8<00460053>-250<0043>-10<0046>-7<0046004F>-250<005600540046>-7<0045>-250<004700500053>-250<0042004F>-250<00420044005500560042004D>-250<004F0050>7<0057>8<0046004D0020>]TJ -1 0 0 1 54 372.303 Tm [<0022000F>]TJ -1.02 0 0 1 71.036 372.303 Tm [<003A>69<00460054>-290<004A004F00450046>-7<0046>-7<00450002>-465<002A004F>-291<0022>32<00560048005600540055>-290<0A220A200A210A27>-292<005500490046>-291<004200560055004900500053>-291<005100560043004D004A005400490046>-7<0045>-291<0042>-291<00440050004E0051004D004600550046>]TJ -0.98 0 0 1 71.036 357.508 Tm [<004F0050>7<0057>8<0046004D000D>-253<004A004F0044004D00560045004A004F0048>-253<004A00550054>-253<00440050>6<0057>8<00460053>60<000D>-252<00560054004A004F0048>-253<00550049004A0054>-254<00450050>-7<00440056004E0046004F0055>-253<0044004D004200540054000F>-339<0022004D004E005000540055>-254<0042004D004D>]TJ -0.999 0 0 1 71.036 342.712 Tm [<00500047>-250<005500490046>-250<00540046005500560051>-251<005600540046>-7<0045>-250<00450046004700420056004D00550054000F>-335<09AB0046>-250<098B004D00460054>-251<000900550046>7<005900550043004D0050>-7<0044004C>-250<0042004F0045>-250<00440050>6<0057>8<00460053>17<000A>-250<0058>7<00460053>8<0046>]TJ -0.98 0 0 1 71.036 327.917 Tm [<005400560043004E004A0A1D0046>-7<0045>-254<00550050>-253<0042>-254<004E0042004B00500053>-254<0022004E00460053004A00440042004F>-254<0031>24<000F>10<0030>30<000F0025>29<000F>-253<005400460053>-15<0057004A00440046>-254<004A004F>]TJ -/F56 11.3574 Tf 0.98 0 0 1 293.018 327.917 Tm [<00310025002700100039>24<000E00120042001B0013001100110012>]TJ -/F56 11.3574 Tf 1.02 0 0 1 71.036 313.121 Tm [<004700500053004E00420055000D>-261<005500490046004F>-258<0046004D0046>-7<004400550053>7<0050004F004A00440042004D004D005A>-258<0053>7<0046>7<0057004A0046>7<0058>8<0046>-6<0045>-258<0042004F0045>-259<0042004400440046005100550046>-7<0045>]TJ -/F60 11.3574 Tf 1.02 0 0 1 310.307 313.121 Tm [<0050004F>-258<005500490046>-258<0848005300540055>]TJ -1.02 0 0 1 71.036 298.326 Tm [<004208680046004E00510055000F>]TJ -/F56 11.3574 Tf 1.02 0 0 1 115.343 298.326 Tm [<0022>-313<00510053004A004F00550046>-7<0045>-314<004400500051>6<005A>-314<005800420054>-314<004A004F>-314<005500490046>-314<00420056005500490050005306DD0054>-314<00490042004F00450054>-314<0058004A00550049004A004F>-314<0042>]TJ -1 0 0 1 70.616 283.531 Tm [<0058>8<0046>-7<0046004C000F>-333<002B005600540055>-250<004D004A004C0046>-250<0055004900420055000F>-333<0035>62<0050>-6<0050004C>-250<004E0050004F005500490054>-250<00550050>-250<00580053004A00550046>9<000D>-249<00500047>-250<004400500056005300540046>9<000F>]TJ -1 0 0 1 88.072 268.735 Tm [<00360051>-7<0045004200550046001B>-333<0022004F00500055004900460053>-250<004200560055004900500053>-250<0053>7<00460051>-6<0050005300550054>-250<0054005600440044004600540054000F>]TJ -1 0 0 1 54 253.94 Tm [<0032>29<000F>]TJ -1.009 0 0 1 71.036 253.94 Tm [<003800490046004F>-247<002A>-247<0058>7<0050004C0046>-247<00560051>-247<00550049004A0054>-248<004E00500053004F004A004F0048000D>-247<004E005A>-247<0049004600420045>-248<00470046004D0055>-247<004D004A004C0046>-248<0042>-247<00550050>-7<00450045004D00460053>-247<004900420045>]TJ -1.011 0 0 1 71.036 239.145 Tm [<0043>-9<0046>-7<0046004F>-248<0051>-6<00500056004F0045004A004F0048>-248<004A0055>-247<004A004F>-247<0042>-247<00540042004F00450043>-10<0050>6<0059000F>-329<002A>-247<0053>7<0050004D004D0046>-6<0045>-247<0050>6<0057>8<00460053>-246<0042004F0045>-247<004D0050>-7<0050004C0046>-7<0045>-247<00420055>-248<005500490046>]TJ -0.98 0 0 1 71.036 224.349 Tm [<004E00560048>-234<0054004900500055>-234<0050004F>-235<005500490046>-234<00580042004D004D000F>-333<002A0055>-235<005800420054>-234<0042>-234<0058>7<0050004E0042004F>-234<004A004F>-234<004900460053>-234<0047005000530055004A00460054>-235<0058004A00550049>-234<0042>-235<0045005300560048>]TJ -1.02 0 0 1 71.036 209.554 Tm [<004900420043004A0055>-266<0055004900420055>-265<005800420054>-266<004300420045000D>-272<0042004F0045>-266<0042004F>-266<00420A1D004A0055005600450046>-266<0055004900420055>-265<005800420054>-266<0046>6<0057>7<0046004F>-265<0058>7<0050005300540046>10<000F>-388<003400490046>]TJ -0.98 0 0 1 71.036 194.759 Tm [<004900420045>-232<00540046>-7<0046004F>-233<0043>-10<00460A1D00460053>-233<00450042005A0054000D>-237<004D004A004C0046>-232<005500490046>-233<0055004A004E0046>-232<002A>-233<00550050>-7<0050004C>-232<004900460053>-233<00550050>-232<005500490046>-233<0046004A0048004900550049>-233<00480053004200450046>]TJ -1.02 0 0 1 71.036 179.963 Tm [<00540050>-6<0044004C>-249<004900500051>9<000F>-337<09AB0046004F>-249<002A>-249<004800500055>-248<00560051>9<000D>-249<00580042005400490046>-7<0045000D>-250<0042004F0045>-248<004500530042004800480046>-7<0045>-249<004E005A>-249<004D0050004F0046004D005A>-248<004300560A1D>]TJ -0.98 0 0 1 71.036 165.168 Tm [<00450050>7<0058004F>-240<00550050>-242<005500490046>-241<0050004F0046000E004E0042004F>-241<0045004600550046>-7<00440055004A0057>7<0046>-240<004200480046004F0044005A>-241<0055004900420055>-241<002A>-241<004B0050004C004A004F0048004D005A>-241<00440042004D004D0046>-7<0045>-241<004E005A>]TJ -1 0 0 1 71.036 150.372 Tm [<004E00460042004F0054>-250<00500047>-250<004D004A0057004A004F0048000F>-333<003A>70<00500056>-249<004C004F0050>6<0058>-249<0058004900420055>-250<002A>-250<004E00460042004F0020>]TJ -1 0 0 1 54 135.577 Tm [<0022000F>-585<003A>71<004600420049000F>-333<00340055004A0044004C>-250<0058004A00550049>-250<004E0046>9<000D>-249<004C004A0045000F>-333<09AB004A0054>-250<00450050>-7<00440056004E0046004F0055>-250<0044004D004200540054>-250<004A0054>-250<004700500053>-250<005A>7<00500056000F>]TJ -/F56 10.44878 Tf 1 0 0 1 204.571 39.407 Tm [<0014>]TJ +/F57 13.62884 Tf 1 0 0 1 54 553.937 Tm [<0016000F>-333<0027>58<0022>34<00320054>]TJ +0 g 0 G +0 g 0 G +/F57 11.3574 Tf 1 0 0 1 54 535.054 Tm [<0032>29<000F>-607<00240042004F>-250<00550049004A0054>-250<00450050>-7<00440056004E0046004F0055>-250<0044004D004200540054>-250<0043>-10<0046>-250<005600540046>-7<0045>-250<004700500053>-250<0026000E0043>-10<0050>-7<0050004C00540020>]TJ +0 g 0 G +0 g 0 G +1 0 0 1 54 520.259 Tm [<0022000F>]TJ +0.997 0 0 1 71.036 520.259 Tm [<002F0050>10<000F>-334<0022004F0045000D>-250<0055004900420055>-250<004700460042005500560053>7<0046>-249<0058004A004D004D>-250<004F0046>6<0057>8<00460053>-249<0043>-10<0046>-250<0042004500450046>-7<0045000D>-251<00420054>-250<005500490046>-250<00550046>-7<00440049004F0050004D00500048005A>-250<004A0054>]TJ +1 0 0 1 71.036 505.465 Tm [<004A004F004900460053>8<0046004F0055004D005A>-250<004A004F00440050004E005100420055004A0043004D0046>10<000F>-333<0022>-250<0058>7<00500053>8<0045>-249<00510053>7<0050>-6<004400460054005400500053>-250<004A0054>-250<005A>7<005000560053>-249<00470053004A0046004F0045000F>]TJ +0 g 0 G +0 g 0 G +1 0 0 1 54 490.67 Tm [<0032>29<000F>-607<0038004900420055>-250<0049004200510051>-7<0046004F0046>-7<0045>-250<00550050>-250<098C0050004200550054>-250<0042004F0045>-250<004D004A0054005500540020>]TJ +0 g 0 G +0 g 0 G +1 0 0 1 54 475.875 Tm [<0022000F>-585<003600540046>-250<005500490046>-250<004F0046>7<0058>-250<004A004E004200480046>-250<00440050004E004E0042004F00450054000D>-250<00500053>-250<00540042004F00450043>-10<0050>7<0059>-250<004E0050>-7<00450046>10<000F>]TJ +0 g 0 G +0 g 0 G +1 0 0 1 54 461.081 Tm [<0032>29<000F>-607<002E005A>-250<0055004900460054004A0054>-250<004200450057004A005400500053>-250<00550050004D0045>-250<004E004606D8>]TJ +0 g 0 G +0 g 0 G +1 0 0 1 54 446.286 Tm [<0022000F>]TJ +1.02 0 0 1 71.036 446.286 Tm [<0034005500500051>-323<0053004A004800490055>-323<0055004900460053>6<0046>10<000F>-561<09AB004A0054>-323<00450050>-7<00440056004E0046004F0055>-323<0044004D004200540054>-324<004A0054>-323<0057>7<00460053>-14<005A>-324<0045004A098A00460053>7<0046004F0055>-322<00470053>7<0050004E>]TJ +1 0 0 1 71.036 431.492 Tm [<0042004F005A00550049004A004F0048>-250<005600540046>-7<0045>-250<004700500053>-250<005500490046005400460054>-250<0042004F0045>-250<00500055004900460053>-250<00420044004200450046004E004A0044>-250<005100560043004D004A004400420055004A0050004F0054000F>]TJ +0 g 0 G +0 g 0 G +1 0 0 1 54 416.697 Tm [<0032>29<000F>-607<002A0047>-250<002A>-250<005600540046>-250<0035004A004C003B>-250<004700500053>-250<00270046>7<005A004F004E0042004F>-250<0045004A0042004800530042004E0054000D>-250<005500490046004F06D8>]TJ +0 g 0 G +0 g 0 G +1 0 0 1 54 401.903 Tm [<0022000F>-585<00280050>-250<004200580042005A>59<000F>]TJ +0 g 0 G +0 g 0 G +1 0 0 1 54 387.108 Tm [<0032>29<000F>-607<002900420054>-250<00550049004A0054>-250<00450050>-7<00440056004E0046004F0055>-250<0044004D004200540054>-250<0046>7<0057>8<00460053>-250<0043>-10<0046>-7<0046004F>-250<005600540046>-7<0045>-250<004700500053>-250<0042004F>-250<00420044005500560042004D>-250<004F0050>7<0057>8<0046004D0020>]TJ +0 g 0 G +0 g 0 G +1 0 0 1 54 372.314 Tm [<0022000F>]TJ +1.02 0 0 1 71.036 372.314 Tm [<003A>69<00460054>-290<004A004F00450046>-7<0046>-7<00450002>-465<002A004F>-291<0022>32<00560048005600540055>-290<0A220A200A210A27>-292<005500490046>-291<004200560055004900500053>-291<005100560043004D004A005400490046>-7<0045>-291<0042>-291<00440050004E0051004D004600550046>]TJ +0.98 0 0 1 71.036 357.519 Tm [<004F0050>7<0057>8<0046004D000D>-253<004A004F0044004D00560045004A004F0048>-253<004A00550054>-253<00440050>6<0057>8<00460053>60<000D>-252<00560054004A004F0048>-253<00550049004A0054>-254<00450050>-7<00440056004E0046004F0055>-253<0044004D004200540054000F>-339<0022004D004E005000540055>-254<0042004D004D>]TJ +0.999 0 0 1 71.036 342.725 Tm [<00500047>-250<005500490046>-250<00540046005500560051>-251<005600540046>-7<0045>-250<00450046004700420056004D00550054000F>-335<09AB0046>-250<098B004D00460054>-251<000900550046>7<005900550043004D0050>-7<0044004C>-250<0042004F0045>-250<00440050>6<0057>8<00460053>17<000A>-250<0058>7<00460053>8<0046>]TJ +0.98 0 0 1 71.036 327.93 Tm [<005400560043004E004A0A1D0046>-7<0045>-254<00550050>-253<0042>-254<004E0042004B00500053>-254<0022004E00460053004A00440042004F>-254<0031>24<000F>10<0030>30<000F0025>29<000F>-253<005400460053>-15<0057004A00440046>-254<004A004F>]TJ +/F57 11.3574 Tf 0.98 0 0 1 293.018 327.93 Tm [<00310025002700100039>24<000E00120042001B0013001100110012>]TJ +/F57 11.3574 Tf 1.02 0 0 1 71.036 313.136 Tm [<004700500053004E00420055000D>-261<005500490046004F>-258<0046004D0046>-7<004400550053>7<0050004F004A00440042004D004D005A>-258<0053>7<0046>7<0057004A0046>7<0058>8<0046>-6<0045>-258<0042004F0045>-259<0042004400440046005100550046>-7<0045>]TJ +/F61 11.3574 Tf 1.02 0 0 1 310.307 313.136 Tm [<0050004F>-258<005500490046>-258<0848005300540055>]TJ +1.02 0 0 1 71.036 298.341 Tm [<004208680046004E00510055000F>]TJ +/F57 11.3574 Tf 1.02 0 0 1 115.343 298.341 Tm [<0022>-313<00510053004A004F00550046>-7<0045>-314<004400500051>6<005A>-314<005800420054>-314<004A004F>-314<005500490046>-314<00420056005500490050005306DD0054>-314<00490042004F00450054>-314<0058004A00550049004A004F>-314<0042>]TJ +1 0 0 1 70.616 283.547 Tm [<0058>8<0046>-7<0046004C000F>-333<002B005600540055>-250<004D004A004C0046>-250<0055004900420055000F>-333<0035>62<0050>-6<0050004C>-250<004E0050004F005500490054>-250<00550050>-250<00580053004A00550046>9<000D>-249<00500047>-250<004400500056005300540046>9<000F>]TJ +1 0 0 1 88.072 268.752 Tm [<00360051>-7<0045004200550046001B>-333<0022004F00500055004900460053>-250<004200560055004900500053>-250<0053>7<00460051>-6<0050005300550054>-250<0054005600440044004600540054000F>]TJ +0 g 0 G +0 g 0 G +1 0 0 1 54 253.958 Tm [<0032>29<000F>]TJ +1.009 0 0 1 71.036 253.958 Tm [<003800490046004F>-247<002A>-247<0058>7<0050004C0046>-247<00560051>-247<00550049004A0054>-248<004E00500053004F004A004F0048000D>-247<004E005A>-247<0049004600420045>-248<00470046004D0055>-247<004D004A004C0046>-248<0042>-247<00550050>-7<00450045004D00460053>-247<004900420045>]TJ +1.011 0 0 1 71.036 239.163 Tm [<0043>-9<0046>-7<0046004F>-248<0051>-6<00500056004F0045004A004F0048>-248<004A0055>-247<004A004F>-247<0042>-247<00540042004F00450043>-10<0050>6<0059000F>-329<002A>-247<0053>7<0050004D004D0046>-6<0045>-247<0050>6<0057>8<00460053>-246<0042004F0045>-247<004D0050>-7<0050004C0046>-7<0045>-247<00420055>-248<005500490046>]TJ +0.98 0 0 1 71.036 224.369 Tm [<004E00560048>-234<0054004900500055>-234<0050004F>-235<005500490046>-234<00580042004D004D000F>-333<002A0055>-235<005800420054>-234<0042>-234<0058>7<0050004E0042004F>-234<004A004F>-234<004900460053>-234<0047005000530055004A00460054>-235<0058004A00550049>-234<0042>-235<0045005300560048>]TJ +1.02 0 0 1 71.036 209.574 Tm [<004900420043004A0055>-266<0055004900420055>-265<005800420054>-266<004300420045000D>-272<0042004F0045>-266<0042004F>-266<00420A1D004A0055005600450046>-266<0055004900420055>-265<005800420054>-266<0046>6<0057>7<0046004F>-265<0058>7<0050005300540046>10<000F>-388<003400490046>]TJ +0.98 0 0 1 71.036 194.779 Tm [<004900420045>-232<00540046>-7<0046004F>-233<0043>-10<00460A1D00460053>-233<00450042005A0054000D>-237<004D004A004C0046>-232<005500490046>-233<0055004A004E0046>-232<002A>-233<00550050>-7<0050004C>-232<004900460053>-233<00550050>-232<005500490046>-233<0046004A0048004900550049>-233<00480053004200450046>]TJ +1.02 0 0 1 71.036 179.985 Tm [<00540050>-6<0044004C>-249<004900500051>9<000F>-337<09AB0046004F>-249<002A>-249<004800500055>-248<00560051>9<000D>-249<00580042005400490046>-7<0045000D>-250<0042004F0045>-248<004500530042004800480046>-7<0045>-249<004E005A>-249<004D0050004F0046004D005A>-248<004300560A1D>]TJ +0.98 0 0 1 71.036 165.19 Tm [<00450050>7<0058004F>-240<00550050>-242<005500490046>-241<0050004F0046000E004E0042004F>-241<0045004600550046>-7<00440055004A0057>7<0046>-240<004200480046004F0044005A>-241<0055004900420055>-241<002A>-241<004B0050004C004A004F0048004D005A>-241<00440042004D004D0046>-7<0045>-241<004E005A>]TJ +1 0 0 1 71.036 150.396 Tm [<004E00460042004F0054>-250<00500047>-250<004D004A0057004A004F0048000F>-333<003A>70<00500056>-249<004C004F0050>6<0058>-249<0058004900420055>-250<002A>-250<004E00460042004F0020>]TJ +0 g 0 G +0 g 0 G +1 0 0 1 54 135.601 Tm [<0022000F>-585<003A>71<004600420049000F>-333<00340055004A0044004C>-250<0058004A00550049>-250<004E0046>9<000D>-249<004C004A0045000F>-333<09AB004A0054>-250<00450050>-7<00440056004E0046004F0055>-250<0044004D004200540054>-250<004A0054>-250<004700500053>-250<005A>7<00500056000F>]TJ +0 g 0 G +/F57 10.44878 Tf 1 0 0 1 204.571 39.437 Tm [<0014>]TJ +0 g 0 G ET endstream @@ -292,7 +329,25 @@ endobj /TrimBox[0 0 396 612]/Parent 12 0 R>> endobj 16 0 obj -<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font<</F56 8 0 R/F60 11 0 R>>/ProcSet[/PDF/Text]>> +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /Font<</F57 8 0 R/F61 11 0 R>>/ProcSet[/PDF/Text]>> +endobj +21 0 obj +<</Length 32 >> +stream +0 g 0 G +0 g 0 G +0 g 0 G +0 g 0 G + +endstream +endobj +20 0 obj +<</Type/Page/Contents 21 0 R/Resources 19 0 R/MediaBox[0 0 396 612]/CropBox[0 0 396 612] + +/TrimBox[0 0 396 612]/Parent 12 0 R>> +endobj +19 0 obj +<< /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R /ProcSet[/PDF]>> endobj 1 0 obj <<>> @@ -303,16 +358,16 @@ endobj 3 0 obj << /pgfprgb [/Pattern /DeviceRGB] >> endobj -19 0 obj +22 0 obj [13[219]15[219]66[486]68[389 489 401 314]73[519]77[266 783 518 447 489]83[357 353 307]87[472]89[475]2120[564]2152[606]] endobj -20 0 obj +23 0 obj <</Length 270 >> stream endstream endobj -21 0 obj +24 0 obj <</Subtype/CIDFontType0C/Length 5776 >> stream @@ -330,10 +385,10 @@ fg`ffgAkg_e~Yo endstream endobj -22 0 obj -<</Type/FontDescriptor/FontName/EKAOGO+LibertinusSerif-Italic/Flags 4/FontBBox[-634 -312 6171 893]/Ascent 894/CapHeight 647/Descent -246/ItalicAngle -12/StemV 73/XHeight 429/FontFile3 21 0 R/CIDSet 20 0 R>> +25 0 obj +<</Type/FontDescriptor/FontName/EKAOGO+LibertinusSerif-Italic/Flags 4/FontBBox[-634 -312 6171 893]/Ascent 894/CapHeight 647/Descent -246/ItalicAngle -12/StemV 73/XHeight 429/FontFile3 24 0 R/CIDSet 23 0 R>> endobj -23 0 obj +26 0 obj <</Length 992 >> stream %!PS-Adobe-3.0 Resource-CMap @@ -390,21 +445,21 @@ end endstream endobj 11 0 obj -<</Type/Font/Subtype/Type0/Encoding/Identity-H/BaseFont/EKAOGO+LibertinusSerif-Italic/DescendantFonts[24 0 R]/ToUnicode 23 0 R>> +<</Type/Font/Subtype/Type0/Encoding/Identity-H/BaseFont/EKAOGO+LibertinusSerif-Italic/DescendantFonts[27 0 R]/ToUnicode 26 0 R>> endobj -24 0 obj -<</Type/Font/Subtype/CIDFontType0/BaseFont/EKAOGO+LibertinusSerif-Italic/FontDescriptor 22 0 R/W 19 0 R/CIDSystemInfo<</Registry (Adobe)/Ordering (Identity)/Supplement 0>>>> +27 0 obj +<</Type/Font/Subtype/CIDFontType0/BaseFont/EKAOGO+LibertinusSerif-Italic/FontDescriptor 25 0 R/W 22 0 R/CIDSystemInfo<</Registry (Adobe)/Ordering (Identity)/Supplement 0>>>> endobj -25 0 obj +28 0 obj [27[219]32[430]37[718]56[998]66[476]68[435 527 461]73[550 286]78[801 563 519 523]83[401 401 331 550]] endobj -26 0 obj +29 0 obj <</Length 11 >> stream endstream endobj -27 0 obj +30 0 obj <</Subtype/CIDFontType0C/Length 3826 >> stream @@ -417,10 +472,10 @@ stream endstream endobj -28 0 obj -<</Type/FontDescriptor/FontName/IZNYRK+LibertinusSerif-Semibold/Flags 4/FontBBox[-446 -328 6171 900]/Ascent 894/CapHeight 647/Descent -246/ItalicAngle 0/StemV 81/XHeight 463/FontFile3 27 0 R/CIDSet 26 0 R>> +31 0 obj +<</Type/FontDescriptor/FontName/IZNYRK+LibertinusSerif-Semibold/Flags 4/FontBBox[-446 -328 6171 900]/Ascent 894/CapHeight 647/Descent -246/ItalicAngle 0/StemV 81/XHeight 463/FontFile3 30 0 R/CIDSet 29 0 R>> endobj -29 0 obj +32 0 obj <</Length 966 >> stream %!PS-Adobe-3.0 Resource-CMap @@ -475,32 +530,32 @@ end endstream endobj 10 0 obj -<</Type/Font/Subtype/Type0/Encoding/Identity-H/BaseFont/IZNYRK+LibertinusSerif-Semibold/DescendantFonts[30 0 R]/ToUnicode 29 0 R>> +<</Type/Font/Subtype/Type0/Encoding/Identity-H/BaseFont/IZNYRK+LibertinusSerif-Semibold/DescendantFonts[33 0 R]/ToUnicode 32 0 R>> endobj -30 0 obj -<</Type/Font/Subtype/CIDFontType0/BaseFont/IZNYRK+LibertinusSerif-Semibold/FontDescriptor 28 0 R/W 25 0 R/CIDSystemInfo<</Registry (Adobe)/Ordering (Identity)/Supplement 0>>>> +33 0 obj +<</Type/Font/Subtype/CIDFontType0/BaseFont/IZNYRK+LibertinusSerif-Semibold/FontDescriptor 31 0 R/W 28 0 R/CIDSystemInfo<</Registry (Adobe)/Ordering (Identity)/Supplement 0>>>> endobj -31 0 obj +34 0 obj [374[2000]] endobj -32 0 obj +35 0 obj <</Length 47 >> stream endstream endobj -33 0 obj -<</Subtype/CIDFontType0C/Length 467 >> +36 0 obj +<</Subtype/CIDFontType0C/Length 471 >> stream - + ڒ
endstream endobj -34 0 obj -<</Type/FontDescriptor/FontName/ETXLAD+NovelDeco/Flags 4/FontBBox[-392 -234 1985 781]/Ascent 894/CapHeight 537/Descent -246/ItalicAngle 0/StemV 61/XHeight 429/FontFile3 33 0 R/CIDSet 32 0 R>> +37 0 obj +<</Type/FontDescriptor/FontName/ETXLAD+NovelDeco/Flags 4/FontBBox[-392 -234 1985 838]/Ascent 894/CapHeight 537/Descent -246/ItalicAngle 0/StemV 61/XHeight 429/FontFile3 36 0 R/CIDSet 35 0 R>> endobj -35 0 obj +38 0 obj <</Length 652 >> stream %!PS-Adobe-3.0 Resource-CMap @@ -538,21 +593,21 @@ end endstream endobj 9 0 obj -<</Type/Font/Subtype/Type0/Encoding/Identity-H/BaseFont/ETXLAD+NovelDeco/DescendantFonts[36 0 R]/ToUnicode 35 0 R>> +<</Type/Font/Subtype/Type0/Encoding/Identity-H/BaseFont/ETXLAD+NovelDeco/DescendantFonts[39 0 R]/ToUnicode 38 0 R>> endobj -36 0 obj -<</Type/Font/Subtype/CIDFontType0/BaseFont/ETXLAD+NovelDeco/FontDescriptor 34 0 R/W 31 0 R/CIDSystemInfo<</Registry (Adobe)/Ordering (Identity)/Supplement 0>>>> +39 0 obj +<</Type/Font/Subtype/CIDFontType0/BaseFont/ETXLAD+NovelDeco/FontDescriptor 37 0 R/W 34 0 R/CIDSystemInfo<</Registry (Adobe)/Ordering (Identity)/Supplement 0>>>> endobj -37 0 obj +40 0 obj [2[288]9[298 298]13[220 338 220 323 465 465 465 465 465 465]27[236]32[435]34[695 588 646 701 557 485 685 730 297 322]45[528 839 699 702 541 702 587 485 597 661 652 951 660 575 604]66[457 493 428 506 447 310 500 538 271 272 512 264 790 542 504 519 503 372 390 316 531 497 747 490 515 424]1752[742]1757[268]1760[375 375]2442[582 560 540]2475[1048]2589[614]2592[465 465 465 465 465 465 465 465 465]] endobj -38 0 obj +41 0 obj <</Length 326 >> stream g? endstream endobj -39 0 obj +42 0 obj <</Subtype/CIDFontType0C/Length 18212 >> stream @@ -606,10 +661,10 @@ Lͅ ڒ
endstream endobj -40 0 obj -<</Type/FontDescriptor/FontName/VEKDRV+LibertinusSerif/Flags 4/FontBBox[-1082 -256 6171 1125]/Ascent 894/CapHeight 647/Descent -246/ItalicAngle 0/StemV 73/XHeight 429/FontFile3 39 0 R/CIDSet 38 0 R>> +43 0 obj +<</Type/FontDescriptor/FontName/VEKDRV+LibertinusSerif/Flags 4/FontBBox[-1082 -256 6171 1125]/Ascent 894/CapHeight 647/Descent -246/ItalicAngle 0/StemV 73/XHeight 429/FontFile3 42 0 R/CIDSet 41 0 R>> endobj -41 0 obj +44 0 obj <</Length 1865 >> stream %!PS-Adobe-3.0 Resource-CMap @@ -730,71 +785,74 @@ end endstream endobj 8 0 obj -<</Type/Font/Subtype/Type0/Encoding/Identity-H/BaseFont/VEKDRV+LibertinusSerif/DescendantFonts[42 0 R]/ToUnicode 41 0 R>> +<</Type/Font/Subtype/Type0/Encoding/Identity-H/BaseFont/VEKDRV+LibertinusSerif/DescendantFonts[45 0 R]/ToUnicode 44 0 R>> endobj -42 0 obj -<</Type/Font/Subtype/CIDFontType0/BaseFont/VEKDRV+LibertinusSerif/FontDescriptor 40 0 R/W 37 0 R/CIDSystemInfo<</Registry (Adobe)/Ordering (Identity)/Supplement 0>>>> +45 0 obj +<</Type/Font/Subtype/CIDFontType0/BaseFont/VEKDRV+LibertinusSerif/FontDescriptor 43 0 R/W 40 0 R/CIDSystemInfo<</Registry (Adobe)/Ordering (Identity)/Supplement 0>>>> endobj 12 0 obj -<</Type/Pages /Count 3/Kids[6 0 R 14 0 R 17 0 R]>> +<</Type/Pages /Count 4/Kids[6 0 R 14 0 R 17 0 R 20 0 R]>> endobj -43 0 obj +46 0 obj <</Type/Catalog/Pages 12 0 R /Metadata 4 0 R/OutputIntents [ <</Type/OutputIntent/S/GTS_PDFX/OutputCondition (SWOP (Publication) printing in USA (Printing process definition: ANSI CGATS.6).)/OutputConditionIdentifier (CGATS TR 001)/Info (U.S. Web Coated (SWOP) v2)/RegistryName (http://www.color.org)>> ]>> endobj -44 0 obj +47 0 obj << - /Title(Novel\040Document\040Class)/Creator(LuaLaTeX\040with\040novel\040and\040microtype)/CreationDate(D:20180112152952-08'00')/ModDate(D:20180112152952-08'00')/Producer(LuaLaTeX\040with\040novel-pdfx\040and\040hyperref)/Trapped/False/GTS_PDFXVersion(PDF/X-1a:2001)/GTS_PDFXConformance(PDF/X-1a:2001) + /Title(Novel\040Document\040Class)/Creator(LuaLaTeX\040with\040novel\040and\040microtype)/CreationDate(D:20180327100328-07'00')/ModDate(D:20180327100328-07'00')/Producer(LuaLaTeX\040with\040novel-pdfx\040and\040hyperref)/Trapped/False/GTS_PDFXVersion(PDF/X-1a:2001)/GTS_PDFXConformance(PDF/X-1a:2001) >> endobj xref -0 45 +0 48 0000000000 65535 f -0000032172 00000 n -0000032192 00000 n -0000032212 00000 n +0000032969 00000 n +0000032989 00000 n +0000033009 00000 n 0000000015 00000 n -0000015166 00000 n -0000015025 00000 n +0000015196 00000 n +0000015055 00000 n 0000006731 00000 n -0000068994 00000 n -0000047461 00000 n -0000045527 00000 n -0000039855 00000 n -0000069314 00000 n -0000023301 00000 n -0000023157 00000 n -0000015307 00000 n -0000032051 00000 n -0000031907 00000 n -0000023422 00000 n -0000032265 00000 n -0000032401 00000 n -0000032728 00000 n -0000038583 00000 n -0000038806 00000 n -0000040000 00000 n -0000040190 00000 n -0000040308 00000 n -0000040376 00000 n -0000044281 00000 n -0000044504 00000 n -0000045674 00000 n -0000045866 00000 n -0000045894 00000 n -0000045998 00000 n -0000046544 00000 n -0000046752 00000 n -0000047592 00000 n -0000047769 00000 n -0000048182 00000 n -0000048565 00000 n -0000066856 00000 n -0000067072 00000 n -0000069131 00000 n -0000069381 00000 n -0000069704 00000 n +0000069795 00000 n +0000048262 00000 n +0000046324 00000 n +0000040652 00000 n +0000070115 00000 n +0000023634 00000 n +0000023490 00000 n +0000015337 00000 n +0000032529 00000 n +0000032385 00000 n +0000023755 00000 n +0000032883 00000 n +0000032739 00000 n +0000032650 00000 n +0000033062 00000 n +0000033198 00000 n +0000033525 00000 n +0000039380 00000 n +0000039603 00000 n +0000040797 00000 n +0000040987 00000 n +0000041105 00000 n +0000041173 00000 n +0000045078 00000 n +0000045301 00000 n +0000046471 00000 n +0000046663 00000 n +0000046691 00000 n +0000046795 00000 n +0000047345 00000 n +0000047553 00000 n +0000048393 00000 n +0000048570 00000 n +0000048983 00000 n +0000049366 00000 n +0000067657 00000 n +0000067873 00000 n +0000069932 00000 n +0000070189 00000 n +0000070512 00000 n trailer -<</Size 45/Root 43 0 R/Info 44 0 R/ID[<2AFEB31966C1DC7A8B6C9C1A2215DF1C> <2AFEB31966C1DC7A8B6C9C1A2215DF1C>]>> +<</Size 48/Root 46 0 R/Info 47 0 R/ID[<32956F1CCC3DA2E1E06FB789CECA2129> <32956F1CCC3DA2E1E06FB789CECA2129>]>> startxref -70028 +70836 %%EOF diff --git a/Master/texmf-dist/doc/lualatex/novel/novel.tex b/Master/texmf-dist/doc/lualatex/novel/novel.tex index 5999c0dd848..d3c7463dea4 100644 --- a/Master/texmf-dist/doc/lualatex/novel/novel.tex +++ b/Master/texmf-dist/doc/lualatex/novel/novel.tex @@ -5,7 +5,7 @@ % IF YOU COMPILE THIS DOCUMENT: Be sure that both this file and % novel.pdf (if present) have read/write permissions for any user. % Otherwise, compile may fail at the point where files are written. -\documentclass{novel} % v. 1.46.2 +\documentclass{novel} % v. 1.50 % Almost all settings are defaults. \SetHeadFootStyle{3} \SetTitle{Novel Document Class} % only footer, with page number @@ -58,7 +58,9 @@ The companion font(s) is(are) licensed under the SIL Open Font License, version \QuickChapter{4. Version} -\noindent 1.46.2, 2018-01-14: Minor improvements since stable version 1.46. +\noindent 1.50, 2018-03-28: Improved image handling commands, sandbox. + +\noindent 1.46.2, 2018-01-14: Stable "old" version. Use newer 1.50. \noindent 1.1, 2017-03-01: initial public release. @@ -77,7 +79,7 @@ The companion font(s) is(are) licensed under the SIL Open Font License, version \backindent\makebox[\parindent][l]{Q. }What happened to floats and lists? \end{adjustwidth} \begin{adjustwidth}{\parindent}{0pt} -\backindent\makebox[\parindent][l]{A. }I've never seen them in a novel. So, they were tossed out. +\backindent\makebox[\parindent][l]{A. }Use the new image commands, or sandbox mode. \end{adjustwidth} \begin{adjustwidth}{\parindent}{0pt} diff --git a/Master/texmf-dist/fonts/opentype/novel/NovelDeco.otf b/Master/texmf-dist/fonts/opentype/novel/NovelDeco.otf Binary files differindex d5a62387e7c..b0c81ecb613 100644 --- a/Master/texmf-dist/fonts/opentype/novel/NovelDeco.otf +++ b/Master/texmf-dist/fonts/opentype/novel/NovelDeco.otf diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-CGATSTR001.clo b/Master/texmf-dist/tex/lualatex/novel/novel-CGATSTR001.clo index 9d1d8787ac5..a550245b838 100644 --- a/Master/texmf-dist/tex/lualatex/novel/novel-CGATSTR001.clo +++ b/Master/texmf-dist/tex/lualatex/novel/novel-CGATSTR001.clo @@ -1,11 +1,19 @@ -% Typically used in the USA. Novel file version 1.46.2 +%% +%% This is file `novel-CGATSTR001.clo', part of `novel' document class. +%% The values of the arguments are public industry standards. +%% +\ProvidesFile{novel-CGATSTR001.clo}% +[2018/01/14 any version. (novel Output Intent CGATS TR 001)] +%% -% The values of the arguments are public industry standards. +% Typically used in the USA. % Remember: TeX special characters must be backslashed here. % You may see % or # or _ in the data or file names. % Be sure that they are written as \% \# \_ or there will be trouble. +% If any line is long, let it wrap. Do not attempt to break it onto multiple lines. + % This identifier has spaces, even though file name has no spaces. \gdef\@OIidentifier{CGATS TR 001} % also called "reference name" \gdef\@OIcondition{SWOP (Publication) printing in USA (Printing process definition: ANSI CGATS.6).} @@ -13,3 +21,8 @@ \gdef\@OIregistry{http://www.color.org} \gdef\@OIprofile{USWebCoatedSWOP.icc} +%% +\endinput +%% +%% end of file `novel-CGATSTR001.clo' + diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-CalculateLayout.sty b/Master/texmf-dist/tex/lualatex/novel/novel-CalculateLayout.sty index 90904b3b09b..77f960c3bcf 100644 --- a/Master/texmf-dist/tex/lualatex/novel/novel-CalculateLayout.sty +++ b/Master/texmf-dist/tex/lualatex/novel/novel-CalculateLayout.sty @@ -1,6 +1,6 @@ %% -%% This is file `novel-CalculateLayout.sty', a custom file. -%% Copyright 2017 Robert Allgeyer. +%% This is file `novel-CalculateLayout.sty', part of `novel' document class. +%% Copyright 2017-2018 Robert Allgeyer. %% %% It may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -12,7 +12,7 @@ %% %% \ProvidesFile{novel-CalculateLayout.sty}% -[2018/01/14 v1.46.2 LaTeX file (layout calculations)] +[2018/03/28 v1.50 LaTeX file (layout calculations)] %% %% @@ -20,636 +20,309 @@ %% -\newlength\normalFontSize % becomes 1em in normal text, also abbreviated as \nfs -\newlength\normalBaselineSkip % also abbreviated as \nbs - -%% SET DEFAULT SIZES, AND INITIAL CORRECTIONS -%% ----------------------------------------------------------------------------- -%% -% Default Trim Size, if user does not set it. This is a popular size for -% USA softcover fiction, and is close to a popular British size. -\if@TrimSizeSet\else - \SetTrimSize{5.5in}{8.5in} % width, height +%% PROVIDE DEFAULT TRIM SIZE, MARGINS, AND NORMAL EM SIZE, IF NOT SET BY USER +%% ---------------------------------------------------------------------------- +% Default Trim Size is 5.5in W x 8.5in H, unless \SetTrimSize used. +% This size is typical of American P.O.D. softcover fiction: +\if@SetTrimSize\else + \gsetlength\@TrimWidth{5.5in} + \gsetlength\@TrimHeight{8.5in} \fi -\if@MediaSizeSet\else - \SetMediaSize[center]{\New@TrimWidth}{\New@TrimHeight} % original, or re-worked. -\fi -% Default margins are based on Trim Height, if user does not set margins. -% Works for standard w/h aspect ratios, but not for exotically narrow. -\if@MarginsSet\else - \ifthenelse{\dimtest{\Old@TrimHeight}{<}{8.99in}}{ % small sizes: - \global\setlength\Old@TopMargin{0.5in} - \global\setlength\Old@OutsideMargin{0.5in} - \global\setlength\Old@BottomMargin{0.5in} - \global\setlength\Old@InsideMargin{0.75in} - \global\setlength\New@TopMargin{0.5in} - \global\setlength\New@OutsideMargin{0.5in} - \global\setlength\New@BottomMargin{0.5in} - \global\setlength\New@InsideMargin{0.75in} +% Default margins based on Trim Height, unless \SetMargins used: +\if@SetMargins\else + \ifdimcomp{\@TrimHeight}{<}{8.99in}{ % small sizes: + \gsetlength\@TopMargin{0.5in} + \gsetlength\@OuterMargin{0.5in} + \gsetlength\@BottomMargin{0.5in} + \gsetlength\@InnerMargin{0.75in} }{ % medium sizes: - \ifthenelse{\dimtest{\Old@TrimHeight}{<}{9.99in}}{ - \global\setlength\Old@TopMargin{0.75in} - \global\setlength\Old@OutsideMargin{0.75in} - \global\setlength\Old@BottomMargin{0.75in} - \global\setlength\Old@InsideMargin{1in} - \global\setlength\New@TopMargin{0.75in} - \global\setlength\New@OutsideMargin{0.75in} - \global\setlength\New@BottomMargin{0.75in} - \global\setlength\New@InsideMargin{1in} + \ifdimcomp{\@TrimHeight}{<}{9.99in}{ % + \gsetlength\@TopMargin{0.75in} + \gsetlength\@OuterMargin{0.75in} + \gsetlength\@BottomMargin{0.75in} + \gsetlength\@InnerMargin{1in} }{ % large sizes: - \global\setlength\Old@TopMargin{1in} - \global\setlength\Old@OutsideMargin{1in} - \global\setlength\Old@BottomMargin{1in} - \global\setlength\Old@InsideMargin{1.25in} - \global\setlength\New@TopMargin{1in} - \global\setlength\New@OutsideMargin{1in} - \global\setlength\New@BottomMargin{1in} - \global\setlength\New@InsideMargin{1.25in} - } % end internal dimtest - } % end dimtest for margins. -\fi % end default margins -% -% Choose default font size based on Trim Width, unless font size set by user: + \gsetlength\@TopMargin{1in} + \gsetlength\@OuterMargin{1in} + \gsetlength\@BottomMargin{1in} + \gsetlength\@InnerMargin{1.25in} + } % + } % +\fi +% Default normal em size is based on Trim Width: \if@FontSizeSet\else - \ifthenelse{\dimtest{\Old@TrimWidth}{<}{5.49in}}{ - \global\setlength\Old@FontSize{11pt} % smaller books + \ifdimcomp{\@TrimWidth}{<}{5.49in}{ + \gsetlength\@SetFontSize{11pt} % smaller books }{ - \ifthenelse{\dimtest{\Old@TrimWidth}{<}{6.24in}}{ - \global\setlength\Old@FontSize{11.4pt} % medium books + \ifdimcomp{\@TrimWidth}{<}{6.24in}{ + \gsetlength\@SetFontSize{11.4pt} % medium books }{ - \global\setlength\Old@FontSize{12pt} % larger books - } % end internal dimtest - } % end dimtest for font size. + \gsetlength\@SetFontSize{12pt} % larger books + } % + } % \fi -% -% Default lines/page based on Trim Height, font size, unless LPP set by user: -\if@LinesPerPageSet\else - \def\@tempOFSnum{\strip@pt\Old@FontSize} - \FPmul{\@tempOBSnum}{\@tempOFSnum}{1.3} % for a nice, uncramped baselineskip - \def\@tempTH{\strip@pt\Old@TrimHeight} - \def\@tempTM{\strip@pt\Old@TopMargin} - \FPsub{\@tempLH}{\@tempTH}{\@tempTM} - \FPsub{\@tempLH}{\@tempLH}{\@tempTM} % \@tempLH is available live height - \FPdiv{\@tempLPP}{\@tempLH}{\@tempOBSnum} - \FPsub{\@tempLPP}{\@tempLPP}{1.5} % allows for default header - \FPround{\@tempLPP}{\@tempLPP}{0} % integer - \FPclip{\@tempLPP}{\@tempLPP} % remove excess trailing 0. - \gdef\my@LinesPerPage{\@tempLPP} +%% end set default trim, margins, normal em size. + + +%% THEORY OF PAGE LAYOUT +%% ---------------------------------------------------------------------------- +% The "available width" is the trim width minus the outer and inner margins: +\newlength\@AvailableWidth +\gsetlength\@AvailableWidth{\@TrimWidth-\@OuterMargin-\@InnerMargin} +% The "occupied width" of the text block is the TeX dimension \textwidth. +% Your originally set layout can always fill the available width, +% although that is not always true when using \Rework: +\gsetlength\textwidth{\@AvailableWidth} +% The "available height" is the trim height minus the top and bottom margins: +\newlength\@AvailableHeight +\gsetlength\@AvailableHeight{\@TrimHeight-\@TopMargin-\@BottomMargin} +% The "occupied height" includes header, textblock, footer, and allowances +% for risers/diacriticals at top, descenders at bottom. It must fit within +% the available height. This is the tricky part, so pay attention: +% In `novel' class, the topmost line of text (main block or header) +% is positioned with its baseline at 1 normal em below available top. +% That provides good clearance for uppercase letters with diacritical marks. +% The lowermost line of text (main block or footer) is positioned with its +% baseline at 0.3 normal em above available bottom. This provides +% good clearance for descenders. +% So, if your text does not have uppercase diacriticals, or if you use +% a footer with lining numbers (no descenders), then the upper/lower margins +% will appear to be a little larger than you set them. +% The headjump includes the line itself, plus any added gap to the main text. +% An unused jump is re-set to 0: +\if@HasHeader\else\gdef\@HeadJump{0}\fi +%% +% TeX assumes that your layout has a footer, even if you do not want one. +% Novel handles this by setting the baseline of the mandatory footer at +% 1 normal baselineskip below the last line of main text. Then, one line is +% subtracted from the occupied line count. That places the empty, unused +% virtual footer in the lower margin, where it does not matter. When you +% do have a footer, the necessary line space is added, and the content +% is positioned from the virtual footer using \smash and \raisebox. +% Yes, it is complicated, but it handles more layout possibilities. +% The \@FootJumpFix is one less than \@FootJump, or -1 when no footer: +\if@HasFooter + \FPsub\@FootJumpFix{\@FootJump}{1} +\else + \gdef\@FootJumpFix{-1} \fi -% -% Correct bottom margin for descenders, assumed to be 0.3em: -\addtolength\Old@BottomMargin{0.3\Old@FontSize} -\addtolength\New@BottomMargin{0.3\Old@FontSize} -% Warn if user requests unrealistic HeadJump or FootJump: -\FPiflt{\@headjump}{1} - \ClassWarning{novel}{^^JYou requested \string\HeadJump<1. Unless you have^^J% - a very good reason for that, you had better increase it to at least 1.^^J}% -\else\fi -% -\FPiflt{\@footjump}{1} - \ClassWarning{novel}{^^JYou requested \string\FootJump<1. Unless you have^^J% - a very good reason for that, you had better increase it to at least 1.^^J}% -\else\fi -% -%% end set default sizes and initial corrections - - - -%% OLD, NEW, CURRENT, LIVE, TEXT MACRO DEFINITIONS -%% ----------------------------------------------------------------------------- -% The \Rework commands are special to `novel' class. -% Situation: You compile the book with certain settings. Looks good. -% But then you need to change the Trim Size and/or Margins, without affecting -% paragraphs or pagination from what you had before. -% Solution: Retain your existing settings for Trim Size and Margins. -% Then, add \Rework commands, which instruct the layout engine to manipulate -% font size (and, if necessary, baseline skip) so that paragraphs and -% pagination remain as before. This is done dynamically, in a single pass. -% How it works: Paragraph layout depends on ratio of text width to font size. -% So, when text width changes, simply change font size in proportion. -% Then, pagination simply depends on lines per page, unchanged. -% But if the lines don't fit due any more, then both text width and font size -% are further shrunk, to retain paragraphs and also allow enough line space. -% -% "Old" values are pre-configured values, depending on class Trim Size option. -% However, the presets are over-ridden by user with using \Set---- commands. -% "New" values are initialized to "Old" or \Set---- as above. -% Then, they can be over-ridden by user with \Rework---- commands. -% "Current" values are initialized to "Old" values. Then they change, -% as calculations progress. -% Widths and Heights are lengths, stored by \setlength. -% Expressions ending in "Num" are pure numbers, suitable for FP calculations. -% "Live" refers to the area available to text (including header/footer). -% That is, the "live area" is the Trim Size, excluding the Margins. -% -% Find the Old and New Live Width and Height, and initialize -% Text Width and Height to Old Live. Initialize Font Size. -\newlength\Old@LiveWidth - \setlength\Old@LiveWidth{\Old@TrimWidth} - \addtolength\Old@LiveWidth{-\Old@OutsideMargin} - \addtolength\Old@LiveWidth{-\Old@InsideMargin} - \def\Old@LiveWidthNum{\strip@pt\Old@LiveWidth} -\newlength\Old@LiveHeight - \setlength\Old@LiveHeight{\Old@TrimHeight} - \addtolength\Old@LiveHeight{-\Old@TopMargin} - \addtolength\Old@LiveHeight{-\Old@BottomMargin} -\newlength\Current@FontSize - \setlength\Current@FontSize{\Old@FontSize} - \def\Current@FontSizeNum{\strip@pt\Current@FontSize} - \def\Old@FontSizeNum{\strip@pt\Old@FontSize} - \addtolength\Old@LiveHeight{-\Current@FontSizeNum pt} - \def\Old@LiveHeightNum{\strip@pt\Old@LiveHeight} -\newlength\Current@TextWidth - \setlength\Current@TextWidth{\Old@LiveWidth} - \def\Current@TextWidthNum{\strip@pt\Current@TextWidth} -\newlength\Current@TextHeight - \setlength\Current@TextHeight{\Old@LiveHeight} - \def\Current@TextHeightNum{\strip@pt\Current@TextHeight} -\newlength\New@LiveWidth - \setlength\New@LiveWidth{\New@TrimWidth} - \addtolength\New@LiveWidth{-\New@OutsideMargin} - \addtolength\New@LiveWidth{-\New@InsideMargin} - \def\New@LiveWidthNum{\strip@pt\New@LiveWidth} -\newlength\New@LiveHeight - \setlength\New@LiveHeight{\New@TrimHeight} - \addtolength\New@LiveHeight{-\New@TopMargin} - \addtolength\New@LiveHeight{-\New@BottomMargin} - \def\New@LiveHeightNum{\strip@pt\New@LiveHeight} -% -%% End old, new... macro definitions. - - -%% PRELIMINARY CALCULATION OF BASELINESKIP -%% ----------------------------------------------------------------------------- -% Get values of \@gotHeader and \@gotFooter booleans: -\@reserveHFspace % defined in `novel-LayoutSettings.sty'. -% Adjusted LinesPerPage will include header, footer, and added separations: -\let\adj@LinesPerPage\my@LinesPerPage % Start with the textblock lines. -% The footskip is always "there" even if no content. Remove it: -\FPsub{\adj@LinesPerPage}{\adj@LinesPerPage}{1} -% -\if@gotHeader % allow for header jump - \FPadd{\adj@LinesPerPage}{\adj@LinesPerPage}{\@headjump} +% Putting it all together, the "occupied height" is: +% 1.3\@SetFontSize + (\@HeadJump+\@LinesPerPage+\@FootJumpFix)\baselineskip +% +%% end theory of page layout. + + +%% SET DEFAULT LINES PER PAGE, IF NOT SET BY USER +%% ---------------------------------------------------------------------------- +% Lines per page refers only to the main text block, not header/footer: +\if@LinesPerPage\else + % Estimate \baselineskip as 1.3\@SetFontSize, which is a comfortable value. + % Calculate resulting \@LinesPerPage, then proceed as if set. + % Actual \baselineskip will be re-calculated later. + \edef\@tempLPP{% + \fpeval{% package xfp + (\@AvailableHeight - 0.3\@SetFontSize) % adjusts for final descenders + / (1.3*\@SetFontSize) % denominator, with desired skip/em ratio + -\@HeadJump -\@FootJumpFix % adjustments + }% + } % + \FPtrunc{\@LinesPerPage}{\@tempLPP}{0} % final, integer floor \fi -% -\if@gotFooter % allow for footer jump - \FPadd{\adj@LinesPerPage}{\adj@LinesPerPage}{\@footjump} +% Error if too few lines per page, whether set or default: +\FPiflt{\@LinesPerPage}{2} + \ClassError{novel}{Calculated LinesPerPage less than 2}% + {Too few lines. Either font size too big, or text height too small.}% \fi -% -% Baseline Skip is Live Height divided by adjusted number of lines. -% Thus initially, Text (with header/footer) occupies full Live Height. -\newlength\Current@BaselineSkip -\FPdiv{\Current@BaselineSkipNum}{\Old@LiveHeightNum}{\adj@LinesPerPage} -% Check to see if Baseline Skip is insufficient: -\FPdiv{\@ratioBStoFS}{\Current@BaselineSkipNum}{\Current@FontSizeNum} -\FPiflt{\@ratioBStoFS}{1.2}% - \ClassError{novel}{Too many lines per page^^J}% - {You requested too many lines per page, for the page dimensions and^^J% - font size. Maybe few lines, or smaller font size, or eliminate^^J% - header or footer? Or a bigger Trim Size?^^J}% -\else % OK, so set CurrentBaselineSkip: - \setlength\Current@BaselineSkip{\Current@BaselineSkipNum pt} +%% end set default lines per page. + + +%% CALCULATE BASELINESKIP +%% ---------------------------------------------------------------------------- +% In `novel' class, the user does not directly set line-to-line spacing, +% known as \baselineskip. Instead, \baselineskip is calculated from other +% settings, so that "occupied height" fills "available height." +% See the above theory of layout, for the equations. Solve for \baselineskip = +% (\@AvailableHeight-1.3\@SetFontSize) divided by +% (\@HeadJump+\@LinesPerPage+\@FootJumpFix) +% +\xdef\@AdjLPP{\fpeval{\@HeadJump+\@LinesPerPage+\@FootJumpFix}} % used often +\edef\@tempBLS{% + \fpeval{(\@AvailableHeight-1.3\@SetFontSize) / \@AdjLPP}% +} % +\FPtrunc\@tempBLS{\@tempBLS}{2} % round down to 2 decimalplaces +\gsetlength\baselineskip{\@tempBLS pt} +% +% Error if \baselineSkip is too tight, in relation to normal em size: +\ifdimcomp{\baselineskip}{<}{1.2\@SetFontSize}{% + \ClassError{novel}{Calculated baselineskip is too small}% + {Default baselineskip is calculated from normal em size, ^^J% + available text height, and lines per page. Result is too small. ^^J% + Change something, then try again.}% +}{}% +%% end calculate baselineskip. + + +%% LOAD REWORK, IF USED +%% REWORK IS EXPERIMENTAL CODE. NOT DOCUMENTED. +%% ---------------------------------------------------------------------------- +% Note that \Rework does not change lines per page. +\gdef\@TMratio{1} +\if@ReworkTrimSize + \ObsoleteRework +\else + \if@ReworkMargins + \ObsoleteRework + \fi \fi -\newlength\Old@BaselineSkip - \setlength\Old@BaselineSkip{\Current@BaselineSkipNum pt} -\gdef\Old@BaselineSkipNum{\strip@pt\Old@BaselineSkip} -% -%% End preliminary calculation of baselineskip. - - - -%% FIT CurrentTextWidth TO NewLiveWidth -%% ----------------------------------------------------------------------------- -\FPdiv{\my@TextRescaleNum}{\New@LiveWidthNum}{\Current@TextWidthNum} -\FPmul{\Current@FontSizeNum}{\Current@FontSizeNum}{\my@TextRescaleNum} -\setlength\Current@FontSize{\Current@FontSizeNum pt} -\FPmul{\Current@TextWidthNum}{\Current@TextWidthNum}{\my@TextRescaleNum} -\setlength\Current@TextWidth{\Current@TextWidthNum pt} -% -%% end fit CurrentTextWidth to NewLiveWidth - - -%% ADJUST CurrentBaselineSkip TO FIT NewLiveHeight -%% ----------------------------------------------------------------------------- -% Test if New Text Height fits within New Live Height: -\FPifgt{\Current@TextHeightNum}{\New@LiveHeightNum} % does not fit, so fix it - \FPdiv{\my@NBSrescaleNum}{\New@LiveHeightNum}{\Current@TextHeightNum} - \FPmul{\Current@BaselineSkipNum}{\Current@BaselineSkipNum}{\my@NBSrescaleNum} - \setlength\Current@BaselineSkip{\Current@BaselineSkipNum pt} - \FPmul{\Current@TextHeightNum}{\Current@BaselineSkipNum}{\adj@LinesPerPage} +%% end load rework. + + +%% FINISH LAYOUT (but post-layout deals with special class options) +%% ---------------------------------------------------------------------------- +% Caution if font size (set or reworked) is small: +\ifdimcomp{\@SetFontSize}{<}{10pt}{ % + \typeout{^^JClass `novel' Alert: Normal font at less than 10pt. ^^J% + Whether or not this is too small, depends on circumstances. ^^J% + Beware if you use footnotes, which are smaller. ^^J% + } +}{} % +\ifdimcomp{\@SetFontSize}{<}{8.03pt}{ % 8 PostScript points (TeX bp) + \ClassWarning{novel}{^^JNormal font at less than 8 points. ^^J% + This is usually undesirable. May be rejected by some print services. ^^J% + } +}{} % +% Default Media Size is same as Trim Size, unless \SetMediaSize used: +\if@MediaSize\else + \gsetlength\paperwidth{\@TrimWidth} + \gsetlength\paperheight{\@TrimHeight} \fi -% Check if the revised skip is too small: -\FPdiv{\@ratioBLtoFS}{\Current@BaselineSkipNum}{\Current@FontSizeNum} -\FPiflt{\@ratioBLtoFS}{1.2} % Too small. Re-tweak font, text width, skip. - \FPdiv{\@rescaleFontSize}{\@ratioBLtoFS}{1.2} - \FPmul{\Current@FontSizeNum}{\Current@FontSizeNum}{\@rescaleFontSize} - \setlength\Current@FontSize{\Current@FontSizeNum pt} - \FPmul{\Current@TextWidthNum}{\Current@TextWidthNum}{\@rescaleFontSize} - \setlength\Current@TextWidth{\Current@TextWidthNum pt} - \FPdiv{\Current@BaselineSkipNum}{\New@LiveHeightNum}{\adj@LinesPerPage} - \setlength\Current@BaselineSkip{\Current@BaselineSkipNum pt} - \FPmul{\Current@TextHeightNum}{\Current@BaselineSkipNum}{\adj@LinesPerPage} +% Sanity check for cover art, which needs bleed: +\if@coverart + \setlength\@tempLength{\paperwidth-\@TrimWidth} + \ifthenelse{\dimtest{\@tempLength}{<}{6mm}}{% + \ClassWarning{novel}{^^JBIG BAD WARNING! Insufficient bleed width ?^^J% + Commercial printers generally require 0.125in (3mm) bleed,^^J% + on all four sides of the Trim. But your dimensions do not provide this.^^J% + Perhaps you need to increase the Media Width ?^^J} + }{} + \ifthenelse{\dimtest{\@tempLength}{>}{0.5in}}{% + \ClassWarning{novel}{^^JBIG BAD WARNING! Too much bleed width ?^^J% + Commercial printers generally require 0.125in (3mm) bleed,^^J% + on all four sides of the Trim. Sometimes as much as 0.25in (6mm) each.^^J% + But your dimensions provide more than this. + Perhaps you need to decrease the Media Width ?^^J} + }{} + \setlength\@tempLength{\paperheight-\@TrimHeight} + \ifthenelse{\dimtest{\@tempLength}{<}{5.83mm}}{% allows for pixel rounding + \ClassWarning{novel}{^^JBIG BAD WARNING! Insufficient bleed height ?^^J% + Commercial printers generally require 0.125in (3mm) bleed,^^J% + on all four sides of the Trim. But your dimensions do not provide this.^^J% + Perhaps you need to increase the MediaSize ?^^J} + }{} + \ifthenelse{\dimtest{\@tempLength}{>}{0.507in}}{% allows for pixel rounding + \ClassWarning{novel}{^^JBIG BAD WARNING! Too much bleed height ?^^J% + Commercial printers generally require 0.125in (3mm) bleed,^^J% + on all four sides of the Trim. Sometimes as much as 0.25in (6mm) each.^^J% + But your dimensions provide more than this. + Perhaps you need to decrease the MediaSize ?^^J} + }{} \fi -% -% Note that if the revised skip is larger than desired, it is easy to change. -% Simply increase the top/bottom margin, which does not affect line breaks. -% -%% end adjust CurrentBaselineSkip to fit NewLiveHeight. - - -%% DISTRIBUTE SIDE EXCESS -%% ----------------------------------------------------------------------------- -%% The prior calculation may have shrunk CurrentTextWidth below NewLiveWidth. -\newlength\fix@SideMargin - \setlength\fix@SideMargin{\New@LiveWidth} - \addtolength\fix@SideMargin{-\Current@TextWidth} -\addtolength\New@OutsideMargin{0.5\fix@SideMargin} -\addtolength\New@InsideMargin{0.5\fix@SideMargin} -% -%% end distribute side excess. - +% \textheight, normal font size, etc: +\gsetlength\textheight{\@LinesPerPage\baselineskip} +\renewcommand\normalsize{% + \@setfontsize\normalsize{\strip@pt\@SetFontSize}{\strip@pt\baselineskip}% +} +\normalsize % from this point, the "real" normal font size is effective +% + +% +\if@HasHeader + % \headheight is mis-named. Text "height" is supposed to be measured upward + % from the baseline. But \headheight is measured from 0.3em below + % the baseline, to allow for descenders. Thus, to provide actual "height" + % of 1em, \headheight must be set to 1.3em: + \gsetlength\headheight{1.3\@SetFontSize} + % \headsep is a confusing term. It is the separation between the nominal + % 0.3em descenders of header text, and one baseline above the baseline + % of the top line of main text. Got that? Let me do the thinking for you: + \gsetlength\headsep{\@HeadJump\baselineskip-\baselineskip-0.3\@SetFontSize} +\else % no header, no problem: + \gsetlength\headheight{0pt} + \gsetlength\headsep{0pt} +\fi +% \oddsidemargin is at the left (inner, spine edge) of recto pages. +% Measured 1in (72.27pt) inside MediaBox, to the textblock. May be negative. + \gsetlength\oddsidemargin{% + \@InnerMargin+0.5\paperwidth-0.5\@TrimWidth-72.27pt% + } -%% SET TEXTWIDTH, FONT SIZE, BASELINESKIP -%% ----------------------------------------------------------------------------- -\setlength\textwidth{\Current@TextWidthNum pt} -% -\setlength\normalFontSize{\Current@FontSizeNum pt} -\setlength\normalBaselineSkip{\Current@BaselineSkipNum pt} -% -\@setfontsize\normalsize\normalFontSize{\normalBaselineSkip}% -\normalsize % Defined in `novel.cls'. Uses numbers, not lengths. -% -\newlength\nfs % abbreviation for normal fontsize -\setlength\nfs{\normalFontSize} -\gdef\nfsnum{\strip@pt\nfs} -\newlength\nbs % abbreviation for normal baselineskip -\setlength\nbs{\normalBaselineSkip} -\gdef\nbsnum{\strip@pt\nbs} % just the numerical part -% -% This document class limits range of normal point size: -\FPiflt{\Current@FontSizeNum}{8}% - \ClassError{novel}{Normal fontsize must be at least 8pt^^J}% - {In the class options, you chose a font size that is too small.^^J% - It must be at least 8pt.^^J}% -\fi % -\FPifgt{\Current@FontSizeNum}{18.1}% - \ClassError{novel}{Normal fontsize cannot exceed 18bp^^J}% - {In the class options, you chose a font size that is too large.^^J% - It cannot exceed 18bp.^^J}% -\fi -% Alert when lines closer than generally-accepted usage: -\FPmul{\@minBaselineSkipNum}{\Current@FontSizeNum}{1.24} -\FPiflt{\Current@BaselineSkipNum}{\@minBaselineSkipNum} - \typeout{^^JClass `novel' Alert: Line spacing is allowable, but close.^^J% - Consider fewer lines per page, or eliminate header or footer.^^J}% -\fi -% Alert when lines are farther than generally-accepted usage: -\FPmul{\@bigBS}{\Current@FontSizeNum}{1.41} -\FPifgt{\Current@BaselineSkipNum}{\@bigBS} - \typeout{^^JClass `novel' Alert: Line spacing is allowable, but wide.^^J% - Consider more lines per page, or add header or footer.^^J}% -\fi -% -\FPdiv{\Ratio@BaselineSkip}{\Current@BaselineSkipNum}{\Old@BaselineSkipNum} -\FPround{\Ratio@BaselineSkip}{\Ratio@BaselineSkip}{3} -\FPclip{\Ratio@BaselineSkip}{\Ratio@BaselineSkip} -% -\FPdiv{\Ratio@EM}{\Current@FontSizeNum}{\Old@FontSizeNum} -\FPround{\Ratio@EM}{\Ratio@EM}{3} -\FPclip{\Ratio@EM}{\Ratio@EM} -% Alert if images scaled by \Rework: -\ifthenelse{\equal{\Ratio@EM}{1} \AND \equal{\Ratio@BaselineSkip}{1}}{}{% - \typeout{^^JClass `novel' Alert: Due to \string\Rework\space there may be^^J% - places where an image no longer fits properly with surrounding text.^^J% - Try scaling such images in an external graphics editor. They cannot be^^J% - automatically scaled within the document. See `novel' docs, Page 9.^^J% - Suggested scale for inline images: \Ratio@EM ^^J% - Suggested scale for block images: \Ratio@BaselineSkip ^^J% - Maybe also change gaps for imageAtLeft and imageAtRight, trial-and-error.^^J}% -} -% -\setlength\parindent{1.5em} -% -%% Values to be used by footnotes: -\FPdiv{\my@FontScale}{\Current@FontSizeNum}{12} -% Substitute for \footnotesize, but only works for actual footnotes, -% about 10pt with similarly reduced skip: -\FPmul{\@myfootnotesizenum}{\my@FontScale}{10} -\FPround{\@myfootnotesizenum}{\@myfootnotesizenum}{2} -\FPmul{\@myfootnoteskipnum}{\my@FontScale}{\Current@BaselineSkipNum} -\FPmul{\@myfootnoteskipnum}{\@myfootnoteskipnum}{0.84} -\FPround{\@myfootnoteskipnum}{\@myfootnoteskipnum}{2} -% -%% end set textwidth, font size, baselineskip - +% \evensidemargin is at the left (outer edge) of verso pages. + \gsetlength\evensidemargin{% + \@OuterMargin+0.5\paperwidth-0.5\@TrimWidth-72.27pt% + } -%% BEGIN LAYOUT CALCULATIONS -%% ----------------------------------------------------------------------------- -\if@gotHeader - \setlength\headheight{\nbs} - \FPsub{\@headsepmul}{\@headjump}{1} - \FPmul{\@headsep}{\@headsepmul}{\Current@BaselineSkipNum} - \setlength\headsep{\@headsep pt} -\else - \setlength\headheight{0pt} - \setlength\headsep{0pt} -\fi % -% Prior to this, the following were set by user or calculated: -% \textwidth \headsep \headheight -% -\setlength\paperwidth{\New@MediaWidth} % MediaWidth -\setlength\paperheight{\New@MediaHeight} % MediaHeight -%% The `closecrop' class option calculates layout, then removes most of the -%% margins. Draft mode only. Purpose is to create a file with just enough white -%% space around the text to be readable on a handheld device. Not an E-book! -%% Additional closecrop code is located farther down this page. \if@closecrop - \setlength\paperwidth{\textwidth+0.2in} + \gsetlength\oddsidemargin{-0.9in} + \gsetlength\evensidemargin{-0.9in} \fi % -% Standard TeX \hoffset and \voffset is not relative to the MediaBox, but is -% relative to 1in from the top left corner of the MediaBox. Ouch. -% I thought about making the 1in go away, by re-setting \hoffset and \voffset -% to -1in each. Then other calculations would make more sense. -% In the end, I decided against that, since other packages expect the usual. -\setlength\hoffset{0pt} % relative to 1in built-in offset at left side -\setlength\voffset{0pt} % relative to 1in built-in offset at top -% -% \textheight is peculiar. Unless it is exact to 1/65536 TeX pt, which is -% the smallest resolution, the log file will babbled about Underfull vbox -% (badness 10000) for every page. I believe this is a bug in Tex. It's not -% all that bad, folks. On the other hand, if \textheight is even a fraction -% smaller than its theoretical value, there will be one less line of text. -% Even the geometry package can miss, due to rounding error somewhere. -% After some investigation, I determined that the following works. Basically, -% \textheight must be the normal baselineskip multiplied by the number of lines -% per page, minus 1 for the (invisible) footskip, with \normalFontSize added. -% To straddle the fence between Underfull vbox complaints, and missing a line, -% I added a very tiny fudge amount, which is less that 1/65536pt. -\FPsub{\less@LinesPerPage}{\my@LinesPerPage}{1} -\setlength\textheight{\normalFontSize+\less@LinesPerPage\nbs+0.000001pt} -% -% \oddsidemargin is at the left (inside, spine edge) of recto pages. -% Measured 1in (72.27pt) inside the MediaBox, to the textblock. May be negative. -% When the TrimBox equals the MediaBox, or is centered within it, -% the value is \New@InsideMargin+0.5\New@MediaWidth-0.5\New@TrimWidth-72.27pt -\if@offcenterTrim - \setlength\oddsidemargin{\New@InsideMargin-72.27pt} -\else - \setlength\oddsidemargin{% - \New@InsideMargin+0.5\New@MediaWidth-0.5\New@TrimWidth-72.27pt} -\fi -% -\if@closecrop - \setlength\oddsidemargin{-0.9in} -\fi -% -% \evensidemargin is at the left (outside edge) of verso pages. -% Calculation as above, but using \New@OutsideMargin -\if@offcenterTrim - \setlength\evensidemargin{\New@OutsideMargin-72.27pt} -\else - \setlength\evensidemargin{% - \New@OutsideMargin+0.5\New@MediaWidth-0.5\New@TrimWidth-72.27pt} -\fi -% -\if@closecrop - \setlength\evensidemargin{-0.9in} -\fi -% -% \topmargin is measured from 1in below the top of the MediaBox, to the top of -% whatever comes first (header or textblock). May be negative. -% When the TrimBox equals the MediaBox, or is centered within it, -% the value is \New@TopMargin+0.5\New@MediaHeight-0.5\New@TrimHeight-72.27pt -\if@offcenterTrim - \setlength\topmargin{\New@TopMargin-72.27pt} -\else - \setlength\topmargin{% - \New@TopMargin+0.5\New@MediaHeight-0.5\New@TrimHeight-72.27pt} -\fi -% -\if@closecrop - \if@gotHeader - \setlength\topmargin{-1in} - \else - \setlength\topmargin{-0.9in} - \fi -\fi -%% -% Vertical position of the textblock is measured to the "top" of the first line -% of text. But that could be an X height, or an accented character height, -% an ascender, or something else, depending on the line's content. -% Setting \topskip=\normalFontSize places the "top" at 1em above the baseline, -% which provides a fixed clearance regardless of accented characters -% (unless stacked high). Note that when \charscale is used to make a special -% line start, it doesn't affect the height, since it is "smashed." -\setlength\topskip{\normalFontSize} -% -% In `novel' class, footers are done in an unusual manner. The position of -% the footer baseline is fixed, regardless of the desired jump between text -% and footer. Then, the content (if any) of the footer is relatively positioned -% using \smash and \raisebox. -\setlength\footskip{\nbs} -% -\if@closecrop - \if@gotFooter - \if@gotHeader - \setlength\paperheight{% - \textheight+\headsep+\headheight+\@footjump\nbs+1pt} - \else - \setlength\paperheight{% - \textheight+\headsep+\headheight+\@footjump\nbs+\nfs} - \fi - \else - \setlength\paperheight{\textheight+\headsep+\headheight+0.1in} - \fi -\fi -% -%% End layout calculations. +% \topmargin is measured from 1in (72.27pt) below the top of the MediaBox, +% to the top of whatever comes first (header or textblock). May be negative. +% For consistency, the topmost baseline (header or main text) will be +% positioned at 1em below the margin. + \gsetlength\topmargin{\@TopMargin+0.5\paperheight-0.5\@TrimHeight-72.27pt} + \if@HasHeader\else + \gsetlength\topmargin{\topmargin-\baselineskip+\@SetFontSize} + \fi -%% Sanity check: +% novel.cls sets a tentative em size (probably 10pt) so that packages requiring +% an integer point size of 10, 11, or 12 will load without complaint. +% Then, the real point size is established here, when it is too late for +% such packages to complain. Sneaky, eh? +% However, TeX places a strut in the header, rising 0.7x tentative size above +% the header baseline. If the real size is too small, then the strut is +% too large, which displaces the header text downward, simultaneously +% shrinking the headsep and possibly affecting the textblock position. +% This unlikely problem cannot be fixed by adjusting the headheight, but it +% can be fixed by adjusting the topmargin and headsep to compensate: +\ifdimcomp{\@SetFontSize}{<}{\@TentativeEmN pt}{ % + \setlength\@tempLength{\@TentativeEmN pt} + \gsetlength\topmargin{\topmargin-0.7\@tempLength+0.7\@SetFontSize} + \gsetlength\headsep{\headsep+0.7\@tempLength-0.7\@SetFontSize} +}{} % +%% +% It seems that, unless specified by user, TeX may place the top text baseline +% in a vertical position that depends on the height of text in that line. +% That height may vary, depending on ascenders or diacriticals there. +% In order to fix the position, \topskip gets a non-flexible setting. +% The best value is normal baselineskip, partly because it looks right, +% and also to avoid underfull vboxes on nearly every page. +\gsetlength\topskip{\baselineskip} +% In `novel' class, footers are done in an unusual manner, as explained above. +% To fix the position of the virtual footer baseline: +\gsetlength\footskip{\baselineskip} +%% Sanity check: Trim Size must be contained within Media Size. \ifthenelse{% - \dimtest{\New@TrimWidth}{>}{\New@MediaWidth} % - \OR \dimtest{\New@TrimHeight}{>}{\New@MediaHeight}% + \dimtest{\@TrimWidth}{>}{\paperwidth} % + \OR \dimtest{\@TrimHeight}{>}{\paperheight}% }{% \ClassError{novel}{Media Size too small for TrimSize}% - {You wrote \string\SetMediaSize\space with length(s) too small^^J% + {You wrote \string\SetMediaSize\space with length(s) too small ^^J% for the default Trim Size or your values in \string\SetTrimSize.}% -}{} -%% end sanity check - - - -% When Media Size exceeds Trim Size, this sets the position: -\newlength\temp@PaperWidth -\newlength\temp@PaperHeight -\newlength\temp@Hoffset -\newlength\temp@Voffset -% -\if@offcenterTrim - \setlength\temp@PaperWidth{\New@TrimWidth} - \setlength\temp@PaperHeight{\New@TrimHeight} - \setlength\temp@Hoffset{0pt} - \setlength\temp@Voffset{0pt} -\else - \setlength\temp@PaperWidth{\New@MediaWidth} - \setlength\temp@PaperHeight{\New@MediaHeight} - \setlength\temp@Hoffset{\temp@PaperWidth} - \addtolength\temp@Hoffset{-\New@TrimWidth} - \setlength\temp@Hoffset{0.5\temp@Hoffset} - \setlength\temp@Voffset{\temp@PaperHeight} - \addtolength\temp@Voffset{-\New@TrimHeight} - \setlength\temp@Voffset{0.5\temp@Voffset} -\fi -% End when Media Size exceeds Trim Size. - - -% When Media Size = Trim Size, cropmarks are disabled. -% Too late for \@cropviewfalse; OK since CropBox already calculated properly. -\ifthenelse{% - \dimtest{\New@TrimWidth}{=}{\New@MediaWidth} % - \AND \dimtest{\New@TrimHeight}{=}{\New@MediaHeight}% -}{\global\@cropmarksfalse}{} -% end disabling `cropmarks' option. - -% Left, Right, Top, Bottom, x and y -\newlength\Trim@Lx -\newlength\Trim@Rx -\newlength\Trim@Ty -\newlength\Trim@By -\newlength\Live@Lx -\newlength\Live@By -\newlength\adj@NewLiveHeight -\setlength\adj@NewLiveHeight{\New@LiveHeight+0.3\normalFontSize} -% -\gdef\@getPageXY{ - \ifodd\c@page - \setlength\Trim@Lx{\oddsidemargin-\New@InsideMargin+72.27pt} - \setlength\Trim@Rx{\Trim@Lx+\New@TrimWidth} - \setlength\Live@Lx{\oddsidemargin+72.27pt} - \else - \setlength\Trim@Lx{\evensidemargin-\New@OutsideMargin+72.27pt} - \setlength\Trim@Rx{\Trim@Lx+\New@TrimWidth} - \setlength\Live@Lx{\evensidemargin+72.27pt} - \fi - \if@offcenterTrim - \setlength\Trim@By{\New@MediaHeight-\New@TrimHeight} - \setlength\Trim@Ty{\New@MediaHeight} - \else - \setlength\Trim@By{0.5\New@MediaHeight-0.5\New@TrimHeight} - \setlength\Trim@Ty{0.5\New@MediaHeight+0.5\New@TrimHeight} - \fi - \setlength\Live@By{\Trim@By+\New@BottomMargin-0.3\normalFontSize} -} -% - - -%% With class option `shademargins' (only effective in draft mode): -% Based on code by Ulrike Fischer at tex.stackexchange.com, CC-by-sa-3.0: -% The 0.903215 is a value that the user would not be likely to choose. -% The re-defined color command makes an exception for that value. -\definecolor[named]{hingledingle}{gray}{1} % fake white, when white disallowed -% -\if@shademargins - \pagecolor{hingledingle}% - \if@offcenterTrim% - \AddToShipoutPictureBG{\@getPageXY% - \AtPageLowerLeft{\color[gray]{0.903215}% - \hspace{\Trim@Lx}\rule[\Trim@By]{\New@TrimWidth}{\New@TrimHeight}}% - }% - % - \AddToShipoutPictureBG{\@getPageXY% - \AtPageLowerLeft{\color{hingledingle}% - \hspace{\Live@Lx}\rule[\Live@By]{\New@LiveWidth}{\adj@NewLiveHeight}}% - }% - \else% trim is centered - \AddToShipoutPictureBG{\@getPageXY% - \AtPageLowerLeft{\color[gray]{0.903215}% - \hspace{\Trim@Lx}\rule[\Trim@By]{\New@TrimWidth}{\New@TrimHeight}}% - }% - % - \AddToShipoutPictureBG{\@getPageXY% - \AtPageLowerLeft{\color{hingledingle}% - \hspace{\Live@Lx}\rule[\Live@By]{\New@LiveWidth}{\adj@NewLiveHeight}}% - }% - \fi% -\fi % end \if@shademargins -% - -% Labels each page with DRAFT at upper left, if in draft mode: -\if@useDraftMode - \AddToShipoutPictureBG{\@getPageXY% - \AtPageUpperLeft{\raisebox{-\nbs}{\textbf{~DRAFT}}} - }% -\fi -% - -% Cropmarks (trim marks, really) are not important in this document class. -% That's because the targeted printing services generally do not want them. -% But a minimal capability was easy to add. The far end of each mark is -% half an inch from the trim area. The close end is separated by a gap >= 0pt. -% So the length of the marks is generally less than half an inch. -% If trim is at the edge of the media box, instead of centered, -% then only one pair of marks will be written. -% The marks are turned on using `cropmarks' class option. The gap is set -% in Preamble using \SetCropmarkGap{length}. -\if@cropmarks - \if@offcenterTrim - \ifodd\c@page - % H bottom right: - \AddToShipoutPictureBG{\@getPageXY\AtPageLowerLeft{% - \hspace{\dimexpr\Trim@Rx+\@mygap}\rule[\Trim@By-0.5pt]{0.5in-\@mygap}{0.5pt}}} - % V bottom right: - \AddToShipoutPictureBG{\@getPageXY\AtPageLowerLeft{% - \hspace{\Trim@Rx}\rule[\Trim@By-0.5in]{0.5pt}{0.5in-\@mygap}}} - \else - % H bottom left: - \AddToShipoutPictureBG{\@getPageXY\AtPageLowerLeft{% - \hspace{\dimexpr\Trim@Lx-0.5in}\rule[\Trim@By-0.5pt]{0.5in-\@mygap}{0.5pt}}} - % V bottom left: - \AddToShipoutPictureBG{\@getPageXY\AtPageLowerLeft{% - \hspace{\dimexpr\Trim@Lx-0.5pt}\rule[\Trim@By-0.5in]{0.5pt}{0.5in-\@mygap}}} - \fi - \else - % H top left: - \AddToShipoutPictureBG{\@getPageXY% - \AtPageLowerLeft{% - \hspace{\dimexpr\Trim@Lx-0.5in}\rule[\Trim@Ty]{0.5in-\@mygap}{0.5pt}}} - % H bottom left: - \AddToShipoutPictureBG{\@getPageXY\AtPageLowerLeft{% - \hspace{\dimexpr\Trim@Lx-0.5in}\rule[\Trim@By-0.5pt]{0.5in-\@mygap}{0.5pt}}} - % H top right: - \AddToShipoutPictureBG{\@getPageXY\AtPageLowerLeft{% - \hspace{\dimexpr\Trim@Rx+\@mygap}\rule[\Trim@Ty]{0.5in-\@mygap}{0.5pt}}} - % H bottom right: - \AddToShipoutPictureBG{\@getPageXY\AtPageLowerLeft{% - \hspace{\dimexpr\Trim@Rx+\@mygap}\rule[\Trim@By-0.5pt]{0.5in-\@mygap}{0.5pt}}} - % V top left: - \AddToShipoutPictureBG{\@getPageXY\AtPageLowerLeft{% - \hspace{\dimexpr\Trim@Lx-0.5pt}\rule[\Trim@Ty+\@mygap]{0.5pt}{0.5in-\@mygap}}} - % V bottom left: - \AddToShipoutPictureBG{\@getPageXY\AtPageLowerLeft{% - \hspace{\dimexpr\Trim@Lx-0.5pt}\rule[\Trim@By-0.5in]{0.5pt}{0.5in-\@mygap}}} - % V top right: - \AddToShipoutPictureBG{\@getPageXY\AtPageLowerLeft{% - \hspace{\Trim@Rx}\rule[\Trim@Ty+\@mygap]{0.5pt}{0.5in-\@mygap}}} - % V bottom right: - \AddToShipoutPictureBG{\@getPageXY\AtPageLowerLeft{% - \hspace{\Trim@Rx}\rule[\Trim@By-0.5in]{0.5pt}{0.5in-\@mygap}}} - \fi -\fi -% -%% end cropmarks - +}{} % +% end sanity check +%% end finish layout. %% +\endinput +%% %% End of file `novel-CalculateLayout.sty'. diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-ChapterScene.sty b/Master/texmf-dist/tex/lualatex/novel/novel-ChapterScene.sty index e13eb3e33f4..69bf8f0d9b4 100644 --- a/Master/texmf-dist/tex/lualatex/novel/novel-ChapterScene.sty +++ b/Master/texmf-dist/tex/lualatex/novel/novel-ChapterScene.sty @@ -1,6 +1,6 @@ %% -%% This is file `novel-ChapterScene.sty', part of class `novel'. -%% Copyright 2017 Robert Allgeyer. +%% This is file `novel-ChapterScene.sty', part of `novel' document class. +%% Copyright 2017-2018 Robert Allgeyer. %% %% %% This file may be distributed and/or modified under the @@ -13,31 +13,87 @@ %% %% \ProvidesFile{novel-ChapterScene.sty}% -[2018/01/14 v1.46.2 LaTeX file (chapter and scene macros)] +[2018/03/28 v1.50 LaTeX file (chapter and scene macros)] %% - -% Class `novel' does not use \maketitle. -\gdef\maketitle{% - \ClassError{novel}{\string\maketitle does not exist in this class}% - {Sorry, but there is no \string\maketitle command in `novel' class.^^J% - You must make your own title pages! See documentation.^^J}% +% Each new chapter generally has its own header/footer style. This allows a +% default setting when chapters begin with ChapterStart environment: +\gdef\SetChapterStartStyle#1{% from v. 1.40.3 + \@tempTFfalse% + \ifthenelse{\equal{#1}{fancy}}{\@tempTFtrue}{}% + \ifthenelse{\equal{#1}{empty}}{\@tempTFtrue}{}% + \ifthenelse{\equal{#1}{plain} % + \OR \equal{#1}{fancyplain} \OR \equal{#1}{footer}}{% + \@tempTFtrue% + }{}% + \ifthenelse{\equal{#1}{forcenumber}}{\@tempTFtrue}{}% + \ifthenelse{\equal{#1}{dropfolioinside} % + \OR \equal{#1}{dropfolio} \OR \equal{#1}{dropfoliolater}}{% + \@tempTFtrue% + }{}% + \ifthenelse{\equal{#1}{dropfoliobeneath}}{\@tempTFtrue}{}% + \if@tempTF% + \gdef\@setchapterstart{#1}% + \else% + \ClassError{novel}{Invalid choice for \string\SetChapterStartStyle}% + {Choose: fancy, empty, plain, footer, forcenumber, % + dropfolioinside, dropfoliobeneath.}% + \fi% } -% +\let\SetChapterStart\SetChapterStartStyle\relax % deprecated from v1.40.3. +\SetChapterStartStyle{footer} % default +% New in version 1.40.2: +\gdef\SetChapterStartHeight#1{% + \FPifint{#1}\else% + \ClassError{novel}{\string\SetChapterStartHeight\space integer >= 4}% + {Height of ChapterStart must be integer, greater than or equal to 4.}% + \fi% + \FPiflt{#1}{4}% + \ClassError{novel}{\string\SetChapterStartHeight\space integer >= 4}% + {Height of ChapterStart must be integer, greater than or equal to 4.}% + \else\fi% + \gdef\@setchapterstartheight{#1}% +} +\SetChapterStartHeight{10} % default +% See novel.cls for the accompanying AtBeginDocument routine. +% Scene breaks: +% \SetScenebreakIndent controls whether line after \scenebreak, \sceneline, +% or \scenestars will be indented. Set true or false, default false. +%% End reserve space for header/footer and set default ChapterStart +\newif\if@IndentAfterScenebreak +\newcommand\SetScenebreakIndent[1]{% true or false, default false. + \@tempTFfalse + \ifthenelse{\equal{#1}{true}}{% + \@tempTFtrue + \global\@IndentAfterScenebreaktrue + }{}% + \ifthenelse{\equal{#1}{false}}{% + \@tempTFtrue + \global\@IndentAfterScenebreakfalse + }{}% + \if@tempTF\else% + \ClassError{novel}{Bad argument for \string\SetScenebreakIndent\space}% + {\string\SetScenebreakIndent\space argument must be true or false.}% + \fi% +} +\SetScenebreakIndent{false} % default +% Deprected from v. 1.40.3: +\newcommand\IndentAfterScenebreak{\global\@IndentAfterScenebreaktrue} + %% SCENE CHANGES -%% ----------------------------------------------------------------------------- -%% \scenebreak \sceneline \scenestars +%% ---------------------------------------------------------------------------- +% \scenebreak \sceneline \scenestars % Use anywhere in document body. % These commands skip a line. % \scenebreak leaves the gap empty. % \sceneline centers a line, about 1/3 textwidth. % \scenestars centers three widely-spaced asterisks. % Default behavior is \noindent for following paragraph. -% Use \SetScenebreakIndent{true or false} in Preamble to change this globally. -% Either way, local behavior can be changed using \forceindent or \backindent. +% Use \SetScenebreakIndent{true or false} in Preamble to change globally. +% Either way, local behavior changed using \forceindent or \backindent. \newcommand\scenebreak{\null} % \newcommand\sceneline{% @@ -77,39 +133,46 @@ %% ChapterStart environment. % The most useful way to start a new chapter. Occupies a fixed amount of -% vertical space. Also self-adjust when used with dropfolio. Automatically -% calls \thispagestyle if set for all chapter displays. -% This environment is not restricted to chapters. It is also used for chapter-like -% sections in front matter or main matter, as long as they are styled like a chapter. -\newif \if@addCTline \@addCTlinetrue +% vertical space. Also self-adjust when used with dropfolio. Automatically +% calls \thispagestyle if set for all chapter displays. +% This environment is not restricted to chapters. It is also used for +% chapter-like sections in front matter or main matter, +% as long as they are styled like a chapter. \newcounter{@linequarter} -\newif \if@csalignok \@csalignokfalse -\newlength\@oldparindent + % -% The argument is the number of normal baselineskips high (integer GTE 4). -\ExplSyntaxOn -\DeclareDocumentEnvironment {ChapterStart} { O{\@setchapterstartheight} O{\@setchapterstart} } -{% - \gdef\@thiscsstyle{#2}% - \thispagestyle{\@thiscsstyle}% - \setlength\@oldparindent{\parindent}% - \global\@oldparindent=\@oldparindent% - \setlength\parindent{0pt}% - \global\parindent=\parindent% +% The argument is the number of normal baselineskips high. +\newif\if@WithinChapterStart +\DeclareDocumentEnvironment {ChapterStart} % +{ O{\@setchapterstartheight} O{\@setchapterstart} }{% + \if@ThisPageStyle\else% + \gdef\@thiscsstyle{#2}% + \thispagestyle{\@thiscsstyle}% + \fi% + \global\@WithinChapterStarttrue% + \suppressfloats[t]% ensures that a floated image does not go on top + \gsetlength\parindent{0pt}% within environment \ResetFootnoteSymbol% resets symbolic markers, but not numerical markers - \IfStrEq{#1}{*}{\gdef\@thiscsheight{\@setchapterstartheight}}{\gdef\@thiscsheight{#1}}% + \IfStrEq{#1}{*}{% + \gdef\@thiscsheight{\@setchapterstartheight}% + }{% + \gdef\@thiscsheight{#1}% + }% \FPsub{\@fixlines}{\@thiscsheight}{2}% \FPsub{\@fixlines}{\@fixlines}{0.001}% fudge to avoid rounding problems \FPround{\@thiscsheight}{\@thiscsheight}{0}% \FPiflt{\@thiscsheight}{4}% - \IfStrEq{\@thiscsstyle}{dropfolioinside}{% - \ClassError{novel}{ChapterStart~ height~ insufficient~ for~ dropfolioinside}% - {With~ dropfolioinside,~ the~ ChapterStart~ height~ must~ be~ at~ least~ 4.}% - }{}% + \def\@smcserr{% + \ClassError{novel}{ChapterStart height insufficient for thispagestyle}% + {With your choice for thispagestyle, the height must be at least 4.}% + }% + \IfStrEq{\@thiscsstyle}{dropfolioinside}{\@smcserr}{}%j + \IfStrEq{\@thiscsstyle}{plain}{\@smcserr}{}% + \IfStrEq{\@thiscsstyle}{fancyplain}{\@smcserr}{}% \else\fi% \FPiflt{\@thiscsheight}{3}% - \ClassError{novel}{ChapterStart~ height~ must~ be~ at~ least~ 3}% - {If~ you~ need~ height~ less~ than~ 3,~ consider~ \string\QuickChapter\space~ instead.}% + \ClassError{novel}{ChapterStart height must be at least 3}% + {If you need height less than 3, consider \string\QuickChapter.}% \else\fi% \null% always a line above the first thing to appear within the environment \setcounter{@linequarter}{0}% @@ -129,12 +192,13 @@ }{\vspace{0.25\nbs}}{}% \end{textblock*}% \vspace{\@fixlines\nbs}% - \if@addCTline\null\fi% - \setlength\parindent{\@oldparindent}% - \global\parindent=\parindent% + \if@DeleteCSline\else\null\fi% adjusts when dropfolioinside + \global\@WithinChapterStartfalse% + \vspace{\@NovelCaulk}% + \gsetlength\parindent{\normalparindent}% restored \nov@AfterGroup\NoIndentAfterThis% etextools and noindentafter } -\ExplSyntaxOff % end ChapterStart environment +% end ChapterStart environment %% @@ -144,13 +208,13 @@ \newcommand\ChapterTitle[2][c]{% optional alignment l, c, r \ignorespaces% \vspace{0.5\nbs}\addtocounter{@linequarter}{2}% - \@csalignokfalse% - \ifthenelse{\equal{#1}{l}}{\let\@csalign\relax\@csalignoktrue}{}% - \ifthenelse{\equal{#1}{c}}{\let\@csalign\centering\relax\@csalignoktrue}{}% - \ifthenelse{\equal{#1}{r}}{\let\@csalign\hfill\relax\@csalignoktrue}{}% - \if@csalignok\else% + \@tempTFfalse% + \ifthenelse{\equal{#1}{l}}{\let\@csalign\relax\@tempTFtrue}{}% + \ifthenelse{\equal{#1}{c}}{\let\@csalign\centering\relax\@tempTFtrue}{}% + \ifthenelse{\equal{#1}{r}}{\let\@csalign\hfill\relax\@tempTFtrue}{}% + \if@tempTF\else% \ClassError{novel}{Chapter Title, Deco, Subtitle align must be l, c, or r}% - {On page \thepage you wrote a Chapter command with alignment^^J% + {On page \thepage you wrote a Chapter command with alignment ^^J% other than the allowed l, c, or r.}% \fi% {\@csalign\stake\smash{{\chapterfont{}#2}}\par}% @@ -158,13 +222,13 @@ % \newcommand\ChapterSubtitle[2][c]{% optional alignment l, c, r \vspace{0.25\nbs}\addtocounter{@linequarter}{1} - \@csalignokfalse% - \ifthenelse{\equal{#1}{l}}{\let\@csalign\relax\@csalignoktrue}{} - \ifthenelse{\equal{#1}{c}}{\let\@csalign\centering\relax\@csalignoktrue}{} - \ifthenelse{\equal{#1}{r}}{\let\@csalign\hfill\relax\@csalignoktrue}{} - \if@csalignok\else% + \@tempTFfalse% + \ifthenelse{\equal{#1}{l}}{\let\@csalign\relax\@tempTFtrue}{} + \ifthenelse{\equal{#1}{c}}{\let\@csalign\centering\relax\@tempTFtrue}{} + \ifthenelse{\equal{#1}{r}}{\let\@csalign\hfill\relax\@tempTFtrue}{} + \if@tempTF\else% \ClassError{novel}{Chapter Title, Deco, Subtitle align must be l, c, or r}% - {On page \thepage you wrote a Chapter command with alignment^^J% + {On page \thepage you wrote a Chapter command with alignment ^^J% other than the allowed l, c, or r.}% \fi% {\@csalign{\stake\smash{\subchfont #2}}\par}% @@ -175,22 +239,23 @@ % This works because one is a letter, and the other is a number. % So it is easy to separte them by parsing. \newcommand\ChapterDeco[2][c1]{% optional alignment and scale, either order + \@tempTFfalse \StrDel{#1}{ }[\temp@cds]% may use space separator \StrDel{\temp@cds}{,}[\temp@cd]% may use comma separator \IfSubStr{#1}{l}{% left align - \let\@csalign\relax\@csalignoktrue% + \let\@csalign\relax\@tempTFtrue% \StrDel{\temp@cd}{l}[\temp@cd]% }{}% \IfSubStr{#1}{c}{% centered - \let\@csalign\centering\relax\@csalignoktrue% + \let\@csalign\centering\relax\@tempTFtrue% \StrDel{\temp@cd}{c}[\temp@cd]% }{}% \IfSubStr{#1}{r}{% right align - \let\@csalign\hfill\relax\@csalignoktrue% + \let\@csalign\hfill\relax\@tempTFtrue% \StrDel{\temp@cd}{r}[\temp@cd]% }{}% - \if@csalignok\else% - \let\@csalign\centering\relax\@csalignoktrue% + \if@tempTF\else% + \let\@csalign\centering\relax\@tempTFtrue% \fi% % Now for scaling, with adjusted vertical position: \IfEndWith{\temp@cd}{.}{\StrSubstitute{\temp@cd}{.}{.0}[\temp@cd]}{}% @@ -210,32 +275,30 @@ % is the text, using subchfont. Optional line follows using \bigemdash style. % If option is empty, no line. If a length, then the line is that length. % If option * then the line fills to end of text line. -\newlength\@tempscfx% \newcommand\QuickChapter[2][]{% \null% - \def\@qctweak{0.3} % raise above grid, em of subchfont - \noindent{\subchfont\charscale[1,0pt,\@qctweak em]{#2}% - \setlength\@tempscfx{\heightof{x}}% - \global\@tempscfx=\@tempscfx% + \noindent{\subchfont\charscale[1,0pt,0.3em]{#2}% + \gsetlength\@tempLength{\heightof{x}}% height of x in subchfont }% end subchfont - \def\@tempscfxnum{\strip@pt\@tempscfx}% - \def\nxhnum{\strip@pt\normalxheight}% - \FPdiv{\@qclineth}{\@tempscfxnum}{\nxhnum}% scale of subchfont + \FPdiv{\@qclineth}{\strip@pt\@tempLength}{\strip@pt\normalxheight}% fontscale \FPmul{\@howthick}{\@qclineth}{0.049}% typical emdash thickness, em. - \FPadd{\@howraise}{\@qctweak}{0.23}% typical emdash height em raised. - \FPmul{\@howraise}{\@howraise}{\@qclineth}% - \def\@tempscfxnum{\strip@pt\@tempscfx}% + \FPmul{\@howraise}{0.23}{\@qclineth}% typical emdash height em raised. \ifthenelse{\equal{#1}{} \OR \equal{#1}{ }}{}{% no line, else: \ifthenelse{\equal{#1}{*}}{% line fills: - ~\leaders\hbox{\smash{\rule[\@howraise em]{1pt}{\@howthick em}}}\hfill\stake\par% + ~\leaders% + \hbox{\smash{\rule[\@howraise em]{1pt}{\@howthick em}}}% + \hfill\stake\par% }{% else line at specific length: - ~\makebox[#1][l]{\leaders\hbox{\smash{\rule[\@howraise em]{1pt}{\@howthick em}}}\hfill}% + ~\makebox[#1][l]{% + \leaders\hbox{\smash{\rule[\@howraise em]{1pt}{\@howthick em}}}\hfill% + }% }% }% \NoIndentAfterThis% } % end \QuickChapter %% + %% New in version 1.40: \cleartorecto and \cleartoend % \cleartorecto works same as \clearpage when next page is recto. % If next page would be verso, a blank verso is inserted, @@ -253,22 +316,49 @@ \clearpage \fi } +\newif \if@cleartoend \gdef\cleartoend{ - \clearpage - \ifodd\c@page + \if@cleartoend\else + \clearpage + \ifodd\c@page + \thispagestyle{empty} + \null + \clearpage + \fi \thispagestyle{empty} \null \clearpage \fi - \thispagestyle{empty} - \null - \clearpage + \global\@cleartoendtrue } % +%% +\gdef\@ActivateChapterScene{% called by `novel.cls' \AtBeginDocument + % Activate user choice of whether or not to indent after scenebreak commands: + \if@IndentAfterScenebreak\else + \NoIndentAfterCmd{\scenebreak} + \NoIndentAfterCmd{\sceneline} + \NoIndentAfterCmd{\scenestars} + \fi +}% end \@ActivateChapterScene +%% + + +%% Neutralize settings commands: +\gdef\@DisableChapterSceneSettings{% called by `novel.cls' \AtBeginDocument + \LetLtxMacro\SetHeadFootStyle\relax + \LetLtxMacro\IndentAfterScenebreak\relax + \LetLtxMacro\SetScenebreakIndent\relax +}% end \@DisableChapterSceneSettings +%% -% + + +%% +\endinput +%% %% End of file `novel-ChapterScene.sty'. diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-DropCap.sty b/Master/texmf-dist/tex/lualatex/novel/novel-DropCap.sty new file mode 100644 index 00000000000..44567243054 --- /dev/null +++ b/Master/texmf-dist/tex/lualatex/novel/novel-DropCap.sty @@ -0,0 +1,237 @@ +%% +%% This is file `novel-DropCap.sty', part of `novel' document class. +%% Copyright (C) 2017-2018 Robert Allgeyer. +%% +%% It is based on `lettrine.sty', part of `lettrine' package, +%% Copyright (C) 1999-2015 Daniel Flipo. +%% +%% The license for this file is that same for `lettrine': +% +% This program can be distributed and/or modified under the terms +% of the LaTeX Project Public License either version 1.3c of this +% license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +%% +% This file is new in `novel' version 1.50. +% +\ProvidesFile{novel-DropCap.sty} + [2018/03/28 v1.50 (Drop Caps)] +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +% +% + +% +\newcounter{NDCDefaultLines} +\setcounter{NDCDefaultLines}{3} +\newcounter{NDCDefaultDepth} +\newdimen\NDCDefaultVoffset +\newdimen\NDCDefaultHoffset +\newcommand*{\NDCDefaultScale}{1} +\newcommand*{\NDCDefaultBloat}{1} +\newdimen\NDCDefaultGap +\gsetlength{\NDCDefaultGap}{0.25em} % approx. width of normal space +\newsavebox{\NDC@dropcapbox} +\newsavebox{\NDC@normalXbox} +\newcounter{NDC@lines} +\newcounter{NDC@depth} +\newdimen\NDC@antewidth +\newdimen\NDC@Pindent +\newdimen\NDC@Gap % equivalent to lettrine findent +\newdimen\NDC@Nindent % not a user setting +\newdimen\NDC@voffset +\newdimen\NDC@hoffset +\newdimen\NDC@first +\newdimen\NDC@next +\newdimen\NDC@height +\newcommand*{\NDC@ante}{} +\newcommand*{\NDC@bloat}{} +\newcommand*{\NDC@scale}{} +\def\@getNDCheight{% offsets do not affect height: + \@tempdima=\baselineskip + \setlength{\NDC@height}{\value{NDC@lines}\@tempdima}% local + \addtolength{\NDC@height}{-\@tempdima}% + \sbox{\NDC@normalXbox}{X}% Normal capital X, rather than something else. + \addtolength{\NDC@height}{\ht\NDC@normalXbox}% + \setlength{\NDC@height}{\NDC@scale\NDC@height}% local +} % +\newcommand*{\NDC@char}{% + \@getNDCheight% + % Measures drop cap capital X, rather than something else: + \sbox{\@tempboxa}{% + \NDC@charstyle\fontsize{\NDC@height}{\NDC@height}\selectfont X% + }% + \@tempcntb=\ht\@tempboxa% + \@tempcnta=\NDC@height% + \multiply\@tempcnta by 100% + \divide\@tempcntb by 100% + \divide\@tempcnta by \@tempcntb% + \advance\@tempcnta by -9999% + \ifnum\@tempcnta>0% + \def\@tempa{1.\the\@tempcnta}% + \else% + \def\@tempa{1}% + \fi% + \NDC@charstyle\fontsize{\@tempa\NDC@height}{\@tempa\NDC@height}\selectfont +} % +\define@key{NDC}{lines}{\setcounter{NDC@lines}{#1}} +\define@key{NDC}{depth}{\setcounter{NDC@depth}{#1}} +\define@key{NDC}{hoffset}{\setlength{\NDC@hoffset}{#1}} +\define@key{NDC}{voffset}{\setlength{\NDC@voffset}{#1}} +\define@key{NDC}{ante}{\renewcommand*{\NDC@ante}{#1}} % Like `lettrine' ante, +\define@key{NDC}{ante*}{\renewcommand*{\NDC@ante}{% Like `lettrine' ante, but + \setlength\NDC@antewidth{\widthof{#1}}% auto-hangs the ante in left margin. + \addtolength\NDC@antewidth{0.2em}% provides breathing room + \stake\hspace{-\NDC@antewidth}#1\hspace{0.2em}}% restores alignment +} +\define@key{NDC}{gap}{\setlength{\NDC@Gap}{#1}} +\define@key{NDC}{bloat}{\renewcommand*{\NDC@bloat}{#1}} +\define@key{NDC}{scale}{\renewcommand*{\NDC@scale}{#1}} +\newdimen\NDCboxwidth +\newdimen\NDCboxheight +\newdimen\NDCboxdepth +% +\ExplSyntaxOn +\DeclareDocumentCommand \NDC@boxcap { m }{% + \begingroup% + % The model letter has no upper diacritical. + \def\@NDCmodel{}% + \IfSubStr{ÀÁÂÃÄÅĀĂ}{#1}{\def\@NDCmodel{A}}{}% + \IfSubStr{ĆĈĊČ}{#1}{\def\@NDCmodel{C}}{}% + \IfSubStr{Ď}{#1}{\def\@NDCmodel{D}}{}% + \IfSubStr{ÈÉÊËĒĔĖĚ}{#1}{\def\@NDCmodel{E}}{}% + \IfSubStr{ĜĞĠ}{#1}{\def\@NDCmodel{G}}{}% + \IfSubStr{Ĥ}{#1}{\def\@NDCmodel{H}}{}% + \IfSubStr{ÌÍÎÏĨĪĬİ}{#1}{\def\@NDCmodel{I}}{}% + \IfSubStr{Ĵ}{#1}{\def\@NDCmodel{J}}{}% + \IfSubStr{Ĺ}{#1}{\def\@NDCmodel{L}}{}% + \IfSubStr{ÑŃŇ}{#1}{\def\@NDCmodel{N}}{}% + \IfSubStr{ÒÓÔÕÖŌŎŐ}{#1}{\def\@NDCmodel{O}}{}% + \IfSubStr{ŔŘ}{#1}{\def\@NDCmodel{R}}{}% + \IfSubStr{ŚŜŠ}{#1}{\def\@NDCmodel{S}}{}% + \IfSubStr{Ť}{#1}{\def\@NDCmodel{T}}{}% + \IfSubStr{ÙÚÛÜŨŪŬŮŰ}{#1}{\def\@NDCmodel{U}}{}% + \IfSubStr{Ŵ}{#1}{\def\@NDCmodel{W}}{}% + \IfSubStr{ÝŶŸ}{#1}{\def\@NDCmodel{Y}}{}% + \IfSubStr{ŹŻŽ}{#1}{\def\@NDCmodel{Z}}{}% + \IfSubStr{DŽ}{#1}{\def\@NDCmodel{DZ}}{}% diglyph + \setlength\fboxsep{0.16\@SetFontSize}% + \setlength\fboxrule{0.02\@SetFontSize}% + \ifthenelse{\equal{\@NDCmodel}{}}{% + \framebox{\phantom{|}#1\phantom{|}}% + }{% + \framebox{\phantom{|\@NDCmodel}\llap{\smash{#1}}\phantom{|}}% + }% + \endgroup% +}% end boxcap +% +\DeclareDocumentCommand \dropcap { s O{} m } {% + \@tempTFfalse% + \IfSubStr{#3}{png}{\@tempTFtrue}{}% + \IfSubStr{#3}{PNG}{\@tempTFtrue}{}% + \IfSubStr{#3}{jpg}{\@tempTFtrue}{}% + \IfSubStr{#3}{JPG}{\@tempTFtrue}{}% + \IfSubStr{#3}{jpeg}{\@tempTFtrue}{}% + \IfSubStr{#3}{JPEG}{\@tempTFtrue}{}% + \setcounter{NDC@lines}{\value{NDCDefaultLines}}% + \setcounter{NDC@depth}{\value{NDCDefaultDepth}}% + \setlength{\NDC@hoffset}{\NDCDefaultHoffset}% + \renewcommand*{\NDC@bloat}{\NDCDefaultBloat}% + \renewcommand*{\NDC@scale}{\NDCDefaultScale}% + \setlength{\NDC@voffset}{\NDCDefaultVoffset}% + \renewcommand*{\NDC@ante}{}% + \setlength{\NDC@Gap}{\NDCDefaultGap}% + \setlength{\NDC@Nindent}{0pt}% + \setkeys{NDC}{#2}% + \if@tempTF% + \def\@dropthisthing{\InlineImage[0em,b]{#3}}% + \else% + \IfBooleanTF{#1}% + {\def\@dropthisthing{\NDC@boxcap{#3}}}% + {\def\@dropthisthing{#3}}% + \fi% + \ifnum\value{NDC@lines}=1% + \par\noindent% + \NDC@ante% + \@dropthisthing% + \else% + % Compensate for effect of using \Rework: + \if@ReworkTrimSize% + \FPdiv{\@tempN}{\strip@pt\textwidth}{\strip@pt\@OriginalTextWidth}% + \FPmul{\NDC@bloat}{\NDC@bloat}{\@tempN}% + \else% + \if@ReworkMargins + \FPdiv{\@tempN}{\strip@pt\textwidth}{\strip@pt\@OriginalTextWidth}% + \FPmul{\NDC@bloat}{\NDC@bloat}{\@tempN}% + \fi% + \fi% + \sbox{\NDC@normalXbox}{X}% Normal capital X. + \sbox{\NDC@dropcapbox}{\scalebox{\NDC@bloat}[1]{\NDC@char\@dropthisthing}}% + \@tempdima=\baselineskip% + \setlength{\NDC@first}{-\value{NDC@lines}\@tempdima}% + \addtolength{\NDC@first}{\@tempdima}% + \sbox{\@tempboxa}{X}% + \addtolength{\NDC@first}{-\ht\@tempboxa}% + \addtolength{\NDC@first}{\NDC@voffset}% + \addtolength{\NDC@first}{\ht\NDC@dropcapbox}% + \addtolength{\NDC@voffset}{-\value{NDC@lines}\@tempdima}% + \addtolength{\NDC@voffset}{\@tempdima}% + \par% + \setlength{\NDC@Pindent}{\wd\NDC@dropcapbox}% + \addtolength{\NDC@Pindent}{\NDC@hoffset}% + \settowidth{\NDC@first}{\NDC@ante}% + \addtolength{\NDC@Pindent}{\NDC@first}% + \addtolength{\NDC@Pindent}{\NDC@Gap}% + \setlength{\NDC@first}{\linewidth}% + \addtolength{\NDC@first}{-\NDC@Pindent}% + \addtolength{\NDC@Nindent}{\NDC@Pindent}% + \setlength{\NDC@next}{\linewidth}% + \addtolength{\NDC@next}{-\NDC@Nindent}% + \addtolength{\NDC@Pindent}{\rightmargin}% + \addtolength{\NDC@Nindent}{\rightmargin}% + \setlength{\NDCboxwidth}{\wd\NDC@dropcapbox}% + \setlength{\NDCboxheight}{\ht\NDC@dropcapbox}% + \setlength{\NDCboxdepth}{\dp\NDC@dropcapbox}% + \addtocounter{NDC@lines}{1}% + \addtocounter{NDC@lines}{\value{NDC@depth}}% + \def\NDC@parshape{\c@NDC@lines \the\NDC@Pindent \the\NDC@first}% + \@tempcnta=\tw@% + \@whilenum \@tempcnta<\c@NDC@lines\do{% + \edef\NDC@parshape{\NDC@parshape \the\NDC@Nindent \the\NDC@next}% + \advance\@tempcnta\@ne}% + \edef\NDC@parshape{\NDC@parshape \rightmargin \the\linewidth}% + \noindent% + \parshape=\NDC@parshape\relax% + \smash{% + \llap{% + \mbox{\NDC@ante}% + \raisebox{\NDC@voffset}{\usebox{\NDC@dropcapbox}}% + \hskip\the\NDC@Gap% + }% + }% + \fi% +}% end @NDCdropcap +\ExplSyntaxOff +%% + + +%% In case the user prefers `lettrine': +\gdef\@ActivateDropCaps{% called by `novel.cls' \AtBeginDocument + \@ifpackageloaded{lettrine}{% + \global\LettrineOnGridtrue % Necessary. + \gsetlength\DiscardVskip{10\nbs} % effectively infinite + }{ % For test purposes only: + \providecommand\lettrine[3][]{##2##3} % echoes its mandatory arguments + }% +}% end \@ActivateDropCaps + + + +%% +\endinput +%% +%% End of file `novel-DropCap.sty'. + diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-FOGRA39.clo b/Master/texmf-dist/tex/lualatex/novel/novel-FOGRA39.clo index e5d7bfa9f4e..dab3501fb94 100644 --- a/Master/texmf-dist/tex/lualatex/novel/novel-FOGRA39.clo +++ b/Master/texmf-dist/tex/lualatex/novel/novel-FOGRA39.clo @@ -1,14 +1,27 @@ -% Typically used in Europe. Novel file version 1.46.2 +%% +%% This is file `novel-FOGRA39.clo', part of `novel' document class. +%% The values of the arguments are public industry standards. +\ProvidesFile{novel-FOGRA39.clo}% +[2018/01/14 any version. (novel Output Intent FOGRA39)] +%% -% The values of the arguments are public industry standards. + +% Typically used in Europe. % Remember: TeX special characters must be backslashed here. % You may see % or # or _ in the data or file names. % Be sure that they are written as \% \# \_ or there will be trouble. +% If any line is long, let it wrap. Do not attempt to break it onto multiple lines. + \gdef\@OIidentifier{FOGRA39} % also called "reference name" \gdef\@OIcondition{Offset commercial and specialty printing according to ISO 12647-2:2004 / Amd 1, paper type 1 or 2 (gloss or matte coated offset, 115 g/m2), screen frequency 60/cm.} \gdef\@OIinfo{Coated FOGRA39 (ISO 12647-2:2004)} \gdef\@OIregistry{http://www.color.org} \gdef\@OIprofile{CoatedFOGRA39.icc} +%% +\endinput +%% +%% end of file `novel-FOGRA39.clo' + diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-FileData.sty b/Master/texmf-dist/tex/lualatex/novel/novel-FileData.sty index 4cf322f3bdb..56d349d332e 100644 --- a/Master/texmf-dist/tex/lualatex/novel/novel-FileData.sty +++ b/Master/texmf-dist/tex/lualatex/novel/novel-FileData.sty @@ -1,6 +1,6 @@ %% -%% This is file `novel-FileData.sty', part of class `novel'. -%% Copyright 2017 Robert Allgeyer. +%% This is file `novel-FileData.sty', part of `novel' document class. +%% Copyright 2017-2018 Robert Allgeyer. %% %% %% This file may be distributed and/or modified under the @@ -13,22 +13,42 @@ %% %% \ProvidesFile{novel-FileData.sty}% -[2018/01/14 v1.46.2 LaTeX file (File Data settings)] +[2018/03/28 v1.50 LaTeX file (File Data settings)] %% +%% File Data, also known as PDF Metadata, is non-printing identifying +%% information in the PDF file. Some or all of it can be read by various +%% PDF reader software. +%% PDF/X is also considered File Data, as it concerns the structure of the +%% file and its relationaship to printers, rather than its visible content. +%% In principle, you could set the title as empty. But in that case, no other +%% File Data will be included, and you cannot have PDF/X compliance. +%% There are many more kinds of File Data that a PDF can include, such as +%% subject and keywords. But `novel' is specifically for printing to paper, +%% not for electronic documents that would be found by database search. +%% Thus, there is no provision for such additional File Data. +%% When you sign up with a print service, you will provide subject, keywords, +%% and description directly to their database, rather than in the PDF. +%% No need to set copyright in metadata, since your file is only for use by +%% the print service, and is not being distributed as a PDF e-book. +%% Your copyright notice is on the printed page, where it should be. +%% Particularly note that your print service is NOT the publisher: YOU are! + + %% FILE DATA (PDF Metadata) -%% ----------------------------------------------------------------------------- +%% ---------------------------------------------------------------------------- %% % \title{} or \SetTitle{} % Copied to File Data at end of Preamble, unless not set. % Provides \theTitle anywhere. % If not set, PDF cannot conform to PDF/X. +\newif \if@HasTitle % true if \SetTitle or \title used \gdef\SetTitle#1{\gdef\@title{#1}} % for stylistic consistency \gdef\title#1{\gdef\@title{#1}} \gdef\thetitle{\@title} % for convenience \gdef\theTitle{\@title} -\SetTitle{} +\SetTitle{IMPORTANT: Provide Book Title} % Default v. 1.46.1. Formerly empty. % % \author{} or \SetAuthor{} % Copied to File Data at end of preamble, unless not set. @@ -51,41 +71,32 @@ % \SetApplication{} (rarely used) % Also known as CreatorTool. % Name of the software that created the source document. -% Changing this does not change the software, it just changes the name. +% Changing this does not change the software, it just changes the information. % Normally leave as default, but can change if urgent. \gdef\SetApplication#1{\gdef\@novelApplication{#1}} \SetApplication{LuaLaTeX with novel and microtype} % default % % \SetProducer{} (rarely used) -% Name of the software that compiles to source to make PDF. -% Changing this does not change the software, it just changes the name. +% Name of the software that compiles the source to make PDF. +% Changing this does not change the software, it just changes the information. % Normally leave as default, but can change if urgent. \gdef\SetProducer#1{\gdef\@novelProducer{#1}} \SetProducer{LuaLaTeX with novel-pdfx and hyperref} % default % -% Although some other data fields could have been added, -% they do not pertain to fiction, especially if your book is print-on-demand. -% For example, subject, keywords and description are not read from PDF metadata, -% you enter them in a form, when you obtain the ISBN. -% No need to set copyright in metadata, since your book is only for use by -% the print service, and is not being distributed as a PDF e-book. -% Your copyright notice is on the printed page, where it should be. -% Particularly note that your print service is NOT the publisher: YOU are! -% %% End file data. %% SET PDF/X ARGUMENTS -%% ----------------------------------------------------------------------------- -%% Arguments: [embed-icc or no-embed]{compliance standard}{output intent} -%% Default option is no-embed. -%% When this command is not used, it is equivalent to compliance `off'. +%% ---------------------------------------------------------------------------- +%% \SetPDFX[Output Intent]{compliance standard} % No embed *.icc. Default. +%% \SetPDFX*[Output Intent]{compliance standard} % Embed *.icc. +%% Default up to and including v. 1.46: \SetPDFX{off} +%% Default as of v. 1.46.1: \SetPDFX[CGATSTR001]{X-1a:2001} % -\newif \if@chosenComplianceOK -\newif \if@chosenEmbedOK -\newif \if@gotConformance -\newif \if@noembedicc \@noembedicctrue -\newif \ifpdfx@isOFF \pdfx@isOFFtrue +% \@pdfxSEToff refers to the setting, rather than whether it really is off. +% \@pdfxISoff refers to whether it really is off. +\newif \if@pdfxSEToff % Prior to v. 1.46.1, was \ifpdfx@isOFF. +\newif \if@pdfxISoff % New in v. 1.46.1. % These will get meaningful info when an output intent file is loaded: \gdef\@OIidentifier{} \gdef\@OIcondition{} @@ -94,76 +105,103 @@ \gdef\@OIprofile{} % %% +\newif \if@HasConformance +\newif \if@EmbedICC \gdef\SetPDFX{\@ifstar\@setpdfxst\@setpdfxns} \newcommand\@setpdfxst[2][CGATSTR001]{ - \global\@noembediccfalse + \global\@EmbedICCtrue \@setpdfx{#1}{#2} } \newcommand\@setpdfxns[2][CGATSTR001]{ - \global\@noembedicctrue + \global\@EmbedICCfalse \@setpdfx{#1}{#2} } % \newcommand\@setpdfx[2]{ + \@tempTFfalse \ifthenelse{\equal{#2}{off}}{ - \global\pdfx@isOFFtrue - \@chosenComplianceOKtrue + \@tempTFtrue + \global\@pdfxSETofftrue + \global\@pdfxISofftrue }{} \ifthenelse{\equal{#2}{X-1a:2001}}{ - \pdfx@isOFFfalse - \@chosenComplianceOKtrue + \@tempTFtrue + \global\@pdfxSETofffalse + \global\@pdfxISofffalse \gdef\@PDFversion{PDF/X-1} \gdef\@PDFXversion{PDF/X-1a:2001} \gdef\@PDFXconformance{PDF/X-1a:2001} - \global\@gotConformancetrue + \global\@HasConformancetrue \global\pdfminorversion=3 }{} \ifthenelse{\equal{#2}{X-1a:2003}}{ - \pdfx@isOFFfalse - \@chosenComplianceOKtrue + \@tempTFtrue + \global\@pdfxSETofffalse + \global\@pdfxISofffalse \gdef\@PDFversion{PDF/X-1} \gdef\@PDFXversion{PDF/X-1a:2003} \gdef\@PDFXconformance{PDF/X-1a:2003} - \global\@gotConformancetrue + \global\@HasConformancetrue \global\pdfminorversion=3 }{} \ifthenelse{\equal{#2}{X-3:2002}}{ - \pdfx@isOFFfalse - \@chosenComplianceOKtrue + \@tempTFtrue + \global\@pdfxSETofffalse + \global\@pdfxISofffalse \gdef\@PDFversion{PDF/X-3} \gdef\@PDFXversion{PDF/X-3:2002} \global\pdfminorversion=3 }{} \ifthenelse{\equal{#2}{X-3:2003}}{ - \pdfx@isOFFfalse - \@chosenComplianceOKtrue + \@tempTFtrue + \global\@pdfxSETofffalse + \global\@pdfxISofffalse \gdef\@PDFversion{PDF/X-3} \gdef\@PDFXversion{PDF/X-3:2003} \global\pdfminorversion=4 }{} - \if@chosenComplianceOK\else + \if@tempTF\else \ClassError{novel}{Bad compliance argument for \string\SetPDFX}% - {Choose: off, X-1a:2001, X-1a:2003, X-3:2002, X-3:2003.^^J}% - \fi - % - \ifpdfx@isOFF\else % Output Intent ignored if compliance is `off'. - % Grab the file that defines the output intent information: - \makeatletter % Apparently needed when non-*.sty is input within a command! - \IfFileExists{novel-#1.clo}{\input{novel-#1.clo}}{ - \ClassError{novel}{Bad Output Intent argument for \string\SetPDFX}% - {Use filename (without~extension) of a file with *.clo~extension. ^^J% - Filename must begin with novel- ^^J% - The file must be where TeX can find it. Or use standard code: ^^J% - CGATSTR001, FOGRA39, JC200103.}% - } - \makeatother % back to usual + {Choose: X-1a:2001, X-1a:2003, X-3:2002, X-3:2003, off.}% \fi + % Grab the file that defines the Output Intent information: + % File name format: novel-YourIntent.clo + % Setting: \SetPDFX[YourIntent]{compliance} + % Contents of file: See the above included Output Intent data. + \StrDel{#1}{\space}[\NPDFXOINS] + \IfFileExists{novel-\NPDFXOINS.clo}{\input{novel-\NPDFXOINS.clo}}{% + \ClassError{novel}{Bad Output Intent for \string\SetPDFX}% + {Use filename (without extension) of a file with *.clo extension. ^^J% + Filename must begin with novel- ^^J% + Example: File novel-FOGRA39.clo is called as [FOGRA39]. ^^J% + The file must be where TeX can find it. ^^J% + For contents of the file, see package documentation.}% + }{}% } % end \@setpdfx % +\SetPDFX[CGATSTR001]{X-1a:2001} % Default, from v. 1.46.1. Formerly off. %% +%% Neutralize file data settings: +\gdef\@DisableFileDataSettings{% called by `novel.cls' \AtBeginDocument + \let\title\relax + \let\author\relax + \let\subtitle\relax + \LetLtxMacro\SetAuthor\relax + \LetLtxMacro\SetTitle\relax + \LetLtxMacro\SetSubtitle\relax + \LetLtxMacro\SetApplication\relax + \LetLtxMacro\SetProducer\relax + \LetLtxMacro\SetPDFX\relax +}% end \@DisableFileDataSettings +%% + + + +%% +\endinput %% %% End of file `novel-FileData.sty'. diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-FontDefaults.sty b/Master/texmf-dist/tex/lualatex/novel/novel-FontDefaults.sty deleted file mode 100644 index 44b1478107f..00000000000 --- a/Master/texmf-dist/tex/lualatex/novel/novel-FontDefaults.sty +++ /dev/null @@ -1,211 +0,0 @@ -%% -%% This is file `novel-FontDefaults.sty', part of class `novel'. -%% Copyright 2017 Robert Allgeyer. -%% -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% http://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% -\ProvidesFile{novel-FontDefaults.sty}% -[2018/01/14 v1.46.2 LaTeX file (default fonts)] -%% - - -%% -%% This file is loaded \AtEndPreamble. -%% - -%%%%% - -%% Most TeX installations will use Latin Modern or Computer Modern -%% as default fonts. These are unsuitable for commercial fiction. -%% But `novel' class uses Libertinus as defaults. -%% Change them using \SetParentFont and other fontspec commands, in Preamble. -% Libertinus Serif has Regular, Italic, Bold, Bold Italic. -% But here, Semibold over-rides Bold. -% -%% Now to activate the font definitions: -%% The parent font, ancestor of the main font, and some others: -\if@parentfontset\else % fixed in v. 1.43.1 - \ifthenelse{\equal{\rmdefault}{lmr}}{% - % At this point, if \rmdefault is lmr, it means that the user did not choose - % a different font. Then, Libertinus Serif or Latin Modern Roman - % will be automatically set as \rmdefault: - \IfFontExistsTF{Libertinus Serif}{ % preferred default - \SetParentFont[% - BoldFont=libertinusserif-semibold.otf,% - BoldItalicFont=libertinusserif-semibolditalic.otf,% - ]{Libertinus Serif} - }{ % backup default: - \SetParentFont[% - SmallCapsFont={Latin Modern Roman Caps}% - ]{Latin Modern Roman}% only because it comes with LaTeX - \let\scshape\oldscshape % or small caps won't work - \let\smcp\oldscshape % ditto - }% - }{% However, if \rmdefault is not lmr, it means that the user chose the font. - % If the choice was made via \SetParentFont, no problem. But if done by - % incorrect method such as \setmainfont, \renewcommand\rmdefault, - % or \usepackage{fontname}, then an error is thrown (warning prior to v 1.44): - \if@parentfontset\else - \ClassError{novel}{Wrong command used to set main font}% - {You attempted to define the main document font using a command such as^^J% - \string\renewcommand\string\rmdefault\space or \string\usepackage^^J% - or \string\setmainfont. These are incorrect in `novel' class.^^J% - Use \string\SetParentFont\space instead. See `novel' documentation.^^J}% - \fi - }% -\fi -% Now we are ready to set the main font: -\setmainfont[\parentfontfeatures]{\parentfontname} -\let\mainfont\rmfamily\relax % compatibility -%% - -% The mono font: -\ifthenelse{\equal{\ttdefault}{lmtt}}{% over-ride: - \IfFontExistsTF{Libertinus Mono}{ - \setmonofont[% - ItalicFont={},% Doesn't have these. - BoldFont={},% - BoldItalicFont={},% - ]{Libertinus Mono} - }{ - \setmonofont{Latin Modern Mono}% Eeek! Only because you have it! - } -}{} % User \setmonofont, so leave alone. -%% -% The sans font: -\ifthenelse{\equal{\sfdefault}{lmss}}{ % override: - \IfFontExistsTF{Libertinus Sans}{ - \setsansfont{Libertinus Sans} - }{ - \setsansfont{Latin Modern Sans}% Eeek! Only because you have it! - } -}{} % User \setsansfont, so leave alone. -%% - -%% -% New in version 1.38, \straightquote and \straightdblquote: -\gdef\straightquote{{\addfontfeature{Ligatures=ResetAll}'}} -\gdef\straightdblquote{{\addfontfeature{Ligatures=ResetAll}"}} -%% - -%% The novel-specific fonts: -\if@chapterfontset\else - \SetChapterFont[\parentfontfeatures,Scale=1.6]{\parentfontname} -\fi -\newfontfamily\chapterfont[\@chapterfontfeatures]{\@chapterfontname} -%% -\if@subchfontset\else - \SetSubchFont[\parentfontfeatures,Scale=1.2]{\parentfontname} -\fi -\newfontfamily\subchfont[\@subchfontfeatures]{\@subchfontname} -%% -\newif \if@headfontdefault -\if@headfontset\else - \SetHeadFont[Letters=SmallCaps,\parentfontfeatures,Scale=0.92]{\parentfontname} - \global\@headfontdefaulttrue -\fi -\newfontfamily\headfont[\@headfontfeatures]{\@headfontname} -%% -%% The decofont must be NovelDeco.otf or a user modification of that font: -\if@decofontset\else - \IfFontExistsTF{NovelDeco.otf}{ - \SetDecoFont{NovelDeco} - }{} -\fi -%% -\gdef\acronym#1{#1}% Re-defined below, if decofont available. -%% -%% Now to get the decofont activated: -% Decorative glyphs, only in this font. Should not be re-set by user: -\gdef\decoglyph#1{~}% If NovelDeco not found, nonbreaking space in main text. -% -\if@gotdeco % NovelDeco or a user-defined alternative was found: - \newfontface\@decoglyph[% - \@decofontfeatures,% - ]{\@decofontname} - \newfontface\@decoglypha[% - \@decofontfeatures,RawFeature=+ss01,% - ]{\@decofontname} - \newfontface\@decoglyphb[% - \@decofontfeatures,RawFeature=+ss02,% - ]{\@decofontname} - \newfontface\@decoglyphc[% - \@decofontfeatures,RawFeature=+ss03,% - ]{\@decofontname} - % - \gdef\decoglyph#1{% Be sure to use % without preceding space: - \IfBeginWith{#1}{n}{% normal weight symbol (same as regular) - \StrBehind{#1}{n}[\@tempdecoglyph]{\@decoglyph\symbol{\@tempdecoglyph}}% - }{}% - \IfBeginWith{#1}{r}{% regular weight symbol - \StrBehind{#1}{r}[\@tempdecoglyph]{\@decoglyph\symbol{\@tempdecoglyph}}% - }{}% - \IfBeginWith{#1}{l}{% light weight symbol - \StrBehind{#1}{l}[\@tempdecoglyph]{\@decoglypha\symbol{\@tempdecoglyph}}% - }{}% - \IfBeginWith{#1}{e}{% extra light weight symbol - \StrBehind{#1}{e}[\@tempdecoglyph]{\@decoglyphb\symbol{\@tempdecoglyph}}% - }{}% - \IfBeginWith{#1}{t}{% thin weight symbol - \StrBehind{#1}{t}[\@tempdecoglyph]{\@decoglyphc\symbol{\@tempdecoglyph}}% - }{}% - }% end gdef decoglyph - % - % The trouble with acronyms is that they look too big in regular capitals, - % and too small in small caps. Command \acronym{} tries to provide an - % intermediate size. The letters were drawn from Linux Libertine, scaled, - % weights adjusted, the placed in NovelDeco.otf. - \gdef\acronym#1{{\decofont{#1}}} - % -\fi% end \if@gotdeco -% -% Math font is not needed, because `novel' does not typeset math. -% If you have the Libertinus fonts installed, might as will specify for math. -% Then Latin Modern Math if installed. -% If not, NovelDeco.otf "fakes" math capability, just to fool the fontloader: -\IfFontExistsTF{Libertinus Math}{ - \setmathfont[BoldFont={libertinusmath-regular.otf}]{libertinusmath-regular.otf} -}{ - \IfFontExistsTF{Latin Modern Math}{}{% already set as default by unicode-math. - }{ - \setmathfont[BoldFont={NovelDeco.otf}]{NovelDeco.otf} - } -}% -%% - - -% -%% This provides default microtype settings, allows the user to over-ride, -% and hopefully prevents the user from choosing inappropriate settings: -\let\microtypesetup\relax % fake command no longer needed -\if@setmicrotype % user wrote \microtypesetup{} in Preamble - \IfSubStr{\@mymicrotypesetup}{config}{% user specified own config file - \gdef\@mymicrotypeset{\@mymicrotypesetup} - }{ % default to novel's config file - \gdef\@mymicrotypeset{% - config=novel-microtype,final,\@mymicrotypesetup} - } -\else % user did not write \microtypesetup{} in Preamble - \gdef\@mymicrotypeset{% - config=novel-microtype,final,stretch=20,shrink=20} -\fi -\if@mtoff\else - \RequirePackage[\@mymicrotypeset]{microtype} -\fi -% -%% - - - -% -%% End of file `novel-FontDefaults.sty' - - diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-Fonts.sty b/Master/texmf-dist/tex/lualatex/novel/novel-Fonts.sty new file mode 100644 index 00000000000..68c5d9270b8 --- /dev/null +++ b/Master/texmf-dist/tex/lualatex/novel/novel-Fonts.sty @@ -0,0 +1,416 @@ +%% +%% This is file `novel-Fonts.sty', part of `novel' document class. +%% Copyright 2017-2018 Robert Allgeyer. +%% +%% +%% This file may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% +\ProvidesFile{novel-Fonts.sty}% +[2018/03/28 v1.50 LaTeX file (font settings and defaults)] +%% + + +%% Package `fontspec' was previously loaded by `\novel.cls'. + + +%% INITIALIZATION +%% ---------------------------------------------------------------------------- +% Fonts are chosen in Preamble using \Set commands. But they are not activated +% until \AtEndPreamble. Until then, the basic TeX font families must be +% temporarily specified, so that certain packages can load without compliant. +% These are Latin Modern fonts, which are Open Type and will work, but are not +% stylistically suitable for works of fiction. The only reason they are +% used here, is because just about every TeX installation has them. +\gdef\rmdefault{lmr} % Latin Modern Roman +\gdef\sfdefault{lmss} % Latin Modern Sans +\gdef\ttdefault{lmtt} % Latin Modern Mono +% The following might become unnecessary if fontspec adds the capability to +% disable keys. For now: Color and Opacity cannot be used as font features, +% for a black/white printed book. Alas, fontspec over-rules xcolor. +% So, this code over-rules fontspec: +\gdef\@CheckFontspecFeatures#1{% + \@tempTFfalse% + \IfSubStr{#1}{Color}{\@tempTFtrue}{}% + \IfSubStr{#1}{Colour}{\@tempTFtrue}{}% + \IfSubStr{#1}{color}{\@tempTFtrue}{}% + \IfSubStr{#1}{colour}{\@tempTFtrue}{}% + \IfSubStr{#1}{Opacity}{\@tempTFtrue}{}% + \IfSubStr{#1}{opacity}{\@tempTFtrue}{}% + \if@tempTF% + \ClassError{novel}{Color and Opacity forbidden as font features}% + {You defined a font, or added a font feature, with Color or Opacity. ^^J% + That is disallowed in `novel' class.}% + \fi% +} % end \@CheckFontspecFeatures +% Default font features (will be changed later): +\defaultfontfeatures{} % reset +\defaultfontfeatures{SmallCapsFeatures={Renderer=Basic},Ligatures=TeX,} % all +% Main and sans fonts: kerning, ligatures, and OldStyle numbers if available: +\defaultfontfeatures[\rmfamily,\sffamily]% + {Kerning=On,Numbers=OldStyle,Ligatures=Common} +% Fake \microtypesetup until package loaded by \@ActivateFonts, \AtEndPreamble: +\newif \if@MicrotypeSet +\gdef\microtypesetup#1{ + \gdef\@mymicrotypesetup{#1} % used in novel-Fonts.sty + \global\@MicrotypeSettrue +}% +%% end initialization + + +%% SETTINGS FOR PARENT FONT, DESCENDANTS, OTHERS +%% ---------------------------------------------------------------------------- +% In `novel' you do not \usepackage{font name} or \RequirePackage{font name}. +% You do not directly write \renewcommand\rmdefault{font name}. +% You do not directly use \setmainfont[features]{font name}. +% Instead, `novel' requires a `parent font' to be set. The parent font is +% the ancestor of the main (normal) font, and several other descendants. +% The parent font features, if any, should be a minimal set that will be +% applied to all descendants. For example, if the font has an an alternate +% style for a particular letter, and you want to use it for all descendants, +% then you would spedify that feature for the parent font. +% For now, these settings are merely stored. Later, \AtEndPreamble, +% the main (normal) font inherits the settings for the parent font. +% Other descendants inherit those settings, with their own features added. +% Anything not set by you, will have a suitable default set automatically. +\newif \if@ParentFontSet +\gdef\parentfontfeatures{} +\gdef\parentfontname{} +\DeclareDocumentCommand \SetParentFont { O{} m O{} } {% from version 1.1. + \@CheckFontspecFeatures{#1,#3} + \gdef\parentfontfeatures{#1,#3} + \gdef\parentfontname{#2} + \global\@ParentFontSettrue +}% +\DeclareDocumentCommand \SetMasterFont { O{} m O{} } {% DEPRECATED + \@CheckFontspecFeatures{#1,#3} + \gdef\parentfontfeatures{#1,#3} + \gdef\parentfontname{#2} + \global\@ParentFontSettrue +}% +% +% In a work of fiction, you probably do not need a sans or mono font. +% But TeX expects you do have them. So, \AtEndPreamble, Libertinus Sans +% and Libertinus Mono will be set as defaults, if you have those fonts. +% Otherwise, Latin Modern Sans and Mono will be used, but they are not +% well-suited to works of fiction. +% If you wish to set your own sans and mono fonts, do it using standard +% `fontspec' syntax. There is no special method in `novel' class: +% \setsansfont[features]{font name} +% \setmonofont[features]{font name} +% +% The headfont is used in headers and footers: +\newif \if@HeadFontSet +\gdef\@headfontfeatures{} +\gdef\@headfontname{} +\DeclareDocumentCommand \SetHeadFont { O{} m O{} } {% revised v 1.40.3 + \@CheckFontspecFeatures{#1,#3} + \gdef\@headfontfeatures{Numbers=Lining,% + WordSpace=\@looseheadword,#1,#3}% loose letters added in head/foot styles + \gdef\@headfontname{#2} + \global\@HeadFontSettrue +}% +% The chapter font is used by the \ChapterTitle{} command: +\newif \if@ChapterFontSet +\gdef\@chapterfontfeatures{} +\gdef\@chapterfontname{} +\DeclareDocumentCommand \SetChapterFont { O{} m O{} } {% + \@CheckFontspecFeatures{#1,#3} + \gdef\@chapterfontfeatures{Numbers=Lining,#1,#3} + \gdef\@chapterfontname{#2} + \global\@ChapterFontSettrue +}% +% The subch font is used by the \ChapterSubtitle{} command: +\newif \if@SubchFontSet +\gdef\@subchfontfeatures{} +\gdef\@subchfontname{} +\DeclareDocumentCommand \SetSubchFont { O{} m O{} } {% + \@CheckFontspecFeatures{#1,#3} + \gdef\@subchfontfeatures{Numbers=Lining,#1,#3} + \gdef\@subchfontname{#2} + \global\@SubchFontSettrue +}% +% The deco font is used for decorations and acronyms. +% It must be NovelDeco.otf or a font based on NovelDeco.otf. No other! +\newif \if@DecoFontSet +\newif \if@HasDecoFont +\gdef\@decofontfeatures{} +\gdef\@decofontname{} +\DeclareDocumentCommand \SetDecoFont { O{} m O{} } {% + \@CheckFontspecFeatures{#1,#3} + \gdef\@decofontname{#2} + \global\@DecoFontSettrue + \global\@HasDecoFonttrue + \newfontface\decofont[#1,#3]{#2} +}% +% For syntax consistency: +\ExplSyntaxOn +\cs_new_eq:NN \NewFontFamily \newfontfamily +\cs_new_eq:NN \NewFontFace \newfontface +\cs_new_eq:NN \SetSansFont \setsansfont +\cs_new_eq:NN \SetMonoFont \setmonofont +\cs_new_eq:NN \SetMathFont \setmathfont +\cs_new_eq:NN \AddFontFeatures \addfontfeatures +\cs_new_eq:NN \AddFontFeature \addfontfeatures +\ExplSyntaxOff +% New in v. 1.50: built-in drop caps. +\gdef\@DropCapFont{} % until actually set, will be default main font +\gdef\@DropCapColorModel{} % until actually set, using `xcolor' syntax +\gdef\@DropCapColorValue{black} % until actually set, using `xcolor' syntax +\gdef\NDC@charstyle{} +\ExplSyntaxOn +% The argument to \SetDropCapFont is a user-defined `fontspec' font command. +% Example syntax, using `fontspec' in LuaLaTeX: +% Create font command, such as: \newfontface\mynicefont[options]{fontname} +% Then: \SetDropCapFont{\mynicefont} +\newif \if@HasDropCapFont +\DeclareDocumentCommand \SetDropCapFont { m } {% + \@HasDropCapFonttrue% + \gdef\@DropCapFont{#1}% + \gdef\NDC@charstyle{% + #1% + \if@HasDropCapColor% + \ifthenelse{\equal{\@DropCapColorModel}{}}{% + \color{\@DropCapColorValue}% + }{% + \color[\@DropCapColorModel]{\@DropCapColorValue}% + }% + \fi% + }% +}% +% The argument(s) to \SetDropCapColor use `xcolor' syntax: +% [colormodel]{value} OR {colorname} +\newif \if@HasDropCapColor +\DeclareDocumentCommand \SetDropCapColor { O{} m } {% + \@setdropcapcolor[#1]{#2}% +}% end \SetDropCapColor +\DeclareDocumentCommand \@setdropcapcolor { O{} m } {% + \global\@HasDropCapColortrue% + \gdef\@DropCapColorModel{#1}% + \gdef\@DropCapColorValue{#2}% + \renewcommand\NDC@charstyle{% + \@DropCapFont% + \ifthenelse{\equal{\@DropCapColorModel}{}}{% + \color{\@DropCapColorValue}% + }{% + \color[\@DropCapColorModel]{\@DropCapColorValue}% + }% + }% +}% end \@setdropcapcolor +% for convenience: +\cs_new_eq:NN \SetDropcapFont \SetDropCapFont +\cs_new_eq:NN \SetDropcapColor \SetDropCapColor +\ExplSyntaxOff +% +% A default math font (which presumably you do not need) is chosen here. +% You may over-ride using `unicode-math' syntax \setmathfont in Preamble. +\IfFontExistsTF{Libertinus Math}{ % stylistically consisent with novel text + \setmathfont[BoldFont={libertinusmath-regular.otf}]% + {libertinusmath-regular.otf} +}{ + \IfFontExistsTF{Latin Modern Math}{}{% default for package `unicode-math' + }{ % The following hack allows you to proceed without a real math font, + % (but then you cannot print math): + \IfFontExistsTF{NovelDeco.otf}{% + \setmathfont[BoldFont={NovelDeco.otf}]{NovelDeco.otf} % fake math feature + \ClassWarning{novel}{^^JIgnore this if you used \string\setmathfont. ^^J% + Did not find suitable default math font. Used NovelDeco.otf. ^^J% + But NovelDeco does not have real math symbols. ^^J% + Math notation will print incorrectly. No problem if no math. ^^J}% + }{}% if no NovelDeco, do nothing here + } +}% +%% end settings for parent font and others. + + +%% CREATING NEW FONT FONT FEATURES +%% ---------------------------------------------------------------------------- +% \CreateFontFeature{substitutions}{feature code} +% Problem: Font has one or more alternate glyphs that you would like to use, +% but they are not listed in a feature set for the font. +% Solution: Create your own feature set, with \CreateFontFeature. The created +% feature may then be used like a real feature, in any font definition. +% The substitutions are a comma-separated list, char=char.alt and so forth. +% For example, the following substitutions are syntactically OK: +% emdash=emdah.alt, one=one.rev, ntilde=ntilde.03 +% If a substitution is not available in a particular font, it is ignored. +% You have to look at the font in a font editor, to know what is available. +% It is possible to make silly substitutions, such as a=b, five=three without +% throwing an error, unless your code causes a cycle. +% The most useful application of this command is to reach alternate emdash, +% and alternate oldstyle one. Not every font has these. +% The feature code is a 4-character pseudo- Open Type code, otherwise unused. +% For example, the feature code might be myfs (my fake substitution) +% but it cannot be a pre-defined code such as lnum or smcp. It may be +% a style set such as ss03 if you are sure that the font in question +% do not already have ss03 (but this is taking a chance). +% Once defined, you may use it like this (for example): +% \SetParentFont[RawFeature=+myfs]{fontname} +% \NewFontFamily\myfake[RawFeature=+myfs]{fontname} +% In the document body: {\addfontfeature{myfs} text} +\DeclareDocumentCommand \CreateFontFeature { m m } {% + \IfEndWith{#1}{,}{\StrGobbleRight{#1}{1}[\@fakezero]}{\def\@fakezero{#1}} + \def\@fakeone{"\@fakezero"} + \StrSubstitute{\@fakeone}{=}{"]="}[\@fakeone] + \StrSubstitute{\@fakeone}{,}{",\space["}[\@fakeone] + \directlua{ + fonts.handlers.otf.addfeature { + name = "#2", + type = "substitution", + data = {\@fakeone}, + } + } +} % +%% end \CreateFontFeature. Above thanks to fontspec 2016. + + +%% ACTIVATE FONTS \AtEndPreamble +%% ---------------------------------------------------------------------------- +\gdef\@ActivateFonts{% called by `novel.cls' \AtEndPreamble + % We begin with the parent font: + \if@coverart %%%%% + \SetParentFont{NovelDeco.otf} %%%%% + \fi %%%%% + \if@ParentFontSet\else + \ifthenelse{\equal{\rmdefault}{lmr}}{% + % At this point, if \rmdefault is lmr, it means the user did not choose + % a different font. Then, Libertinus Serif or Latin Modern Roman + % will be automatically set as \rmdefault, if available: + \IfFontExistsTF{Libertinus Serif}{ % preferred default + \SetParentFont[% + BoldFont=libertinusserif-semibold.otf,% + BoldItalicFont=libertinusserif-semibolditalic.otf,% + ]{Libertinus Serif} + }{ % backup default, if Libertinus Serif not available: + \SetParentFont[% + SmallCapsFont={Latin Modern Roman Caps}% + ]{Latin Modern Roman}% only because it comes with LaTeX + \let\scshape\oldscshape % or small caps won't work + \let\smcp\oldscshape % or small caps won't work + }% + }{% However, if \rmdefault is not lmr, it means the user chose the font. + % If the choice was made via \SetParentFont, no problem. But if done by + % incorrect method such as \setmainfont, \renewcommand\rmdefault, + % or \usepackage{fontname}, an error is thrown: + \if@ParentFontSet\else + \ClassError{novel}{Wrong command used to set main font}% + {You tried to define the main document font the wrong way. ^^J% + Bad: \string\renewcommand\string\rmdefault\{font\}\space ^^J% + Bad: \string\usepackage\{font package\}\space ^^J% + Bad: \string\RequirePackage\{font package\}\space ^^J% + Bad: \string\setmainfont[features]\{font\}\sapce ^^J% + Those are incorrect in `novel' class. ^^J% + Use \string\SetParentFont[features]\{font\}\space instead. ^^J% + See `novel' documentation.}% + \fi + }% + \fi % end \if@ParentFontSet + % Now we are ready for the main (normal) font, descending from parent font: + \setmainfont[\parentfontfeatures]{\parentfontname} + \let\mainfont\rmfamily\relax % backwards compatibility + % The headfont, which descends from parent font: + \if@HeadFontSet\else % default if not user-set: + \SetHeadFont[Letters=SmallCaps,\parentfontfeatures,Scale=0.92]% + {\parentfontname} + \fi + \newfontfamily\headfont[\@headfontfeatures]{\@headfontname} + % The chapter font, descending from parent font: + \if@ChapterFontSet\else % if no user-set font, default: + \SetChapterFont[\parentfontfeatures,Scale=1.6]{\parentfontname} + \fi + \newfontfamily\chapterfont[\@chapterfontfeatures]{\@chapterfontname} + % The subch font, descending from parent font: + \if@SubchFontSet\else % if no user-set font, default: + \SetSubchFont[\parentfontfeatures,Scale=1.2]{\parentfontname} + \fi + \newfontfamily\subchfont[\@subchfontfeatures]{\@subchfontname} + % The remaining fonts are not descendants of parent font: + % The mono font: + \ifthenelse{\equal{\ttdefault}{lmtt}}{% over-ride: + \IfFontExistsTF{Libertinus Mono}{ % if available + \setmonofont[% + ItalicFont={},% Doesn't have these. + BoldFont={},% + BoldItalicFont={},% + ]{Libertinus Mono} + }{ + \setmonofont{Latin Modern Mono}% backup + } + }{} % User \setmonofont, so leave alone. + % The sans font: + \ifthenelse{\equal{\sfdefault}{lmss}}{ % override: + \IfFontExistsTF{Libertinus Sans}{ % if available + \setsansfont{Libertinus Sans} + }{ + \setsansfont{Latin Modern Sans}% backup + } + }{} % User \setsansfont, so leave alone. + % The decofont must be NovelDeco.otf or a user modification of that font: + \if@DecoFontSet\else + \IfFontExistsTF{NovelDeco.otf}{ + \SetDecoFont{NovelDeco} + }{} % if not available, this will be detected below + \fi + % Decorative glyphs, only in this font. Should not be re-set by user. + \if@HasDecoFont % NovelDeco or a user-defined alternative was found: + \newfontface\@decoglyph[% + \@decofontfeatures,% + ]{\@decofontname} + \newfontface\@decoglypha[% + \@decofontfeatures,RawFeature=+ss01,% + ]{\@decofontname} + \newfontface\@decoglyphb[% + \@decofontfeatures,RawFeature=+ss02,% + ]{\@decofontname} + \newfontface\@decoglyphc[% + \@decofontfeatures,RawFeature=+ss03,% + ]{\@decofontname} + \fi% end \if@HasDecoFont + % New in version 1.50: + \if@HasDecoFont + \NewFontFace\decodropcapfont[RawFeature=+dcap]{\@decofontname} + \else + \NewFontFace\decodropcapfont[\parentfontfeatures,Numbers=Lining]% + {\parentfontname} + \fi + \if@HasDropCapFont\else + \SetDropCapFont{\decodropcapfont} % default + \fi + % This provides default microtype settings, allows the user to over-ride, + % and hopefully prevents the user from choosing inappropriate settings: + \let\microtypesetup\relax % fake command no longer needed + \if@MicrotypeSet % true if user wrote \microtypesetup{} in Preamble + \IfSubStr{\@mymicrotypesetup}{config}{% user specified own config file + \gdef\@mymicrotypeset{\@mymicrotypesetup} + }{ % default to novel's config file + \gdef\@mymicrotypeset{% + config=novel-microtype,final,\@mymicrotypesetup} + } + \else % user did not write \microtypesetup{} in Preamble + \gdef\@mymicrotypeset{% + config=novel-microtype,final,stretch=20,shrink=20} + \fi + \if@mtoff + \providecommand\textls[2][]{##2} % echoes its mandatory argument + \else + \RequirePackage[\@mymicrotypeset]{microtype} + \renewcommand\textls[2][]{##2} % nullifies the microtype command (problems) + \fi + % end microtypesetup +% +} % end \@ActivateFonts, called by `novel.cls' \AtEndPreamble. +%% + + +%% +\endinput +%% +%% End of file `novel-Fonts.sty' + + diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-Footnotes.sty b/Master/texmf-dist/tex/lualatex/novel/novel-Footnotes.sty index a2d01335dd5..744302b2d07 100644 --- a/Master/texmf-dist/tex/lualatex/novel/novel-Footnotes.sty +++ b/Master/texmf-dist/tex/lualatex/novel/novel-Footnotes.sty @@ -1,6 +1,6 @@ %% -%% This is file `novel-Footnotes.sty', part of class `novel'. -%% Copyright 2017 Robert Allgeyer. +%% This is file `novel-Footnotes.sty', part of `novel' document class. +%% Copyright 2017-2018 Robert Allgeyer. %% %% %% This file may be distributed and/or modified under the @@ -13,13 +13,118 @@ %% %% \ProvidesFile{novel-Footnotes.sty}% -[2018/01/14 v1.46.2 LaTeX file (commands for footnotes and endnotes)] +[2018/03/28 v1.50 LaTeX file (commands for footnotes and endnotes)] +%% + + + +%% Markers (superscript, subscripts): +\newtoggle{@usesymbolmark} % true when footnote markers are symbolic +\newtoggle{@realmarker} % true when OT features sups, sinf, subs requested +% + + +%% superscripts and subscripts +\let\subs\relax +\let\sups\relax +\let\textsuperscript\relax +\let\textsubscript\relax +% Perhaps superscripts and subscripts (scientific) are in the font, or not. +% Problem: The best fonts have these characters at size/weight designed +% to mingle with normal size. But many fonts merely scaled characters, +% which will be too light at the small size. +% The unstarred version of these commands use the Open Type features when +% they are present, then faking (auto scale/raise) if features not present. +% The starred version just fakes, without regard for features. +% + +% Note that the effect of these commands continues, not just one-shot: +\gdef\realmarker{\global\toggletrue{@realmarker}} % anywhere in text +\gdef\fakemarker{\global\togglefalse{@realmarker}} % anywhere in text +\newlength\@hoAhl % height of Ahl, locally measured and set when needed +%% +\ExplSyntaxOn +% +\DeclareDocumentCommand \sups { m } {% + \iftoggle{@realmarker}{% + \fontspec_if_feature:nTF {sups}{% + \ifvmode\else\unskip\fi% + {\addfontfeature{VerticalPosition=Superior}\smash{#1}}% + }{% + \setlength\@hoAhl{\heightof{Ahl}}% local + \ifvmode\else\unskip\fi\charscale[0.7,0pt,0.5\@hoAhl]{#1}% + }% + }{% + \setlength\@hoAhl{\heightof{Ahl}}% local + \ifvmode\else\unskip\fi% + {\addfontfeature{Numbers=Lining}\charscale[0.7,0pt,0.5\@hoAhl]{#1}}% + }% +}% end \sups +% +\DeclareDocumentCommand \subs { m } {% + \iftoggle{@realmarker}{% + \fontspec_if_feature:nTF {sinf}{% + \ifvmode\else\unskip\fi% + {\addfontfeature{VerticalPosition=ScientificInferior}\smash{#1}}% + }{% + \fontspec_if_feature:nTF {subs}{% + \ifvmode\else\unskip\fi% + {\addfontfeature{VerticalPosition=Inferior}\smash{#1}}% + }{% + \setlength\@hoAhl{\heightof{Ahl}}% local + \ifvmode\else\unskip\fi\charscale[0.7,0pt,-0.2\@hoAhl]{#1}% + }% + }% + }{% + \setlength\@hoAhl{\heightof{Ahl}}% local + \ifvmode\else\unskip\fi% + {\addfontfeature{Numbers=Lining}\charscale[0.7,0pt,-0.2\@hoAhl]{#1}}% + }% +}% end \subs +% +\cs_new_eq:NN \textsuperscript \sups +\cs_new_eq:NN \textsubscript \subs +\ExplSyntaxOff +%% + + + +% \SetMarkerStyle does two things. +% Option real: OT features sups, sinf, subs requested. Fake if not available. +% Option fake: Always fake OT features sups, sinf, subs. +% Mandatory: asterisk, dagger, number. Pertains to footnote markers only. +% No matter real or fake, the asterisk symbol is always real, and the +% dagger, dbldagger, and section (when used as footnote markers) +% are always partially faked. +\newcommand\SetMarkerStyle[2][real]{ + \def\@goodfnm{no} + \ifthenelse{\equal{#2}{asterisk}}{% + \def\@goodfnm{yes}\global\toggletrue{@usesymbolmark}% + \gdef\@myfnsymbols{*}}{} + \ifthenelse{\equal{#2}{dagger}}{% + \def\@goodfnm{yes}\global\toggletrue{@usesymbolmark}% + \gdef\@myfnsymbols{†}}{} + \ifthenelse{\equal{#2}{number}}{% + \def\@goodfnm{yes}\global\togglefalse{@usesymbolmark}}{} + \def\@goodfnk{no} + \ifthenelse{\equal{#1}{real}\OR\equal{#1}{}}{% + \def\@goodfnk{yes}\global\toggletrue{@realmarker}}{} + \ifthenelse{\equal{#1}{fake}}{% + \def\@goodfnk{yes}\global\togglefalse{@realmarker}}{} + \ifthenelse{\equal{\@goodfnm}{no}\OR\equal{\@goodfnk}{no}}{% + \ClassError{novel}{Bad choice for \string\SetMarkers}% + {Optional: real, fake. Required: asterisk, dagger, number.}% + }{} +} +\LetLtxMacro{\SetMarkers}{\SetMarkerStyle} % backward compatibilty pre-v1.40.3. +% +\SetMarkerStyle[real]{asterisk} % default %% %% FOOTNOTES -%% ----------------------------------------------------------------------------- +%% ---------------------------------------------------------------------------- % In `novel' class, you may place footnotes at the botom of the textblock. % The markers may be symbolic (default begins with asterisk), or % set so that the asterisk is not used, or the markers may be numbers, @@ -28,6 +133,13 @@ % You can also make a non-marked footnote, which does not increment the count. +% Lengths used to tweak vertical position of symbolic (text) footnote markers: +\newlength\@twast % tweaks asterisk +\newlength\@twdag % tweaks dagger +\newlength\@twdbldag % tweaks double dagger +\newlength\@twsect % tweaks section mark +\newlength\@tweight % tweaks 8, reliably the tallest digit + %% footnotesize is calculated by layout, based on normal font size and skip. %% It is used only for actual footnotes! @@ -51,12 +163,12 @@ \newtoggle{@usenomark} % when true: no mark, no increment count \newtoggle{@placedfootnotenumber} % true if any numerical footnote placed % -\let\my@oldfootnote\footnote\relax % copies the original definition +\let\@myoldfootnote\footnote\relax % copies the original definition \let\footnote\relax % so it can be re-defined, below % \gdef\@fourem{% length of rule separating footnotes from main text - \vspace{-\nbs} - \noindent\strut\smash{\rule[-2pt]{0.33\textwidth}{0.05\normalFontSize}} + \vspace{-\nbs}% + \noindent\strut\smash{\rule[-2pt]{0.33\textwidth}{0.05\@SetFontSize}}% } \let\footnoterule\@fourem % @@ -77,12 +189,12 @@ }{% \global\togglefalse{@usenomark}% }% - \gdef\footnoterule{\@fourem}% + \gdef\footnoterule{\vfill\@fourem}% %%%%% \begingroup% - \def\footnotesize{% Not gdef. Only here in footnote. Calculated during layout. - \@setfontsize\footnotesize{\@myfootnotesizenum pt}{\@myfootnoteskipnum pt}% + \def\footnotesize{% Not gdef. Local to footnote. Calculated during layout. + \@setfontsize\footnotesize{\@myfootnotesizeN pt}{\@myfootnoteskipN pt}% }% - \unskip\my@oldfootnote{#2}% + \unskip\@myoldfootnote{#2}% \endgroup% } % end \footnote % @@ -103,22 +215,50 @@ {% \global\togglefalse{@placedfootnotenumber}% \ifthenelse{\equal{\@myfnsymbols}{*}}{% - \ifthenelse{\equal{\value{@fnsymbolcount}}{1}}{\charscale[1,0pt,-\@twast]{*}}{}% - \ifthenelse{\equal{\value{@fnsymbolcount}}{2}}{\charscale[0.8,0pt,-\@twdag]{†}}{}% - \ifthenelse{\equal{\value{@fnsymbolcount}}{3}}{\charscale[0.8,0pt,-\@twdbldag]{‡}}{}% - \ifthenelse{\equal{\value{@fnsymbolcount}}{4}}{\charscale[0.8,0pt,-\@twsect]{§}}{}% - \ifthenelse{\equal{\value{@fnsymbolcount}}{5}}{\charscale[1,0pt,-\@twast]{**}}{}% - \ifthenelse{\equal{\value{@fnsymbolcount}}{6}}{\charscale[0.8,0pt,-\@twdag]{††}}{}% - \ifthenelse{\equal{\value{@fnsymbolcount}}{7}}{\charscale[0.8,0pt,-\@twdbldag]{‡‡}}{}% - \ifthenelse{\equal{\value{@fnsymbolcount}}{8}}{\charscale[0.8,0pt,-\@twsect]{§§}}{}% + \ifthenelse{\equal{\value{@fnsymbolcount}}{1}}{% + \charscale[1,0pt,-\@twast]{*}% + }{}% + \ifthenelse{\equal{\value{@fnsymbolcount}}{2}}{% + \charscale[0.8,0pt,-\@twdag]{†}% + }{}% + \ifthenelse{\equal{\value{@fnsymbolcount}}{3}}{% + \charscale[0.8,0pt,-\@twdbldag]{‡}% + }{}% + \ifthenelse{\equal{\value{@fnsymbolcount}}{4}}{% + \charscale[0.8,0pt,-\@twsect]{§}% + }{}% + \ifthenelse{\equal{\value{@fnsymbolcount}}{5}}{% + \charscale[1,0pt,-\@twast]{**}% + }{}% + \ifthenelse{\equal{\value{@fnsymbolcount}}{6}}{% + \charscale[0.8,0pt,-\@twdag]{††}% + }{}% + \ifthenelse{\equal{\value{@fnsymbolcount}}{7}}{% + \charscale[0.8,0pt,-\@twdbldag]{‡‡}% + }{}% + \ifthenelse{\equal{\value{@fnsymbolcount}}{8}}{% + \charscale[0.8,0pt,-\@twsect]{§§}% + }{}% }{}% \ifthenelse{\equal{\@myfnsymbols}{†}}{% - \ifthenelse{\equal{\value{@fnsymbolcount}}{1}}{\charscale[0.8,0pt,-\@twdag]{†}}{}% - \ifthenelse{\equal{\value{@fnsymbolcount}}{2}}{\charscale[0.8,0pt,-\@twdbldag]{‡}}{}% - \ifthenelse{\equal{\value{@fnsymbolcount}}{3}}{\charscale[0.8,0pt,-\@twsect]{§}}{}% - \ifthenelse{\equal{\value{@fnsymbolcount}}{4}}{\charscale[0.8,0pt,-\@twdag]{††}}{}% - \ifthenelse{\equal{\value{@fnsymbolcount}}{5}}{\charscale[0.8,0pt,-\@twdbldag]{‡‡}}{}% - \ifthenelse{\equal{\value{@fnsymbolcount}}{6}}{\charscale[0.8,0pt,-\@twsect]{§§}}{}% + \ifthenelse{\equal{\value{@fnsymbolcount}}{1}}{% + \charscale[0.8,0pt,-\@twdag]{†}% + }{}% + \ifthenelse{\equal{\value{@fnsymbolcount}}{2}}{% + \charscale[0.8,0pt,-\@twdbldag]{‡}% + }{}% + \ifthenelse{\equal{\value{@fnsymbolcount}}{3}}{% + \charscale[0.8,0pt,-\@twsect]{§}% + }{}% + \ifthenelse{\equal{\value{@fnsymbolcount}}{4}}{% + \charscale[0.8,0pt,-\@twdag]{††}% + }{}% + \ifthenelse{\equal{\value{@fnsymbolcount}}{5}}{% + \charscale[0.8,0pt,-\@twdbldag]{‡‡}% + }{}% + \ifthenelse{\equal{\value{@fnsymbolcount}}{6}}{% + \charscale[0.8,0pt,-\@twsect]{§§}% + }{}% }{}% }{% \global\toggletrue{@placedfootnotenumber}% @@ -164,25 +304,40 @@ -%% ENDNOTES -%% ----------------------------------------------------------------------------- +%% ENDNOTES. Behavior modified in v. 1.50 (added error messages). +%% ---------------------------------------------------------------------------- % \endnote only places a marker. It does not store a note for later use. -% Since it gobbles following space, use \endnote{} when needed. -% The \memo{} command is helpful, to make a non-printing note to yourself. +% Any argument is non-printing. So \endnote{ancestry of yada} does not print +% anything other than the endnote marker number, and does not save +% `ancestry of Yada' for later use. The argument is a self-memo, so that you +% remember why you want an endnote there, when you look at the source. +% Following \endnote or \endnotetext with [ will produce an error. +% Reason: Confuses novel's commands with those from banned `endnote' package. % Whenever \endnote is used, the marker number and page is added to a list, -% and the list is typed into the log file after the document ends. That way, -% you can hunt down where the endnotes markers were placed. -\newtoggle{@gotendnotes} % true when \endnote used +% and the list is typed into the log file after the document ends. That way, +% you can hunt down where the endnotes markers were placed. +\newtoggle{@gotendnotes} % true if \endnote used % \long\gdef\@endnotelist{} \newcounter{@endnotecount} % -\DeclareDocumentCommand \endnote { } -{% -\global\toggletrue{@gotendnotes}% -\stepcounter{@endnotecount}\sups{\arabic{@endnotecount}}% -\long\edef\@endnotelist{\@endnotelist\space (\arabic{@endnotecount},p.\thepage)}% +\def\@addendnote{% + \global\toggletrue{@gotendnotes}% + \stepcounter{@endnotecount}\sups{\arabic{@endnotecount}}% + \long\edef\@endnotelist{% + \@endnotelist\space (\arabic{@endnotecount},p.\thepage)% + }% +} +\def\@nendnote#1{\@addendnote} +\def\@nenspace{\@addendnote\space} +\def\@nenerror{% + \ClassError{novel}{\string\endnote\space cannot be followed by [ character}% + {To avoid possible confusion with similar command from other packages, ^^J% + you may not follow \string\endnote\space with [ character. ^^J% + However, you may do \string\endnote\string{\string}[ if desired.}% } +\def\@ndospace{\@ifnextchar[\@nenerror\@nenspace} +\def\endnote{\@ifnextchar\bgroup\@nendnote\@ndospace} %% % \endnotetext{ID}{text} where ID is (usually) the endnote number. % If ID is other than space or tilde, it prints at left margin, followed by @@ -190,19 +345,59 @@ % If ID is space or empty, then the entire text is block-indented. This is % the method for continuing a prior endnote to a new paragraph. The text % may begin with \forceindent, according to your needs. -\DeclareDocumentCommand \endnotetext { m +m }% xparse allows \end... commands! -{ +\def\@nentexterror{% + \ClassError{novel}{\string\endnotetext\space cannot be followed by [ character}% + {To avoid possible confusion with similar command from other packages, ^^J% + you may not follow \string\endnotetext\space with [ character. ^^J% + This command takes two mandatory arguments. No optional argument.}% +} +% +\newcommand\nentext[2]{% \ifthenelse{\equal{#1}{\space}\OR\equal{#1}{}}% {\noindent\hangindent=\parindent\flexbox{\space}#2\par}% - {\noindent\hangindent=\parindent\flexbox{#1.}#2\par}% + {\noindent\hangindent=\parindent\flexbox{\lnum{#1}. }#2\par}% } +% In case the user inadvertently uses systax from `endnotes' package: +\def\endnotetext{\@ifnextchar[\@nentexterror\nentext} +% %% end endnotes +%% See novel.cls for the accompanying \AtBeginDocument routine. + + +%% Pertains to some standard LaTeX footnote code: +\AtBeginShipout{\gdef\@fnafter{}} +%% -%% See novel.cls for the accompanying AtBeginDocument routine. -%% See novel.cls for the accompanying AtEndDocument routine. +\gdef\@ActivateFootnotes{% called by `novel.cls' \AtBeginDocument + % Pertains to novel-footnotes.sty: + \LetLtxMacro\SetMarkerStyle\relax + \gsetlength\footnotesep{0.8\nbs} + % Adjusted position of footnote markers. Must wait for main font size: + \gsetlength\@twast{\heightof{*}-\normalAringheight} + \gsetlength\@twdag{\heightof{†}} + \gsetlength\@twdag{0.8\@twdag-\normalAringheight} + \gsetlength\@twdbldag{\heightof{‡}} + \gsetlength\@twdbldag{0.8\@twdbldag-\normalAringheight} + \gsetlength\@twsect{\heightof{§}} + \gsetlength\@twsect{0.8\@twsect-\normalAringheight} + \gsetlength\@tweight{\heightof{8}}% + \gsetlength\@tweight{0.8\@tweight-\normalAringheight}% + % Must wait to see how \SetFootnoteMarker was used: + \ifthenelse{\equal{\@myfnsymbols}{*}}{\setcounter{@maxfnsymbol}{8}}{} + \ifthenelse{\equal{\@myfnsymbols}{†}}{\setcounter{@maxfnsymbol}{6}}{} + % Values to be used by footnotes: + \FPdiv{\@myFontScale}{\strip@pt\@SetFontSize}{12} + % Substitute for \footnotesize, but only works for actual footnotes, + % about 10pt with similarly reduced skip: + \FPmul{\@myfootnotesizeN}{\@myFontScale}{10} + \FPround{\@myfootnotesizeN}{\@myfootnotesizeN}{2} + \FPmul{\@myfootnoteskipN}{\@myFontScale}{\strip@pt\nbs} + \FPmul{\@myfootnoteskipN}{\@myfootnoteskipN}{0.84} + \FPround{\@myfootnoteskipN}{\@myfootnoteskipN}{2} +}% end \@ActivateFootnotes @@ -210,25 +405,27 @@ %% ATENDDOCUMENT -%% ----------------------------------------------------------------------------- +%% ---------------------------------------------------------------------------- %% Write a list of endnote (number,page) into log file, % and Big Bad Warning if numerical footnotes and endnotes both used: \AtEndDocument{% - \iftoggle{@gotendnotes}% - {\typeout{^^J^^JClass `novel' Alert: You placed endnotes (number,page):^^J% - \@endnotelist% - ^^J^^J}% - }{} + \iftoggle{@gotendnotes}{% + \typeout{^^JClass `novel' Alert: You placed endnotes (number,page): ^^J% + \@endnotelist ^^J}% + }{} % - \iftoggle{@placedfootnotenumber}% - {\iftoggle{@gotendnotes}% - {\typeout{^^JClass `novel' BIG BAD WARNING:^^J% - Numbered footnotes and endnotes! Better use symbolic footnotes!^^J^^J}% - }{}% - }{}% + \iftoggle{@placedfootnotenumber}{% + \iftoggle{@gotendnotes}{% + \ClassWarning{novel}{^^JBIG BAD WARNING! You used numbered footnotes ^^J% + and numbered endnotes. Better change to symbolic footnotes! ^^J}% + }{} + }{}% }% end \AtEndDocument %% +%% +\endinput +%% %% end of file `novel-Footnotes.sty' diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-HeadFootStyles.sty b/Master/texmf-dist/tex/lualatex/novel/novel-HeadFootStyles.sty index d86b923f011..20664fadb18 100644 --- a/Master/texmf-dist/tex/lualatex/novel/novel-HeadFootStyles.sty +++ b/Master/texmf-dist/tex/lualatex/novel/novel-HeadFootStyles.sty @@ -1,6 +1,6 @@ %% -%% This is file `novel-HeadFootStyles.sty', part of class `novel'. -%% Copyright 2017 Robert Allgeyer. +%% This is file `novel-HeadFootStyles.sty', part of `novel' document class. +%% Copyright 2017-2018 Robert Allgeyer. %% %% %% This file may be distributed and/or modified under the @@ -13,7 +13,7 @@ %% %% \ProvidesFile{novel-HeadFootStyles.sty}% -[2018/01/14 v1.46.2 LaTeX file (header and footer layouts and styles)] +[2018/03/28 v1.50 LaTeX file (header and footer layouts and styles)] %% @@ -24,122 +24,346 @@ %% \AtEndPreamble, and only if the user did not already define the layout %% in the Preamble. -%% Note that `style' sometimes means `layout`. +\gdef\@HeadFootStyle{1} % default: header but not footer +\gdef\@VersoEmblem{} % no default emblem +\gdef\@RectoEmblem{} % no default emblem +%% SET HEADER/FOOTER STYLE AND RESERVE SPACE FOR HEADER/FOOTER +%% ---------------------------------------------------------------------------- +% There are several pre-configured header/footer styles, addressing every +% situation likely to be seen in popular fiction. The style details are +% coded, using `fancyhdr' syntax, in novel-HeadFootStyles.sty. +% If you wish to create a custom head/foot style, you must first choose +% one of the pre-configured styles, then customize it. That way, +% the layout engine knows whether header or footer are present. +\newif \if@StyledHeader % true if user-customized header using \fancyhead +\newif \if@StyledFooter % true if user-customized footer using \fancyfoot +% +\gdef\SetHeadFootStyle#1{% + \if@coverart + \gdef\@HeadFootStyle{0} % required: no header/footer for coverart + \ifthenelse{\equal{#1}{0}}{}{% + \ClassWarning{novel}{^^JClass option `coverart' does not % + allow header/footer. Ignored. ^^J} + }% + \else + \@tempTFfalse + \ifthenelse{\equal{#1}{0}}{% + \global\@HasHeaderfalse\global\@HasFooterfalse\@tempTFtrue% + }{} + \ifthenelse{\equal{#1}{1}}{% + \global\@HasHeadertrue\global\@HasFooterfalse\@tempTFtrue% + }{} + \ifthenelse{\equal{#1}{2}}{% + \global\@HasHeaderfalse\global\@HasFootertrue\@tempTFtrue% + }{} + \ifthenelse{\equal{#1}{3}}{% + \global\@HasHeaderfalse\global\@HasFootertrue\@tempTFtrue% + }{} + \ifthenelse{\equal{#1}{4}}{% + \global\@HasHeadertrue\global\@HasFooterfalse\@tempTFtrue% + }{} + \ifthenelse{\equal{#1}{5}}{% + \global\@HasHeadertrue\global\@HasFootertrue\@tempTFtrue% + }{} + \ifthenelse{\equal{#1}{6}}{% + \global\@HasHeadertrue\global\@HasFootertrue\@tempTFtrue% + }{} + % Ensure that user choice was on the allowed list: + \if@tempTF\else + \ClassError{novel}{Invalid choice for \string\SetHeadFootStyle}% + {\string\SetHeadFootStyle\space needs choice of 0,1,2,3,4,5,6, ^^J% + even if you wish to customize using fancyhdr syntax.}% + \fi + \gdef\@HeadFootStyle{#1} + \fi +}% +\SetHeadFootStyle{1} % default, header only +\let\SetHeadStyle\SetHeadFootStyle\relax % deprecated +% +% \HeadJump is a number from 1 to 3 (may be decimal). It measures the +% distance from baseline of header text, to first baseline of main text, +% then divides by the normal baseline. +% So, a \HeadJump of 1 means that the header text is positioned exactly +% one line above main text (unlikely). A value of 2 skips a whole line. +% The default value is 1.5, which is often used in popular fiction. +% No matter what value is set, it will be re-set to 0 later, if the +% choice of head/foot style does not have a header. +% Likewise for \FootJump, measuring from baseline of lowermost main text, +% to baseline of footer text. +\gdef\SetHeadJump#1{% + \IfDecimal{#1}{% + \FPiflt{#1}{1} + \ClassError{novel}{\string\SetHeadJump\space must be at least 1}% + {\string\SetHeadJump\string from 1 to 3, may be decimal.}% + \fi + \FPifgt{#1}{3} + \ClassError{novel}{\string\SetHeadJump\space must not exceed 3}% + {\string\SetHeadJump\string from 1 to 3, may be decimal.}% + \fi + \gdef\@HeadJump{#1} + }{% + \ClassError{novel}{Unable to parse \string\SetHeadJump\space argument}% + {Needs integer or decimal, but not ending in decimal point or comma. ^^J% + Must be a number from 1 to 3, but may not be a macro.}% + }% +} +\SetHeadJump{1.5} % default +% +\gdef\SetFootJump#1{% + \IfDecimal{#1}{% + \FPiflt{#1}{1} + \ClassError{novel}{\string\SetFootJump\space must be at least 1}% + {\string\SetFootJump\string from 1 to 3, may be decimal.}% + \fi + \FPifgt{#1}{3} + \ClassError{novel}{\string\SetFootJump\space must not exceed 3}% + {\string\SetFootJump\string from 1 to 3, may be decimal.}% + \fi + \gdef\@FootJump{#1} + }{% + \ClassError{novel}{Unable to parse \string\SetFootJump\space argument}% + {Needs integer or decimal, but not ending in decimal point or comma. ^^J% + Must be a number from 1 to 3, but may not be a macro.}% + }% +} +\SetFootJump{1.5} % default +% +%% end set style and reserve space for header/footer. + + +%% Used in novel-headfootstyles.sty: +% \SetLooseHead looseness factor (fontspec LetterSpace) 0=tight, 50=default +\gdef\SetLooseHead#1{ + \FPdiv{\@loosehead}{#1}{10} % change method fontspec w/ microtype + \FPmin{\@looseheadN}{\@loosehead}{50} % don't want numbers too loose + \FPdiv{\@looseheadword}{\@loosehead}{30} % inter-word, new in v. 1.40.3 + \FPadd{\@looseheadword}{\@looseheadword}{1} +} +\SetLooseHead{50} +%% + +% +% See docs for what these emblems do, if used: +\newcommand\SetEmblems[2]{ % verso, recto + \gdef\@VersoEmblem{{\headfont #1}} + \gdef\@RectoEmblem{{\headfont #2}} +} +\let\SetEmblem\SetEmblems% for convenience +% If you want something fancier than \thepage: +\gdef\SetPageNumberStyle#1{% no small caps, so lowercase roman preserved + \gdef\pagenumberstyle{{\addfontfeature{Letters=ResetAll}#1}} +} +\SetPageNumberStyle{\thepage}% no small caps +% See novel.cls for the accompanying AtBeginDocument routine. + %% INITIALIZE FANCYHDR -%% ----------------------------------------------------------------------------- -%% Before now now, space was reserved for header/footer. +%% ---------------------------------------------------------------------------- +% Earlier, space was reserved for header/footer, but the content of +% headers and footers was not specified. Now, package `fancyhdr' +% will be used to create the content. % Start by loading package `fancyhdr' and blanking everything: -% -\newtoggle{@inheadfoot} % true in header or footer -% \RequirePackage{fancyhdr} \renewcommand\headrulewidth{0pt} \renewcommand\footrulewidth{0pt} \fancyhead[LO,RE,LE,RO,CE,CO]{} \fancyfoot[LO,RE,LE,RO,CE,CO]{} -% \SetLooseHead looseness factor (fontspec LetterSpace) 0=tight, 50=default -\gdef\SetLooseHead#1{ - \gdef\@@loosehead{#1} - \FPdiv{\@loosehead}{\@@loosehead}{10} % change in method of using fontspec with microtype - \FPmin{\@looseheadnum}{\@loosehead}{50} % Don't want numbers too loose. - \FPdiv{\@looseheadword}{\@loosehead}{30} % new in v. 1.40.3. - \FPadd{\@looseheadword}{\@looseheadword}{1} -} -\SetLooseHead{50} -% Create flags to know if \fancyhead and \fancyfoot have been defined by user, -% somewhere in the Preamble. If not, then pre-defined layout based on trimsize -% will be applied \AtEndPreamble. -\LetLtxMacro{\@tempFancyhead}{\fancyhead} % from package `letltxmacro' +% It might be useful to know whether something is being placed in main text, +% or within a header/footer. A new boolean is created, which is only true +% when within a header or footer. You can define macros so that they test +% this boolean. +% To make this work, \fancyhead and \fancyfoot are re-defined: +\newtoggle{@inheadfoot} % true within header or footer +\LetLtxMacro{\@myfancyhead}{\fancyhead} +\LetLtxMacro{\@myfancyfoot}{\fancyfoot} \renewcommand\fancyhead[2][]{% - \@styledHeadertrue% - \@tempFancyhead[#1]{\toggletrue{@inheadfoot}{\normalsize#2}}% + \global\@StyledHeadertrue% + \@myfancyhead[#1]{\toggletrue{@inheadfoot}{\normalsize #2}}% not global } -% -\LetLtxMacro{\@tempFancyfoot}{\fancyfoot} \renewcommand\fancyfoot[2][]{% - \@styledFootertrue% - \FPsub{\@footraise}{\@footjump}{1}% - \FPmul{\@footraise}{-\@footraise}{\Current@BaselineSkipNum}% - \@tempFancyfoot[#1]{% - \toggletrue{@inheadfoot}% - \stake\smash{\raisebox{\@footraise pt}{{\normalsize#2}}}% + \global\@StyledFootertrue% + \FPsub{\@footraise}{\@FootJump}{1}% + \FPmul{\@footraise}{-\@footraise}{\strip@pt\nbs}% + \@myfancyfoot[#1]{% + \toggletrue{@inheadfoot}% not global + \stake\smash{\raisebox{\@footraise pt}{\normalsize #2}}% }% } -% -\LetLtxMacro{\@myTempTPS}{\thispagestyle} +%% end initialize fancyhdr. + + +%% THISPAGESTYLE COMMANDS +%% ---------------------------------------------------------------------------- % Re-define \thispagestyle based on layout. When it requests only the page % number, decide what to do based on this command and whether footer is used: -\newif \if@thispagestyleset \@thispagestylesetfalse -% -%% See AtBeginShipout routine in novel.cls. +\newif \if@ThisPageStyle % true if \thispagestyle declared for current page +\newif \if@DeleteCSline % true when using @dropfolioinside +\AtBeginShipout{% re-sets when page done + \global\@DeleteCSlinefalse% + \global\@ThisPageStylefalse% +} +\LetLtxMacro{\@myTempTPS}{\thispagestyle} % \gdef\thispagestyle#1{% - \global\@thispagestylesettrue% - \gdef\@pagestyleOK{false}% + \global\@ThisPageStyletrue% + \@tempTFfalse% + % Style `fancy' is same as normal style: \ifthenelse{\equal{#1}{fancy}}{% - \gdef\@pagestyleOK{true}% + \@tempTFtrue% \@myTempTPS{fancy}% }{}% + % Style `empty' has no visible content in header or footer. + % This style is pre-defined, so no need to re-define it here. \ifthenelse{\equal{#1}{empty}}{% - \gdef\@pagestyleOK{true}% + \@tempTFtrue% \@myTempTPS{empty}% }{}% - \ifthenelse{\equal{#1}{plain}\OR\equal{#1}{fancyplain}\OR\equal{#1}{footer}}{% - \gdef\@pagestyleOK{true}% - \if@gotFooter \@myTempTPS{fancyplain}% - \else \@myTempTPS{empty}% + % Style `footer' has no visible content in header. + % If the normal style has a footer, it will be used as-is. However, if the + % normal style does not have a footer, then (unlike the above style) + % the page number will not be placed at bottom; as with style `empty'. + \ifthenelse{\equal{#1}{footer}}{% + \@tempTFtrue% + \if@HasFooter\@myTempTPS{@footer}% + \else\@myTempTPS{empty}% \fi% }{}% + % Style `forcenumber' is rarely used. If the normal style has a footer, + % it will be used as-is (presumably contains the page number), and there + % will be no visible content in the header. + % But if there is no normal footer, then the outside portion of the header + % is printed. No other portion of the header. Presumably the page number + % is located at the outside of the header. \ifthenelse{\equal{#1}{forcenumber}}{% - \gdef\@pagestyleOK{true}% - \if@gotFooter \@myTempTPS{fancyplain}% - \else \@myTempTPS{fancynumber}% + \@tempTFtrue% + \if@HasFooter\@myTempTPS{@footer}% + \else\@myTempTPS{@forcenumber}% \fi% }{}% - % - \ifthenelse{\equal{#1}{dropfolioinside}% after \clearpage - \OR \equal{#1}{dropfolio} \OR \equal{#1}{dropfoliolater}}{% compatibility - \gdef\@pagestyleOK{true}% - \if@gotFooter% - \@myTempTPS{fancyplain}% + % Style `dropfoliobeneath': There will be no visible content in header. + % If the normal style has a footer, it will be used as-is. This assumes + % that the page number is contained in the footer, the usual case. + % If the normal style has no footer, then the page number will be centered + % within the lower margin, at the position where an exta line would be. + % Thus, pagination of the main text is unaffected. + % Since the number is closer than usual to the page bottom edge, you must + % ensure that it does not intrude into the unsafe zone (where printers + % prohibit any printable matter). TeX cannot check this for you. However, + % you can define an Unsafe Zone, and inspect placement of the number + % in draft mode. + % Styles `plain*' and `fancyplain*' (with asterisk) are aliases. + \ifthenelse{\equal{#1}{dropfoliobeneath}% + \OR \equal{#1}{plain*} \OR \equal{#1}{fancyplain*}}{% + \@tempTFtrue% + \if@HasFooter\@myTempTPS{@footer}% \else% - \global\@addCTlinefalse% - \@myTempTPS{empty}% - \@dropfolioinside + \@myTempTPS{@dropfoliobeneath}% + \typeout{^^JClass `novel' Alert: Page no. \thepage\space in margin. ^^J% + Review layout to ensure that this is within the Safe Area. ^^J% + }% \fi% }{}% - % With `dropfoliobeneath` only a footer is used, if present. If no footer, - % then the styled page number is centered at one baselineskip beneath the - % ordinary bottom of the textblock. Thus, the number intrudes into the - % bottom margin. This is OK if the bottom margin is wider than minimum. - % Whether the margin is wide enough, is for the user to determine, because - % the document class does not know the printer's limitations. - \ifthenelse{\equal{#1}{dropfoliobeneath}}{% after \clearpage - \gdef\@pagestyleOK{true}% - \if@gotFooter% - \@myTempTPS{fancyplain}% + % Style `dropfolioinside': There will be no visible content in header. + % If the normal style has a footer, it will be used as-is. This assumes + % that the page number is contained in the footer, the usual case. + % If the normal style has not footer, then the page number will be centered + % where the last line of main text would ordinarily be. No extra gap. + % That may cause the (former) last line of main text to flow to the top of + % the next page, and so forth. However, if this page style is used on + % a page with ChapterStart, then the height of ChapterStart will be + % automatically reduced by one line, so that there is no repagination. + % Styles `plain', `fancyplain', `dropfolio', and `dropfoliolater' are aliases + % for `dropfolioinside'. I couldn't make up my mind regarding the + % command name. For compatibility, all these do the same thing. + \ifthenelse{\equal{#1}{dropfolioinside}% + \OR \equal{#1}{plain} \OR \equal{#1}{fancyplain}% + \OR \equal{#1}{dropfolio} \OR \equal{#1}{dropfoliolater}}{% + \@tempTFtrue% + \if@HasFooter\@myTempTPS{@footer}% \else% - \@myTempTPS{empty}% - \@dropfoliobeneath + \global\@DeleteCSlinetrue% + \enlargethispage{-\nbs}% + \@myTempTPS{@dropfolioinside}% \fi% }{}% - %% - \ifthenelse{\equal{\@pagestyleOK}{true}}{}{% - \ClassWarning{novel}{^^JPage \pagenumberstyle\space has % - \string\thispagestyle{}^^J% - but its argument is not defined. Default substituted. Better fix that.^^J}% - }% + % Verify that an allowable choice was made: + \if@tempTF\else% + \ClassError{novel}{^^JPage \thepage\space has \string\thispagestyle ^^J% + but its argument is not on the list of choices. See docs. ^^J}% + \fi% +} % end \thispagestyle. +% +\let\dropfolionow\relax % compatibility with earlier version. +% +% Here are the thispagestyle definitions: +\fancypagestyle{@footer}{ % blanks header, but leaves footer as-is + \renewcommand\headrulewidth{0pt} + \renewcommand\footrulewidth{0pt} + \fancyhead[LO,RE,LE,RO,CE,CO]{} +} +\fancypagestyle{@dropfolioinside}{ % page number where last line would be + \renewcommand\headrulewidth{0pt} + \renewcommand\footrulewidth{0pt} + \fancyhead[LO,RE,LE,RO,CE,CO]{} + \fancyfoot[LO,RE,LE,RO]{} + \fancyfoot[CO,CE]{% + \raisebox{\dimexpr\@FootJump\nbs}{\@lspagenum\pagenumberstyle}% + } +} +\fancypagestyle{@dropfoliobeneath}{ % page number in margin below text + \renewcommand\headrulewidth{0pt} + \renewcommand\footrulewidth{0pt} + \fancyhead[LO,RE,LE,RO,CE,CO]{} + \fancyfoot[LO,RE,LE,RO]{} + \fancyfoot[CO,CE]{% + \raisebox{\dimexpr\@FootJump\nbs-\nbs}{\@lspagenum\pagenumberstyle}% + } } +\fancypagestyle{@forcenumber}{ % if has header but not footer + \renewcommand\headrulewidth{0pt} + \renewcommand\footrulewidth{0pt} + \fancyhead[LO,RE,LE,RO,CE,CO]{} + \fancyhead[LE]{% + \makebox[2.5em][l]{\@lspagenum\pagenumberstyle}% + \@VersoEmblem% + } + \fancyhead[RO]{% + \@RectoEmblem% + \makebox[2.5em][r]{\@lspagenum\pagenumberstyle}% + } + \fancyfoot[LO,RE,LE,RO,CE,CO]{} +} +%% end \thispagestyle commands. + + +%% +\gdef\@lshftext{\headfont\addfontfeature{LetterSpace=\@loosehead}} +\gdef\@lspagenum{\headfont\addfontfeature{LetterSpace=\@looseheadN}} +%% + +% Content of header text (if present) can be changed at any time within +% the body, using the following commands. If not used, then +% Verso is initialized to \theauthor and Recto is initialized to \thetitle +% AtBeginDocument, with adjustments to interword spacing. +% If you wish, you may write the commands with empty arguments, in which case +% the header still appears with page number (if present), but no text. +% +\gdef\NewVersoHeadText#1{\gdef\versoheadtext{#1}} +\let\SetVersoHeadText\NewVersoHeadText\relax % for convenience +\let\RenewVersoHeadText\NewVersoHeadText\relax % for convenience % -%% End initialize fancyhdr. +\gdef\NewRectoHeadText#1{\gdef\rectoheadtext{#1}} +\LetLtxMacro\SetRectoHeadText\NewRectoHeadText\relax % for convenience +\LetLtxMacro\RenewRectoHeadText\NewRectoHeadText\relax % for convenience +% +%% %% See AtBeginDocument routine in novel.cls: -%% ----------------------------------------------------------------------------- -\gdef\@activateHeadFootStyles{ % called AtBeginDocument by novel.cls +%% ---------------------------------------------------------------------------- +\gdef\@ActivateHeadFootStyles{ % called AtBeginDocument by novel.cls % Pre-configured header/footer styles, unless user over-rode them: % \versoheadtext is initialized to \theauthor % \rectoheadtext is initialized to \thetitle @@ -150,208 +374,126 @@ \NewRectoHeadText{\thetitle} % revised in v. 1.40.3 }{} % - % ---------------------------------------------------------------------------- + % --------------------------------------------------------------------------- % IF YOU ARE WRITING YOUR OWN HEADER/FOOTER LAYOUT: % Look here for the pre-defined layouts, for use as models. % Note that if you write \fancyhead or \fancyfoot in the Preamble, - % that sets the \@styledHeader flag, so these codes do not over-ride yours. - \ifthenelse{\equal{\my@HeadFootStyle}{1}}{ % default - \if@styledHeader\else - \fancyhead[LE]{\makebox[2.5em][l]{% - {\headfont{\addfontfeature{LetterSpace=\@looseheadnum}\pagenumberstyle}}}\my@VersoEmblem% + % that sets the \@StyledHeader flag, so these codes do not over-ride yours. + % \@lshftext loosens text tracking. + % \@lspagenum loosens page number tracking, like \@lshftext but capped + % at a maximum looseness. + \ifthenelse{\equal{\@HeadFootStyle}{1}}{ % default + \if@StyledHeader\else + \fancyhead[LE]{% + \makebox[2.5em][l]{\@lspagenum\pagenumberstyle}% + \@VersoEmblem% } - \fancyhead[RO]{\my@RectoEmblem\makebox[2.5em][r]{% - {\headfont{\addfontfeature{LetterSpace=\@looseheadnum}\pagenumberstyle}}}% + \fancyhead[RO]{% + \@RectoEmblem% + \makebox[2.5em][r]{\@lspagenum\pagenumberstyle}% } - \fancyhead[CE]{{\headfont{\addfontfeature{LetterSpace=\@loosehead}\versoheadtext}}} - \fancyhead[CO]{{\headfont{\addfontfeature{LetterSpace=\@loosehead}\rectoheadtext}}} + \fancyhead[CE]{\@lshftext\versoheadtext} + \fancyhead[CO]{\@lshftext\rectoheadtext} \fi }{} % - \ifthenelse{\equal{\my@HeadFootStyle}{2}}{ - \if@styledFooter\else - \fancyfoot[LE]{\makebox[2.5em][l]{% - {\headfont{\addfontfeature{LetterSpace=\@looseheadnum}\pagenumberstyle}}}\my@VersoEmblem% + \ifthenelse{\equal{\@HeadFootStyle}{2}}{ + \global\@StyledHeaderfalse + \if@StyledFooter\else + \fancyfoot[LE]{% + \makebox[2.5em][l]{\@lspagenum\pagenumberstyle}% + \@VersoEmblem% } - \fancyfoot[RO]{\my@RectoEmblem\makebox[2.5em][r]{% - {\headfont{\addfontfeature{LetterSpace=\@loosehead}\pagenumberstyle}}}% + \fancyfoot[RO]{% + \@RectoEmblem% + \makebox[2.5em][r]{\@lspagenum\pagenumberstyle}% } \fi }{} % - \ifthenelse{\equal{\my@HeadFootStyle}{3}}{ - \if@styledFooter\else - \fancyfoot[CO,CE]{% - {\headfont{\addfontfeature{LetterSpace=\@looseheadnum}\pagenumberstyle}}% - } + \ifthenelse{\equal{\@HeadFootStyle}{3}}{ + \if@StyledFooter\else + \fancyfoot[CO,CE]{\@lspagenum\pagenumberstyle} \fi }{} % - \ifthenelse{\equal{\my@HeadFootStyle}{4}}{ - \if@styledHeader\else - \fancyhead[LE]{\makebox[2.5em][l]{% - {\headfont{\addfontfeature{LetterSpace=\@looseheadnum}\pagenumberstyle}}}% - \my@VersoEmblem\hspace{1em}% - {\headfont{\addfontfeature{LetterSpace=\@loosehead}\versoheadtext}}% + \ifthenelse{\equal{\@HeadFootStyle}{4}}{ + \if@StyledHeader\else + \fancyhead[LE]{% + \makebox[2.5em][l]{\@lspagenum\pagenumberstyle}% + \@VersoEmblem% + \hspace{1em}% + {\@lshftext\versoheadtext}% } - \fancyhead[RO]{{\headfont{\addfontfeature{LetterSpace=\@loosehead}\rectoheadtext}}% - \hspace{1em}\my@RectoEmblem\makebox[2.5em][r]{{% - \headfont{\addfontfeature{LetterSpace=\@looseheadnum}\pagenumberstyle}}}% + \fancyhead[RO]{% + {\@lshftext\rectoheadtext}% + \hspace{1em}% + \@RectoEmblem% + \makebox[2.5em][r]{\@lspagenum\pagenumberstyle}% } \fi }{} % - \ifthenelse{\equal{\my@HeadFootStyle}{5}}{ - \if@styledHeader\else - \fancyhead[CE]{{\headfont{\addfontfeature{LetterSpace=\@loosehead}\versoheadtext}}} - \fancyhead[CO]{{\headfont{\addfontfeature{LetterSpace=\@loosehead}\rectoheadtext}}} + \ifthenelse{\equal{\@HeadFootStyle}{5}}{ + \if@StyledHeader\else + \fancyhead[CE]{\@lshftext\versoheadtext} + \fancyhead[CO]{\@lshftext\rectoheadtext} \fi - \if@styledFooter\else + \if@StyledFooter\else \fancyfoot[CO,CE]{% - {\headfont{\addfontfeature{LetterSpace=\@looseheadnum}\pagenumberstyle}}% + {\@lspagenum\pagenumberstyle}% } \fi }{} % - \ifthenelse{\equal{\my@HeadFootStyle}{6}}{ - \if@styledHeader\else - \fancyhead[LE]{\makebox[2.5em][l]{% - {\headfont{\addfontfeature{LetterSpace=\@looseheadnum}\pagenumberstyle}}}\my@VersoEmblem% + \ifthenelse{\equal{\@HeadFootStyle}{6}}{ + \if@StyledHeader\else + \fancyhead[LE]{% + \makebox[2.5em][l]{\@lspagenum\pagenumberstyle}% + \@VersoEmblem% } - \fancyhead[RO]{\my@RectoEmblem\makebox[2.5em][r]{% - {\headfont{\addfontfeature{LetterSpace=\@looseheadnum}\pagenumberstyle}}}% + \fancyhead[RO]{% + \@RectoEmblem% + \makebox[2.5em][r]{\@lspagenum\pagenumberstyle}% } - \fancyhead[RE]{{\headfont{\addfontfeature{LetterSpace=\@loosehead}\versoheadtext}}} - \fancyhead[LO]{{\headfont{\addfontfeature{LetterSpace=\@loosehead}\rectoheadtext}}} + \fancyhead[RE]{\@lshftext\versoheadtext} + \fancyhead[LO]{\@lshftext\rectoheadtext} \fi }{} - % + % END MODELS FOR WRITING YOUR OWN. % % END PRE-DEFINED LAYOUTS AND STYLES. - % ---------------------------------------------------------------------------- + % --------------------------------------------------------------------------- % - % Substitute for \thispagestyle{plain} - \fancypagestyle{fancyplain}{ % if has footer - \renewcommand\headrulewidth{0pt} - \renewcommand\footrulewidth{0pt} - \fancyhead[LO,RE,LE,RO,CE,CO]{} - \fancyfoot[LO,RE,LE,RO,CE,CO]{} - \fancyfoot[CO,CE]{{\headfont{\addfontfeature{LetterSpace=\@looseheadnum}\pagenumberstyle}}} - } - % Not a user command, use plain or fancyplain: - \fancypagestyle{fancynumber}{ % if has header but not footer - \renewcommand\headrulewidth{0pt} - \renewcommand\footrulewidth{0pt} - \fancyhead[LO,RE,LE,RO,CE,CO]{} - \fancyhead[LE]{\makebox[2.5em][l]{% - {\headfont{\addfontfeature{LetterSpace=\@looseheadnum}\pagenumberstyle}}}\my@VersoEmblem% - } - \fancyhead[RO]{\my@RectoEmblem\makebox[2.5em][r]{% - {\headfont{\addfontfeature{LetterSpace=\@looseheadnum}\pagenumberstyle}}}% - } - \fancyfoot[LO,RE,LE,RO,CE,CO]{} - } +%%%%% % Now put `fancyhdr' to work: \pagestyle{fancy} % default unless over-ridden by \thispagestyle{} % -} % end \@activateHeadFootStyles -% -%% end initialize fancyhdr - - -%% DROPFOLIO -%% ----------------------------------------------------------------------------- -\newlength\temp@pgnumwidth -\newlength\temp@pgnumraise -% -% \@dropfolioinside reduces the textblock height by one lineskip. At the bottom, -% where the last line would have been, the styled page number is centered. -\newcommand\@dropfolioinside{% - \enlargethispage{-\nbs}% - \setlength\temp@pgnumwidth{% - \widthof{{\headfont{\addfontfeature{LetterSpace=\@looseheadnum}\pagenumberstyle}}}}% - \if@offcenterTrim% - \setlength\temp@pgnumraise{% - \dimexpr\New@BottomMargin+\New@MediaHeight-\New@TrimHeight}% - \global\temp@pgnumraise=\temp@pgnumraise% - \else% - \setlength\temp@pgnumraise{% - \dimexpr\New@BottomMargin+0.5\New@MediaHeight-0.5\New@TrimHeight}% - \global\temp@pgnumraise=\temp@pgnumraise% - \fi% - %%%%% - \ifodd\c@page% - \AddToShipoutPicture*{\@getPageXY\AtPageLowerLeft{% - \hspace{\dimexpr\Trim@Lx+\New@InsideMargin-0.5\temp@pgnumwidth}% - \charscale[1,0.5\textwidth,\temp@pgnumraise]{% - {\headfont{\addfontfeature{LetterSpace=\@looseheadnum}\pagenumberstyle}}}}}% - \else% - \AddToShipoutPicture*{\@getPageXY\AtPageLowerLeft{% - \hspace{\dimexpr\Trim@Lx+\New@OutsideMargin+0.5\textwidth-0.5\temp@pgnumwidth}\raisebox{% - \temp@pgnumraise}{{\headfont{\addfontfeature{LetterSpace=\@looseheadnum}\pagenumberstyle}}}}}% - \fi% -} % end \@dropfolioinside +} % end \@ActivateHeadFootStyles % -\let\dropfolionow\relax % compatibility with earlier version. -% - -% \@dropfoliobeneath does not change the textblock height. The styled page -% number is centered where an extra line would be, within the bottom margin. -\newcommand\@dropfoliobeneath{% - \setlength\temp@pgnumwidth{% - \widthof{{\headfont{\addfontfeature{LetterSpace=\@looseheadnum}\pagenumberstyle}}}}% - \if@offcenterTrim% - \setlength\temp@pgnumraise{% - \New@BottomMargin-\nbs+\New@MediaHeight-\New@TrimHeight}% - \else% - \setlength\temp@pgnumraise{% - \New@BottomMargin-\nbs+0.5\New@MediaHeight-0.5\New@TrimHeight}% - \fi% - \AddToShipoutPicture*{\@getPageXY\AtPageLowerLeft{% - \ifodd\c@page% - \hspace{\dimexpr\Trim@Lx+\New@InsideMargin-0.5\temp@pgnumwidth}% - \else% - \hspace{\dimexpr\Trim@Lx+\New@OutsideMargin-0.5\temp@pgnumwidth}% - \fi% - \charscale[1,0.5\textwidth,\temp@pgnumraise]{% - {\headfont{\addfontfeature{LetterSpace=\@looseheadnum}\pagenumberstyle}}}% - }% - }% -} % end \@dropfoliobeneath %% -% -% Content of header text (if present) can be changed at any time within -% the body, using the following commands. If not used, then -% Verso is initialized to \theauthor and Recto is initialized to \thetitle -% AtBeginDocument, with adjustments to interword spacing. -% If you wish, you may write the commands with empty arguments, in which case -% the header still appears with page number (if present), but no text. -% -\newlength\@mykem -% -\gdef\NewVersoHeadText#1{ - \FPdiv{\@myk}{\@loosehead}{500} - \setlength\@mykem{\@myk em} - \gdef\versoheadtext{#1} -} -\let\SetVersoHeadText\NewVersoHeadText\relax % for convenience -\let\RenewVersoHeadText\NewVersoHeadText\relax % for convenience -% -\gdef\NewRectoHeadText#1{ - \FPdiv{\@myk}{\@loosehead}{500} - \setlength\@mykem{\@myk em} - \gdef\rectoheadtext{#1} -} -\let\SetRectoHeadText\NewRectoHeadText\relax % for convenience -\let\RenewRectoHeadText\NewRectoHeadText\relax % for convenience -% +%% Neutralize settings that cannot be used after Preamble: +\gdef\@DisableHeadFootSettings{% called by `novel.cls' \AtBeginDocument + \LetLtxMacro\SetHeadFootStyle\relax + \LetLtxMacro\SetHeadStyle\relax + \LetLtxMacro\SetHeadJump\relax + \LetLtxMacro\SetFootJump\relax + \LetLtxMacro\SetLooseHead\relax +}% end \@DisableHeadFootSettings %% +% The following settings can continue to be re-issued after \begin{document}: +% \SetEmblems also \SetEmblem +% \SetPageNumberStyle +% \SetVersoHeadText also \New and \Renew +% \SetRectoHeadText also \New and \Renew -% +%% +\endinput +%% %% End of file `novel-HeadFootStyles.sty' diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-Images.sty b/Master/texmf-dist/tex/lualatex/novel/novel-Images.sty index 7a67b44bd22..f5ec180c27c 100644 --- a/Master/texmf-dist/tex/lualatex/novel/novel-Images.sty +++ b/Master/texmf-dist/tex/lualatex/novel/novel-Images.sty @@ -1,6 +1,6 @@ %% -%% This is file `novel-Images.sty', part of class `novel'. -%% Copyright 2017 Robert Allgeyer. +%% This is file `novel-Images.sty', part of `novel' document class. +%% Copyright 2017-2018 Robert Allgeyer. %% %% %% This file may be distributed and/or modified under the @@ -13,54 +13,146 @@ %% %% \ProvidesFile{novel-Images.sty}% -[2018/01/14 v1.46.2 LaTeX file (image placement)] +[2018/03/28 v1.50 LaTeX file (image placement)] %% -%% +%% In `novel', images are handled with a view to preserving uniform line grid. +%% Normally, a work of fiction has no (or very few) images within the main +%% body of text. Images are more likely on display pages (such as title page) +%% or in chapter starts, or maps. + +%% There are two ways to place an image: inline, or float. +%% Inline image does not occupy its own block, but mingles with flowing text. +%% Float image occupies its own block, which will be placed where the command +%% is written, if it fits on that page. If it doesn't fit, then it will be +%% placed at the top of the following page. Surrounding text will be +%% typeset so at to not leave a big gap. Althouth TeX allows several +%% options for positioning a float, `novel' only allows one method. + %% Be sure to read the separate documentation about how to prepare images. -%% In general: (1) png, jpg only. (2) Flattened, no transparency. +%% In general: (1) png or jpg only. (2) Flattened, no transparency. %% (3) 300dpi (grayscale) or 600dpi (black/white) are industry norms. %% (4) Image file must contain its resolution. (5) Exact size, without scaling. %% (6) No private metadata. (7) Be sure grayscale is 1-channel, not rgb gray. + + +%% Luacode and related macro thanks to user Marcel Krüger, +%% at tex.stackexchange.com. +\RequirePackage{luacode} +\begin{luacode*} + function check_colorspaces(allowed_colorspace, name) + local doc = epdf.open(name); + if doc == nil then + tex.sprint(luatexbase.catcodetables['latex-package'], + "\\errmessage{Could not open " .. name .. "}{}{}\\@gobbletwo") + return; + else + for pageno=1,doc:getNumPages() do + local xobjs= doc:getCatalog():getPage(pageno):getResourceDict():lookup("XObject"); + if not xobjs:isNull() then + for i=1,xobjs:dictGetLength() do + xobjDict = xobjs:dictGetVal(i):streamGetDict() + if xobjDict:lookup('Subtype'):getName() == 'Image' then + if not allowed_colorspace[xobjDict:lookup('ColorSpace'):getName()] then + tex.sprint(luatexbase.catcodetables['latex-package'], '\\@firstoftwo') + return + end + end + end + end + end + end + tex.sprint(luatexbase.catcodetables['latex-package'], '\\@secondoftwo') + return; +end +\end{luacode*} +% +\newcommand\PDFHasDisallowedColorspaceTF[1]{% + \directlua{check_colorspaces({DeviceCMYK=true, DeviceGray=true},"\luaescapestring{#1}")}% +} +%% +%% +\begin{luacode*} + function utf16to8(u16str) + local result = "" + local i = 1 + if #u16str % 2 == 1 then + print("ERROR") + return + end + while i < #u16str do + local high, low = u16str:byte(i, i + 1) + i = i + 2 + local current = bit32.replace(low, high, 8, 8) + if bit32.band(high, 0xFC) == 0xD8 then + current = bit32.replace(0, current, 10, 10) + if i > #u16str then + print("ERROR") + return + end + high, low = u16str:byte(i, i + 1) + i = i + 2 + current = bit32.replace(current, bit32.replace(low, high, 8, 8), 0, 10) + 0x10000 + elseif bit32.band(high, 0xFC) == 0xDC then + print("ERROR") + return + end + result = result .. unicode.utf8.char(current) + end + return result + end + function normalize_string(str) + if str:sub(1,2) == "\xFE\xFF" then + return utf16to8(str:sub(3,-3)) + else + return str + end + end + function check_pdf_info(name, field, expected) + local doc = epdf.open(name); + if doc == nil then + tex.sprint(luatexbase.catcodetables['latex-package'], + "\\errmessage{Could not open " .. name .. "}{}{}\\@gobbletwo") + else + local producer = doc:getDocInfo():dictLookup(field) + if not producer:isNull() and normalize_string(producer:getString()) == expected then + tex.sprint(luatexbase.catcodetables['latex-package'], '\\@firstoftwo') + else + tex.sprint(luatexbase.catcodetables['latex-package'], '\\@secondoftwo') + end + end + end +\end{luacode*} +\newcommand\PDFVerifyInfoFieldTF[3]{\directlua{check_pdf_info("\luaescapestring{#1}", "\luaescapestring{#2}", "\luaescapestring{#3}")}} %% +%% New in version 1.50, makecmyk script, with special syntax: +\LetLtxMacro\@scriptincludepdf\includepdf\relax +\providecommand\includepdf[2][]{} +\renewcommand\includepdf[2][]{% from package `pdfpages' + \ClassError{novel}{Cannot use \string\includepdf\space command}% + {You can use novel-scripts `makegray' and `makebw' to convert pdf %%J% + to a raster jpg or png, suitable for placement as an image.}% +} +\gdef\ScriptCoverImage#1{% + \if@coverart% + \PDFVerifyInfoFieldTF{#1}{NSprocessed}{true}% + {\@scriptincludepdf{#1}}% + {\ClassError{novel}{Book cover pdf must be pre-processed by novel-scripts}% + {Each pdf processed by novel-scripts is marked internally. ^^J% + Your cover artwork pdf is unmarked. Use `makecmykpdf' script.}% + }% + \else% + \ClassError{novel}{Cannot use \string\ScriptCoverImage\space in interior}% + {\string\ScriptCoverImage\space only with `coverart' class option.}% + \fi% +} % +%% -% \InlineImage[hoffset,voffset]{imagefile.png or jpg} and starred version. -% -% Use hoffset to displace the image horizontally. Positive is to the right. -% Use voffset to displace the image vertically. Positive is upward. -% Can use hoffset by itself, then voffset defaults to 0pt. -% -% The TOP of the image is placed at the baseline of text (unless offset). -% To place image so that its BOTTOM (rather than top) is at the text baseline, -% use voffset b. Can also use b+2em or b-3.4pt etc. without spaces. -% To place image so that its top is as text X height, voffset \heightof{X}. -% -% You can combine lengths, such as: -% voffset 0.2em+\heightof{X} or b-\heightof{Aring}+0.5em -% However, do not begin the string with + or - followed directly by \heightof. -% -% Unstarred command: Image occupies its natural width, so that following text -% (if on same line) is after the image. -% Starred command: Image occupies zero width, so that following text (if on -% the same line) overlays the image. -% In all cases, the image occupies zero height, so that following text lines -% will overlay the image, unless you insert some \null lines. -% In some case, having following text overlay the image is desirable. But talk -% with your print service about that. Not all like it. -% If the image rises above its line of text, it may overlay text on the -% preceding line, which obscures that text. Don't do it. -% -% Clever use of hoffset, with narrowed textblock, can place text beside image. -% -% \imagewidth and \imageheight may be used for offsets, or for any other -% purpose once the image is placed. These lengths retain their values -% until a subsequent image is placed, not including anything in header/footer. -% -\def\Aring{Å} % has typical maximum accented character height in Latin-1. -% + +% Pertains to images: \newlength\imagewidth \newlength\imageheight \newlength\imagehoffset @@ -69,52 +161,61 @@ \newlength\@imageheight \newlength\@imagehoffset \newlength\@imagevoffset +\newlength\@mytotalht +\newif \if@UsingNovelCommand % true within \InlineImage etc. +%% \gdef\imagestarred{false} \gdef\imagefilename{unknown} -% Neutralize \includegraphics, so it is no longer a user command: -\LetLtxMacro\novel@includegraphics\includegraphics\relax -\LetLtxMacro\includegraphics\relax -\newcommand\includegraphics[2][]{ - \ClassError{novel}{Cannot use \string\includegraphics\space on page \thepage} - {The `novel' class has its own commands for placing images. See docs.^^J% - You cannot use the \string\includegraphics\space command.}% -} -% -\newcommand\pushtextdown[1]{% - \ifthenelse{\equal{#1}{} \OR \equal{#1}{ } \OR \equal{#1}{0}}{% - \def\@howmuchdown{0em}% - }{% - \def\@howmuchdown{#1}% - }% - ~\par\vspace*{-\nbs}\vspace*{\@howmuchdown}\par% -} -% -\newlength\@mytotalht -\newif\if@imgExtOK% -% -% \InlineImage can be used in body, header, footer. -% However, macros such as \imagefilename, \imagewidth, etc. -% are only set or re-set when the image in in the body. -% That prevents an intervening header/footer image from over-writing -% values set by the most recent body image. -% The unstarred command occupies the width of the image. -% The starred command occupies zero width. +\setkeys{Gin}{draft=false} % always shows the image, not a box outline +\LetLtxMacro\novel@sub@inclgr\includegraphics\relax +\if@coverart\else % Need to allow it, for possible use by \includepdf in cover. + \renewcommand\includegraphics[2][]{% + \ClassError{novel}{Direct use of \string\includegraphics\space forbidden}% + {You may only place images using commands specific to `novel' class. ^^J% + See `novel' documentation, section 7.}% + } +\fi % -\ExplSyntaxOn -\DeclareDocumentCommand \InlineImage { s O{0pt} m }{% - \@imgExtOKfalse% - \IfEndWith{#3}{png}{\@imgExtOKtrue}{}% - \IfEndWith{#3}{PNG}{\@imgExtOKtrue}{}% - \IfEndWith{#3}{jpg}{\@imgExtOKtrue}{}% - \IfEndWith{#3}{JPG}{\@imgExtOKtrue}{}% - \IfEndWith{#3}{jpeg}{\@imgExtOKtrue}{}% - \IfEndWith{#3}{JPEG}{\@imgExtOKtrue}{}% - \if@imgExtOK\else% - \ClassError{novel}{^^JImage~`#3'~format~not~allowed}% - {^^JImage~`#3'~has~file~type~not~allowed~in~`novel'~class.^^J% - Must~have~file~extension~png,~jpg,~jpeg,~(or~capitalized).^^J% - Others~such~as~bmp,~tiff,~pdf,~eps,~svg~are~not~allowed.^^J}% +\newcommand\@TestImageExtension[1]{% + \@tempTFfalse% + \IfEndWith{#1}{.png}{\@tempTFtrue}{}% + \IfEndWith{#1}{.PNG}{\@tempTFtrue}{}% + \IfEndWith{#1}{.jpg}{\@tempTFtrue}{}% + \IfEndWith{#1}{.JPG}{\@tempTFtrue}{}% + \IfEndWith{#1}{.jpeg}{\@tempTFtrue}{}% + \IfEndWith{#1}{.JPEG}{\@tempTFtrue}{}% + \if@tempTF\else% + \ClassError{novel}{Image format `#1' not allowed, page \thepage}% + {Image `#1' has file type not allowed in `novel' class. ^^J% + Must have file extension png, jpg, jpeg (or capitalized). ^^J% + Others such as pdf, bmp, tiff, eps, svg, jp2, jbig, are not allowed. ^^J% + The file extension is mandatory. Provide it, if missing.}% \fi% +} % +%% + + +%% INLINE IMAGE +%% ---------------------------------------------------------------------------- +% \InlineImage[xoffset,yoffset]{imagename.png} or jpg +% As the name implies, an inline image is used within the flow of text, rather +% than in its own block. It may be used in main body, header, and footer. +% Macros such as \imagefilename, \imagewidth, etc. +% are only set or re-set when the image in in the body. That prevents an +% intervening header/footer image from over-writing values set by% +% the most recent body image. +% Without offsets, the image is positioned with is left edge at the cursor, +% and its top edge at the text baseline. Positive offsets are right and up. +% If improperly positioned, the image can overlie (obscure) text that was +% previously placed. This is rarely desirable and may be flagged by +% some print services, because it looks wrong. +% The image will underlie anything that follows. This may be used as a +% special effect, if allowed by the print service (probably OK). +% With the un-starred command, the image occupies its natural cursor width. +% With the starred command, the image occupies zero cursor width, so that +% anything following will overlie it. +\DeclareDocumentCommand \InlineImage { s O{0pt} m }{% + \@TestImageExtension{#3}% \StrDel{#2}{\space}[\@myila]% \StrCut{\@myila}{,}{\@myilxa}{\@myilya}% \ifthenelse{\equal{\@myilxa}{} \OR \equal{\@myilxa}{0}}{% @@ -124,11 +225,13 @@ \def\@myily{0pt}}{\def\@myily{\@myilya}% }% \iftoggle{@inheadfoot}{}{\gdef\imagefilename{#3}}% for possible later use - \gdef\my@graphic{\novel@includegraphics[draft=false]{#3}}% - \setlength\@imagewidth{\widthof{\my@graphic}}% + \global\@UsingNovelCommandtrue% + \gdef\@mygraphic{\novel@sub@inclgr{#3}}% + \gdef\@mygraphicname{#3}% + \setlength\@imagewidth{\widthof{\@mygraphic}}% \global\@imagewidth=\@imagewidth% \iftoggle{@inheadfoot}{}{\setlength\imagewidth{\@imagewidth}}% - \setlength\@imageheight{\heightof{\my@graphic}}% + \setlength\@imageheight{\heightof{\@mygraphic}}% \global\@imageheight=\@imageheight% \iftoggle{@inheadfoot}{}{% \setlength\imageheight{\@imageheight}% @@ -153,137 +256,157 @@ \iftoggle{@inheadfoot}{}{\gdef\imagestarred{true}}% \makebox[0pt][l]{% \hspace{\@imagehoffset}% - \stake\smash{\raisebox{\@imagevoffset}{\my@graphic}}% + \stake\smash{\raisebox{\@imagevoffset}{\@mygraphic}}% }% }% % unstarred: {% \iftoggle{@inheadfoot}{}{\gdef\imagestarred{false}}% \hspace{\@imagehoffset}% - \stake\smash{\raisebox{\@imagevoffset}{\my@graphic}}% + \stake\smash{\raisebox{\@imagevoffset}{\@mygraphic}}% }% end IfBooleanTF{#1} \iftoggle{@inheadfoot}{}{\setlength\imagehoffset{\@imagehoffset}}% \iftoggle{@inheadfoot}{}{\setlength\imagevoffset{\@imagevoffset}}% -} % end DeclareDocumentCommand \InlineImage -\ExplSyntaxOff -% + \global\@UsingNovelCommandfalse% +} % +% end Inline Image %% -%% RE-DEFINED in V. 1.46. Now must be placed within linegap environment. -%% \BlockImage[alignment]{image}[text] -% Alignment may have up to 3 comma-separated values. Default is [c] -% First alignment: l, c, r (left, center, right). -% Second alignment: x-offset of image (not text). Default 0pt. May use 0. -% Third alignment: y-offset of image (not text). Default 0pt. May use 0. -% Offsets are positive right and up. -% The optional text, if used, must have its opening bracket immediately -% follow the image closing brace, without intervening space. -% Text may have line break or more than one paragraph, and may be styled. -% But any font family change must go outside this command, not within the text. -% The text will begin in the same block of vertical space as the image. -% If image is centered, the text will automatically be centered, so that -% it necessarily overlies the image. -% \forceindent or \backindent may be needed. Text may have several paragraphs. -% Beware of using this command near bottom of page. -% Use linegap environment to clear both image and accompanying text. -% To displace accompanying text, begin it with \vspace*{length}\par. -% Use adjustwidth environment between linegap and BlockImage centered, -% if you have accompanying text that you wish to confine in width. -\ExplSyntaxOn -\DeclareDocumentCommand \BlockImage { O{c} m +O{} }{ + +%% FLOAT IMAGE +%% ---------------------------------------------------------------------------- +%% New in v.1.50. \FloatImage. Centered unless offset. +% \FloatImage[floatmethod,xoffset,yoffset]{yourimagename.png} % or jpg +% This is a substitute for other floats. Does not require `float' package. +% Default: [ht,0pt,\nfs]. +% Method ht attempts to place the image where the code is written. But if it +% doesn't fit on that page, it will float to the top of the next page. +% Method b attempts to place the image on the bottom of the page where the +% code is written. If not, it floats to the bottom of the next page. +% Allowed float methods: ht hb t b. Equivalent to LaTeX floats with !. +% Parsing the optional argument: comma-separated values, ignoring space. +% May be empty before or between commas. +% Example: [,,2em] is read as default method, xoffset 0pt, yoffset 2em. +% Example: [b] is valid, because a single value is read as method. +\providecommand*\floatlocation[2]{\@namedef{fps@#1}{#2}} +\floatlocation{figure}{!ht} % default +\gdef\ftype@figure{1} % mystery TeX code +\DeclareDocumentCommand \FloatImage { s O{ht} m } {% starred not in use \iftoggle{@inheadfoot}{% - \ClassError{novel}{Cannot~use~BlockImage~in~header~or~footer}% - {Header~footer~allow~InlineImage~but~not~BlockImage.}% + \ClassError{novel}{Cannot use \string\FloatImage\space in header/footer}% + {Header footer allow \string\InlineImage, but not \string\FloatImage.}% }{}% - \@imgExtOKfalse% - \IfEndWith{#2}{png}{\@imgExtOKtrue}{}% - \IfEndWith{#2}{PNG}{\@imgExtOKtrue}{}% - \IfEndWith{#2}{jpg}{\@imgExtOKtrue}{}% - \IfEndWith{#2}{JPG}{\@imgExtOKtrue}{}% - \IfEndWith{#2}{jpeg}{\@imgExtOKtrue}{}% - \IfEndWith{#2}{JPEG}{\@imgExtOKtrue}{}% - \if@imgExtOK\else% - \ClassError{novel}{^^JImage~`#2'~format~not~allowed,~page~\thepage}% - {^^JImage~`#2'~has~file~type~not~allowed~in~`novel'~class.^^J% - Must~have~file~extension~png,~jpg,~jpeg,~(or~capitalized).^^J% - Others~such~as~bmp,~tiff,~pdf,~eps,~svg~are~not~allowed.^^J}% - \fi% - % Allows empty or blank to be used, and still provide default values: - \ifthenelse{\equal{#1}{} \OR \equal{#1}{\space}}{% - \def\@myargs{c}}{\def\@myargs{#1}% - } - \StrDel{\@myargs}{\space}[\@myargsns] % needs {\space} not { } - \StrCut{\@myargsns}{,}{\@myalign}{\@mycoord} - \StrCut{\@mycoord}{,}{\@myxt}{\@myyt} - \ifthenelse{\equal{\@myxt}{}\OR\equal{\@myxt}{0}}{% - \def\@myx{0pt}}{\def\@myx{\@myxt}% - } - \ifthenelse{\equal{\@myyt}{}\OR\equal{\@myyt}{0}}{% - \def\@myy{0pt}}{\def\@myy{\@myyt}% - } - % - \gdef\my@graphic{\novel@includegraphics[draft=false]{#2}}% - \setlength\@imagewidth{\widthof{\my@graphic}}% - \global\@imagewidth=\@imagewidth% - \setlength\@imageheight{\heightof{\my@graphic}}% - \global\@imageheight=\@imageheight% - \setlength\@imagehoffset{\@myx}% - \IfBeginWith{\@myy}{b}{% - \ClassError{novel}{Cannot~use~voffset~`b'~in~\stringBlockImage,~page~\thepage}% - {The~`b'~voffset~only~works~with~\string\InlineImage\space,~not~\string\BlockImage.} + \@TestImageExtension{#3}% + % Sadly, parsing with `xstring' involves roundabout code: + \StrDel{#2}{\space}[\@tempArgs]% + \StrCut{\@tempArgs}{,}{\@tempArgA}{\@tempArgX}% + \StrCut{\@tempArgX}{,}{\@tempArgB}{\@tempArgC}% + \ifthenelse{\equal{\@tempArgA}{}}{% + \def\@tempArgAa{ht}% }{% - \setlength\@imagevoffset{-\@imageheight}% - \addtolength\@imagevoffset{\@myy}% + \def\@tempArgAa{\@tempArgA}% }% - % - \setlength\@mytotalht{0pt}% - \addtolength\@mytotalht{\@imageheight}% - \addtolength\@mytotalht{-\@myy}% - \addtolength\@mytotalht{1em}% - \def\@mytotalhtnum{\strip@pt\@mytotalht}% - \FPdiv{\@mytotalhtnum}{\@mytotalhtnum}{\nbsnum}% - \FPadd{\@mytotalhtnum}{\@mytotalhtnum}{0.5}% - \FPround{\@mytotalhtnum}{\@mytotalhtnum}{0}% - % - \begin{linegap}{\@mytotalhtnum}% - % - \ifthenelse{\equal{\@myalign}{c}\OR\equal{\@myalign}{}}{% + \ifthenelse{\equal{\@tempArgB}{0}\OR\equal{\@tempArgB}{}}{% + \def\@tempArgBb{0pt}% + }{% + \def\@tempArgBb{\@tempArgB}% + }% + \ifthenelse{\equal{\@tempArgC}{0}\OR\equal{\@tempArgC}{}}{% + \def\@tempArgCc{0pt}% + }{% + \def\@tempArgCc{\@tempArgC}% + }% + \StrDel{\@tempArgAa}{!}[\@tempArgAa]% + \@tempTFfalse% + \ifthenelse{\equal{\@tempArgAa}{ht}}{\@tempTFtrue}{}% + \ifthenelse{\equal{\@tempArgAa}{hb}}{\@tempTFtrue}{}% + \ifthenelse{\equal{\@tempArgAa}{t}}{\@tempTFtrue}{}% + \ifthenelse{\equal{\@tempArgAa}{b}}{\@tempTFtrue}{}% + \if@tempTF\else% + \ClassWarning{novel}{Incorrect position for \string\FloatImage, ^^J% + page \thepage. Default position ht substituted.}% + \fi% + \floatlocation{figure}{!\@tempArgAa}% enable current float method + %\vfil% One l. + \@float{figure}% + \@FloatImage{\@tempArgBb}{\@tempArgCc}{#3}% + \end@float\par% + \floatlocation{figure}{!ht}% restore default float method + \null% + \vspace{-\nbs}% + \vspace{\@NovelCaulk}% +} % +% +\DeclareDocumentCommand \@FloatImage { m m m }{% DO NOT CALL DIRECTLY + \global\@UsingNovelCommandtrue% + \gdef\@mygraphic{\novel@sub@inclgr[scale=\@TMratio]{#3}}% + \gdef\@mygraphicname{#3}% + \gsetlength\@imagewidth{\widthof{\@mygraphic}}% + \gsetlength\@imageheight{\heightof{\@mygraphic}}% + \setlength\@imagehoffset{#1}% + \setlength\@imagevoffset{#2-\@imageheight+\normalXheight}% + \setlength\@mytotalht{\@imageheight+0.3\nbs}% + \FPdiv{\@mytotalhtN}{\strip@pt\@mytotalht}{\strip@pt\nbs}% + \FPadd{\@mytotalhtN}{\@mytotalhtN}{0.5}% round upward + \FPround{\@mytotalhtN}{\@mytotalhtN}{0}% to integer + \FPmin{\@allowmyoverflow}{\@mytotalhtN}{\@LinesPerPage}% not exceeding lpp + % If a full-page image is too tall for a page, standard TeX float will + % delay it until the time that floats are cleared, typically by \clearpage. + % That would probably be at the end of a chapter. + % In `novel' this behaivor is hacked. Regardless of the image's actual + % height, it is treated as if its height does not exceed whatever will + % fit on a single page. Then, a full-page float will appear at the first + % opportunity, rather than being delayed. As a consquence, an oversized + % full-page float may overflow into the footer or bottom margin. + % To fix that (if it matters), you need to edit the image in graphics. + \begin{linegap}{\@allowmyoverflow}% + \vspace*{-\nfs}% + \null% {\centering% \makebox[0pt][l]{% - \hspace{\dimexpr\@myx-0.5\@imagewidth}% - \stake\smash{\raisebox{\dimexpr\@myy-\@imageheight}{\my@graphic}}% + \hspace{\dimexpr\@imagehoffset-0.5\@imagewidth}% + \stake\smash{\raisebox{\@imagevoffset}{\@mygraphic}}% }% - \par}% - \vspace*{-\nbs}% - {\centering #3\par}% - }{}% - \ifthenelse{\equal{\@myalign}{r}}{% - \noindent\makebox[0pt][l]{% - \hspace{\dimexpr\textwidth+\@myx-\@imagewidth}% - \stake\smash{\raisebox{\dimexpr\@myy-\@imageheight}{\my@graphic}}% - }\par% - \vspace{-2\nbs}% - \begin{adjustwidth}{0pt}{\@imagewidth+\parindent}% - \strut\par #3\par% - \end{adjustwidth}% - }{}% - \ifthenelse{\equal{\@myalign}{l}}{% - \noindent\makebox[0pt][l]{% - \hspace{\@myx}% - \stake\smash{\raisebox{\dimexpr\@myy-\@imageheight}{\my@graphic}}% - }\par% - \vspace{-2\nbs}% - \begin{adjustwidth}{\@imagewidth+\parindent}{0pt}% - \strut\par #3\par% - \end{adjustwidth}% - }{}% + \par% + }% \end{linegap}% -} % end \BlockImage -\ExplSyntaxOff + \global\@UsingNovelCommandfalse% +} % +% end Float Image %% +%% WRAP IMAGE +%% New in v. 1.50. Wraps text around an image, with limited float support. +% This is a shim to `wrapfig' package. Since `novel' uses its own method for +% placing images, environments defined in `wrapfig' cannot be used directly. +% \WrapImage[position]{image} % default position r +% Optional position is same as with `wrapfig': +% l r o i places image "exactly here", left, right, outside, inside. +% L R O I allows image to float. +% Since novel's \InlineImage normally can be over-written by following text, +% it needs an accompanying \rule to act as a strut. +% +\RequirePackage{wrapfig} +% +\DeclareDocumentCommand\WrapImage { O{r} m } {% + \begin{wrapfloat}{figure}{#1}{0pt}% + \InlineImage[0pt,\normalXheight]{#2}% + \rule[\dimexpr\normalXheight-\imageheight]{0pt}% + {\dimexpr\imageheight-\normalXheight+0.3\nfs}% + \end{wrapfloat}% +}% +\LetLtxMacro\wrapimage\WrapImage\relax +% end Wrap Image. +%% + + + + + +%% +\endinput %% %% End of file `novel-Images.sty'. diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-JC200103.clo b/Master/texmf-dist/tex/lualatex/novel/novel-JC200103.clo index 20f0ab0b1a3..578f883adb8 100644 --- a/Master/texmf-dist/tex/lualatex/novel/novel-JC200103.clo +++ b/Master/texmf-dist/tex/lualatex/novel/novel-JC200103.clo @@ -1,14 +1,27 @@ -% Typically used in Japan. Novel file version 1.46.2 +%% +%% This is file `novel-JC200103.clo', part of `novel' document class. +%% The values of the arguments are public industry standards. +\ProvidesFile{novel-JC200103.clo}% +[2018/01/14 any version. (novel Output Intent JC200103)] +%% -% The values of the arguments are public industry standards. + +% Typically used in Japan. % Remember: TeX special characters must be backslashed here. % You may see % or # or _ in the data or file names. % Be sure that they are written as \% \# \_ or there will be trouble. +% If any line is long, let it wrap. Do not attempt to break it onto multiple lines. + \gdef\@OIidentifier{JC200103} % also called "reference name" \gdef\@OIcondition{Japan Color 2001 Coated: Printing process definition: ISO 12647-2:2004, sheet-fed offset printing, positive plates, paper type 3 (coated, 105 gsm), screen frequency 69/cm.} \gdef\@OIinfo{Japan Color 2001 Coated} \gdef\@OIregistry{http://www.color.org} \gdef\@OIprofile{JapanColor2001Coated.icc} +%% +\endinput +%% +%% end of file `novel-JC200103.clo' + diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-LayoutSettings.sty b/Master/texmf-dist/tex/lualatex/novel/novel-LayoutSettings.sty index dc4d3d2cb52..d4f1e09bac6 100644 --- a/Master/texmf-dist/tex/lualatex/novel/novel-LayoutSettings.sty +++ b/Master/texmf-dist/tex/lualatex/novel/novel-LayoutSettings.sty @@ -1,6 +1,6 @@ %% -%% This is file `novel-LayoutSettings.sty', part of class `novel'. -%% Copyright 2017 Robert Allgeyer. +%% This is file `novel-LayoutSettings.sty', part of `novel' document class. +%% Copyright 2017-2018 Robert Allgeyer. %% %% %% This file may be distributed and/or modified under the @@ -13,427 +13,208 @@ %% %% \ProvidesFile{novel-LayoutSettings.sty}% -[2018/01/14 v1.46.2 LaTeX file (layout settings)] +[2018/03/28 v1.50 LaTeX file (layout settings)] %% %% Note that nearly all layout settings are pre-configured based on Trim Size. %% In general, these user commands may be used to over-ride the presets. -\newlength\Old@TrimWidth % finished width of printed book -\newlength\Old@TrimHeight % finished height of printed book -\newlength\New@TrimWidth % Initialized to \Old@TrimWidth. -\newlength\New@TrimHeight % Initialized to \Old@TrimHeight. -\newlength\Old@TopMargin -\newlength\Old@OutsideMargin -\newlength\Old@BottomMargin -\newlength\Old@InsideMargin -\newlength\New@TopMargin -\newlength\New@OutsideMargin -\newlength\New@BottomMargin -\newlength\New@InsideMargin -\newlength\Old@MediaWidth % Defaults to trim width, but can be set larger. -\newlength\Old@MediaHeight % Defaults to trim height, but can be set larger. -\newlength\New@MediaWidth % Initialized to \Old@MediaWidth. -\newlength\New@MediaHeight % Initialized to \Old@MediaHeight. -\newlength\Old@FontSize -% -\gdef\my@HeadFootStyle{1} % default: header but not footer -\gdef\my@VersoEmblem{} % no default emblem -\gdef\my@RectoEmblem{} % no default emblem -\gdef\novel@checkfeatures#1{} % re-defined below -% -\newif \if@TrimSizeSet -\newif \if@MarginsSet -\newif \if@MediaSizeSet -\newif \if@LinesPerPageSet -\newif \if@FontSizeSet -\newif \if@ReworkTrimSet -\newif \if@ReworkMarginsSet -% -\newlength\normalxheight -\newlength\normalXheight -\newlength\normalscxheight -\newlength\normalAringheight -\newlength\normaldescender -%% %% SIZE-RELATED COMMANDS AVAILABLE IN PREAMBLE. -%% -------------------------------------------------------------------------- +%% ---------------------------------------------------------------------------- %% Use if necessary for customization. %% If you like a class option that pre-sets these values, -%% then you do not have to use any of these commands. +%% then you do not have to use any of these commands. % % Note: This class does not ask you to set the width/height of the textblock. -% Instead, these values are automatically calculated from other dimensions. -% -% \SetTrimSize{}{} width and height of printed book. -\newcommand\SetTrimSize[2]{% - \global\@TrimSizeSettrue - \ifthenelse{\dimtest{#1}{<}{2.99in}}{ - \ClassError{novel}{Unacceptably small Trim Width}% - {Trim Width must be at least 3in.}% - }{} - \ifthenelse{\dimtest{#2}{<}{2.99in}}{ - \ClassError{novel}{Unacceptably small Trim Height}% - {Trim Height must be at least 3in.}% - }{} - \if@ReworkTrimSet - \ClassError{novel}{^^JCannot set Trim after reworking Trim or Margins}% - {\string\SetTrimSize\space cannot follow \string\ReworkTrimSize.}% - \fi - \if@ReworkMarginsSet - \ClassError{novel}{^^JCannot set Trim after reworking Trim or Margins}% - {\string\SetTrimSize\space cannot follow \string\ReworkTrimSize^^J% - and cannot follow \string\ReworkMargins.}% - \fi - \setlength\Old@TrimWidth{#1}% - \setlength\Old@TrimHeight{#2}% - \setlength\New@TrimWidth{#1}% - \setlength\New@TrimHeight{#2}% - \if@MediaSizeSet\else - \setlength\Old@MediaWidth{#1}% - \setlength\Old@MediaHeight{#2}% - \setlength\New@MediaWidth{#1}% - \setlength\New@MediaHeight{#2}% - \fi -} -% -\newcommand\ReworkTrimSize[2]{% DEPRECATED. Works, but removed from docs. - \if@coverart % - \ClassError{novel}{Rework command cannot be used with coverart option}% - {Instead of reworking document size, you must re-do the artwork.} - \else - \global\@ReworkTrimSettrue - \setlength\New@TrimWidth{#1}% - \setlength\New@TrimHeight{#2}% - \setlength\New@MediaWidth{#1}% - \setlength\New@MediaHeight{#2}% - \typeout{^^J Class `novel' Info: % - Used \string\ReworkTrimSize{}{} command.^^J% - Carefully review your PDF to ensure that line breaks, paragraphs,^^J% - and page breaks are where you expect them to be.^^J}% - \fi -} +% Instead, these values are automatically calculated from other dimensions. + + +%% Trim Size is the finished width and height of the book (not thickness). +% Books are (usually) manufactured to a small number of standard Trim Sizes. +% The available choice of sizes will depend on your print service, +% and may by limited by binding method, paper, or distribution channels. +% These are NOT the usual TeX "paper size" choices, such as A4 or letterpaper. +% In the U.S.A., 5.5in W x 8.5in H is very common for softcover fiction, +% so it will (later) be set as default, unless you set your own. +\newif \if@SetTrimSize % true if \SetTrimSize rather than defaults. +\newlength\@TrimWidth +\newlength\@TrimHeight +\newcommand\SetTrimSize[2]{% width, height + \global\@SetTrimSizetrue + \gsetlength\@TrimWidth{#1} + \gsetlength\@TrimHeight{#2} +}% end set trimsize +%% + + +%% Margins are measured from Trim Size inwards, always positive. +% If the Media Size is larger than Trim Size, then the area beyond +% the Trim Size is NOT margins. It is discarded scrap paper. +% However, word processors (in general) do not understand the difference +% between Trim Size and Media Size. So, if you are ever asked to +% lay out the book in a word processor, using a standard (A4 or letter) +% physical paper size, then you will be asked to set the "margins" +% very wide, because the word processor margins include both +% the finished book margins, and the discarded scrap paper. +% In certain circumstances, text or images may intrude into the margin area. +% This is not always an error, because it may be intentional. % Margins at top and bottom are relative to: % top of header, or top of textblock if no header; % bottom of footer, or bottom of textblock if no footer. -% Inside margin generally greater than outside, due to gutter. +% Inner margin generally greater than Outer, due to gutter. % Standard margins command ("TOBI, or not TOBI, that is the question."): -\newcommand\SetMargins[4]{ % top, outside, bottom, inside - \global\@MarginsSettrue - \if@ReworkMarginsSet - \ClassError{novel}{^^JCannot set Margins after reworking them}% - {\string\SetMargins\space cannot follow \string\ReworkMargins.}% - \fi - \setlength\Old@TopMargin{#1} - \setlength\New@TopMargin{#1} - \setlength\Old@OutsideMargin{#2} - \setlength\New@OutsideMargin{#2} - \setlength\Old@BottomMargin{#3} - \setlength\New@BottomMargin{#3} - \setlength\Old@InsideMargin{#4} - \setlength\New@InsideMargin{#4} -} -\newcommand\ReworkMargins[4]{ % DEPRECATED. Works, but removed from docs. - \if@coverart % New in version 1.2 - \ClassError{novel}{Rework command cannot be used with coverart option}% - {Instead of reworking document size, you must re-do the artwork.} - \else - \global\@ReworkMarginsSettrue - \setlength\New@TopMargin{#1} - \setlength\New@OutsideMargin{#2} - \setlength\New@BottomMargin{#3} - \setlength\New@InsideMargin{#4} - \typeout{^^J Class novel Info: % - Used \string\ReworkMargins{}{} command.^^J% - Carefully review your PDF to ensure that line breaks, paragraphs,^^J% - and page breaks are where you expect them to be.^^J}% - \fi -} -% \SetMediaSize[]{}{} such as {8.5in}{11in}. -% This command is only used when the Trim Size must be placed in a larger -% Media Size. Otherwise, Media Size is automatically set to Trim Size. -% This command cannot be used until after Trim Size is set, either by -% class option or by \SetTrimSize{}{}. -% Trim will be horizontally and vertically centered in media. -% No `rework' is needed for Media Size, because interior layout is relative -% to Trim Size, not Media Size. -% -\newif \if@offcenterTrim \@offcenterTrimfalse -\newcommand\SetMediaSize[3][center]{ % [alignment] width, height - \ifthenelse{\equal{#1}{center} \OR \equal{#1}{edge}}{ - \global\@MediaSizeSettrue - \setlength\Old@MediaWidth{#2} - \setlength\New@MediaWidth{#2} - \setlength\Old@MediaHeight{#3} - \setlength\New@MediaHeight{#3} - }{ - \ClassError{novel}{Bad optional argument for \string\SetMediaSize}% - {\string\SetMediaSize\space optional argument must be `center' or `edge'.}% - } - \if@coverart\else % new in version 1.2 - \ifthenelse{\equal{#1}{edge}}{\global\@offcenterTrimtrue}{} - \fi -} -% \SetLinesPerPage{} limited due to fontsize and Trim Size constraints. -% There is no `rework' command, because as long as the number of lines fit, -% the line spacing will be automatically changed to fit a reworked size. -% The only possible problem is if lines were originally so tight that -% a reworked size cannot fit. In that case, the user's best plan is remove -% header or footer (if possible), or reduce vertical margins (if possible). -\newcommand\SetLinesPerPage[1]{ - \global\@LinesPerPageSettrue - \FPiflt{#1}{1}% - \ClassError{novel}{\string\SetLinesPerPage\ must be at least 1}% - {You requested less than one line per page. Naughty!^^J}% - \else\fi % - \FPround{\temp@IntegerLines}{#1}{0} - \def\my@LinesPerPage{\temp@IntegerLines} -} -% \SetFontSize{} may be in any units, even decimals: 12.2pt, 11.5bp, etc. -% When packages load, the font size is temporarily set to 11pt at 15pt skip, -% so that moldy-oldie packages don't get confused about metrics. -% Then the size is changed to its actual value based on this command, or on -% the defaults for Trim Size, or on the effects of \Rework. -\newcommand\SetFontSize[1]{ - \global\@FontSizeSettrue - \global\setlength\Old@FontSize{#1} -} -% -%% End size-related commands available in Preamble. - - - -%% RESERVE SPACE FOR HEADER/FOOTER, AND SET DEFAULT CHAPTER DISPLAY PAGE -%% -------------------------------------------------------------------------- -%% At this point, `novel' needs to know whether or not header/footer used, -%% so that space can be reserved at top/bottom. Actual styling comes later. -% -% If the user wishes to tweak layout, these Preamble commands store info, -% that will be used in novel-CalculateLayout.sty. -% The jumps are scale factors, which increase/decrease headsep and footskip -% relative to normal baselineskip. Do not use \setlength\headsep or -% \setlength\footskip directly, because direct settings will lead to -% improper calculations. -% These "jumps" are measured baseline-to-baseline. So, \SetHeadJump{1} means -% that the baseline of the header is 1 baselineskip above the baseline of -% the first line of textblock. In other words, on-grid. Value 2 would be -% equivalent to double-spaced vertically. A value of 1.5 is default, based -% on observations of actual novels. -% If \SetHeadJump is less than 1, then a warning appears in the log. -\gdef\SetHeadJump#1{\gdef\@headjump{#1}} -\SetHeadJump{1.5} % default -\gdef\SetFootJump#1{\gdef\@footjump{#1}} -\SetFootJump{1.5} % default -% New in version 1.2, coverart. -\if@coverart % cover art has no header or footer - \gdef\SetHeadFootStyle#1{\gdef\my@HeadFootStyle{0}} - \gdef\SetHeadStyle#1{\gdef\my@HeadFootStyle{0}} % deprecated - \SetHeadFootStyle{0} -\else - % See docs for available layout choices: - \gdef\SetHeadFootStyle#1{\gdef\my@HeadFootStyle{#1}} - \gdef\SetHeadStyle#1{\gdef\my@HeadFootStyle{#1}} % deprecated -\fi -% See docs for what these emblems do, if used: -\newcommand\SetEmblems[2]{ % verso, recto - \gdef\my@VersoEmblem{{\headfont #1}} - \gdef\my@RectoEmblem{{\headfont #2}} -} -\let\SetEmblem\SetEmblems% for convenience -% If you want something fancier than \thepage: -\gdef\SetPageNumberStyle#1{\gdef\pagenumberstyle{{\addfontfeature{Letters=ResetAll}#1}}} - -% See novel.cls for the accompanying AtBeginDocument routine. - -% -\newif \if@gotHeader -\newif \if@gotFooter -\newif \if@styledHeader -\newif \if@styledFooter -\newif \if@validHF -% -\gdef\@reserveHFspace{ % used for layout calculations - \ifthenelse{\equal{\my@HeadFootStyle}{0}}{ - \@gotHeaderfalse\@gotFooterfalse\@validHFtrue - }{} - \ifthenelse{\equal{\my@HeadFootStyle}{1}}{ % default - \@gotHeadertrue\@gotFooterfalse\@validHFtrue - }{} - \ifthenelse{\equal{\my@HeadFootStyle}{2}}{ - \@gotHeaderfalse\@gotFootertrue\@validHFtrue - }{} - \ifthenelse{\equal{\my@HeadFootStyle}{3}}{ - \@gotHeaderfalse\@gotFootertrue\@validHFtrue - }{} - \ifthenelse{\equal{\my@HeadFootStyle}{4}}{ - \@gotHeadertrue\@gotFooterfalse\@validHFtrue - }{} - \ifthenelse{\equal{\my@HeadFootStyle}{5}}{ - \@gotHeadertrue\@gotFootertrue\@validHFtrue - }{} - \ifthenelse{\equal{\my@HeadFootStyle}{6}}{ - \@gotHeadertrue\@gotFootertrue\@validHFtrue - }{} - % Ensure that user choice was on the allowed list: - \if@validHF\else - \ClassError{novel}{Invalid choice for \string\SetHeadFootStyle}% - {\string\SetHeadFootStyle\space needs choice of 0,1,2,3,4,5,6,^^J% - even if you wish to customize using fancyhdr syntax.^^J}% - \fi -} % end \@reserveHFspace -% Each new chapter generally has its own header/footer style. This allows a -% default setting when chapters begin with ChapterStart environment: -\gdef\SetChapterStartStyle#1{\gdef\@setchapterstart{#1}} % from v1.40.3. -\let\SetChapterStart\SetChapterStartStyle\relax % deprecated from v1.40.3. -\SetChapterStartStyle{footer} % default -% New in version 1.40.2: -\gdef\SetChapterStartHeight#1{% - \FPifint{#1}\else% - \ClassError{novel}{\string\SetChapterStartHeight\space must be integer GTE 4}% - {Height of ChapterStart must be integer, greater than or equal to 4}% - \fi% - \FPiflt{#1}{4}% - \ClassError{novel}{\string\SetChapterStartHeight\space must be integer GTE 4}% - {Height of ChapterStart must be integer, greater than or equal to 4}% - \else\fi% - \gdef\@setchapterstartheight{#1}% -} -\SetChapterStartHeight{10} % default -% See novel.cls for the accompanying AtBeginDocument routine. -% Scene breaks: -\newif\if@indentAfterScenebreak \@indentAfterScenebreakfalse -\newcommand\IndentAfterScenebreak{\@indentAfterScenebreaktrue} % deprected from v. 1.40.3 -% \SetScenebreakIndent controls whether line after \scenebreak, \sceneline, or \scenestars -% will be indented. Set true or false, default false. -\newcommand\SetScenebreakIndent[1]{% true or false, default false. From v. 1.40.3 - \def\ngoodarg{no} - \ifthenelse{\equal{#1}{true}}{% - \def\ngoodarg{yes} - \@indentAfterScenebreaktrue - }{}% - \ifthenelse{\equal{#1}{false}}{% - \def\ngoodarg{yes} - \@indentAfterScenebreakfalse - }{}% - \ifthenelse{\equal{\ngoodarg}{no}}{% - \ClassError{novel}{Bad argument for \string\SetScenebreakIndent\space}% - {\string\SetScenebreakIndent\space argument must be true or false.}% - }{}% -} -\SetScenebreakIndent{false} % default -% -%% End reserve space for header/footer and set default ChapterStart - - -%% New in version 1.2: cover image. -\newcommand\SetCoverImage[1]{ - \def\coverimageok{false} - \IfSubStr{#1}{jpg}{\def\coverimageok{true}}{} - \IfSubStr{#1}{jpeg}{\def\coverimageok{true}}{} - \IfSubStr{#1}{JPG}{\def\coverimageok{true}}{} - \IfSubStr{#1}{JPEG}{\def\coverimageok{true}}{} - \ifthenelse{\equal{\coverimageok}{true}}{% - \gdef\novelcoverimage{#1} - }{% - \ClassError{novel}{Cover image has wrong file extension}% - {Cover image must be jpg, JPG, jpeg, or JPEG.} - }% -} +\newif \if@SetMargins % true if \SetMargins rather than defaults. +\newlength\@TopMargin +\newlength\@OuterMargin +\newlength\@BottomMargin +\newlength\@InnerMargin +\newcommand\SetMargins[4]{ % top, outer, bottom, inner + \global\@SetMarginstrue + \gsetlength\@TopMargin{#1} + \gsetlength\@OuterMargin{#2} + \gsetlength\@BottomMargin{#3} + \gsetlength\@InnerMargin{#4} +}% end set margins +\LetLtxMacro\SetMargin{\SetMargins}\relax % for those who mis-type %% -%% New in version 1.44: flexible images (without built-in resolution dpi) -\gdef\@novimgres{300} % default (can only be set once) -\gdef\@novereserror{% - \ClassError{novel}{\string\SetFlexResolution\space bad value}% - {Resolution must be integer from 200 to 9600. Default 300.}% -} -\newcommand\SetFlexResolution[1]{ - \IfInteger{#1}{ % - \FPiflt{#1}{200}\@novereserror\else\fi % - \FPifgt{#1}{9600}\@novereserror\else\fi % - \gdef\@novimgres{#1} % - }{\@novreserror} -} -% +%% New in version 1.50: Unsafe Zone (opposite of "safe area"). +% This feature only applies with class options `draft,shademargins' +% and does NOT apply in `coverart'. +% The purpose of margins is to confine the main text (and header/footer). +% In `novel' (unlike most other TeX document classes) there is no provision +% for marginal notes, because they are not used in popular fiction. +% Yet there may be circumstances where you intentionally or accidentally +% have text, or part of an image, placed or overflowing into a margin. +% In PDF, even PDF/X, that is not a problem. It cannot read your mind. +% However, every print service specifies a "safe area." All text, and +% all images without bleed, must remain within the safe area. +% The limits of the safe area are typically 0.125in to 0.5in inside the +% Trim Size, depending on technology. This defines how close you may +% place anything near the page edges. +% In `novel' the opposite of the safe area is the "unsafe zone" (UZ). +% So, the UZ lies just inside the perimeter of the Trim Size. +% Each margin is at least as wide as its corresponding UZ. +% Some print services use "minimum margin" to mean the UZ. +% When you are in draft mode with `shademargins' class option, +% the UZ (if it is set) will be displayed in dark gray. +% Then, you can inspect the PDF for any intrusion into the UZ. +% If you intrude into the UZ, there is no warning or error. +% The UZ is strictly for visualization. There is no default setting. +% If you do not set the UZ yourself, then no UZ will be displayed. +% In any case, the final PDF is unaffected. +\newif \if@UnsafeZone % true if \SetUnsafeZone used +\newlength\@TopUZWidth +\newlength\@OuterUZWidth +\newlength\@BottomUZWidth +\newlength\@InnerUZWidth +\newcommand\SetUnsafeZone[4]{% top, outer, bottom, inner. + \global\@UnsafeZonetrue + \gsetlength\@TopUZWidth{#1} + \gsetlength\@OuterUZWidth{#2} + \gsetlength\@BottomUZWidth{#3} + \gsetlength\@InnerUZWidth{#4} +} % end \SetUnsafeZone +\LetLtxMacro\SetUnsafeZones{\SetUnsafeZone}\relax % for those who mis-type +%% -%% Markers (superscript, subscripts): -\newtoggle{@usesymbolmark} % true when footnote markers are symbolic -\newtoggle{@realmarker} % true when OT features sups, sinf, subs requested -% -% \SetMarkerStyle does two things. -% Option real: OT features sups, sinf, subs requested. Fake if not available. -% Option fake: Always fake OT features sups, sinf, subs. -% Mandatory: asterisk, dagger, number. Pertains to footnote markers only. -% No matter real or fake, the asterisk symbol is always real, and the -% dagger, dbldagger, and section (when used as footnote markers) -% are always partially faked. -\newcommand\SetMarkerStyle[2][real]{ - \def\@goodfnm{no} - \ifthenelse{\equal{#2}{asterisk}}{% - \def\@goodfnm{yes}\global\toggletrue{@usesymbolmark}% - \gdef\@myfnsymbols{*}}{} - \ifthenelse{\equal{#2}{dagger}}{% - \def\@goodfnm{yes}\global\toggletrue{@usesymbolmark}% - \gdef\@myfnsymbols{†}}{} - \ifthenelse{\equal{#2}{number}}{% - \def\@goodfnm{yes}\global\togglefalse{@usesymbolmark}}{} - \def\@goodfnk{no} - \ifthenelse{\equal{#1}{real}\OR\equal{#1}{}}{% - \def\@goodfnk{yes}\global\toggletrue{@realmarker}}{} - \ifthenelse{\equal{#1}{fake}}{% - \def\@goodfnk{yes}\global\togglefalse{@realmarker}}{} - \ifthenelse{\equal{\@goodfnm}{no}\OR\equal{\@goodfnk}{no}}{% - \ClassError{novel}{Bad choice for \string\SetMarkers}% - {Optional: real, fake. Required: asterisk, dagger, number.}% - }{} -} -\LetLtxMacro{\SetMarkers}{\SetMarkerStyle} % backwards compatibilty pre-v1.40.3. -% -\SetMarkerStyle[real]{asterisk} % default +% PDF Media Size is already known to TeX as \paperwidth and \paperheight. +% For this reason, there is no need to define additional lengths. +% Sheet-fed printers use a small number of standard paper sizes. +% Whether you use P.O.D. or print at home or office, your print job will +% almost certainly be sheet-fed. After printing, the sheet is trimmed +% to the specified Trim Size. Note that the sheet sizes used in +% commercial printing are specialized for the purpose, and may be +% different from the routine A4 and USletter sizes familiar to you. +% In most cases (except for cover artwork), your PDF Media Size will be +% exactly the same as the finished Trim Size. Placement of the Trim Size +% onto a larger sheet of paper is done automatically at the print service, +% a procedure known as "imposition." Several small Trim Sizes may be +% printed onto a single sheet, in order to waste less paper in trimming. +% In a few cases, the print service will ask you to provide a PDF that has +% the Trim Size centered H/V within a larger Media Size. +% Sometimes (especially for cover artwork), that's because you are +% doing the imposition yourself. In other cases (especially for interiors) +% it is because most of the files seen at the print service came from +% word processors, where the writers (not knowing better) created layouts +% on A4 or USletter with large "margins," rather than correct Trim Size. +% Then, if you submit a file at actual Trim Size, it looks wrong, +% not because it is wrong, but because it stands out from the crowd. +% You may use \SetMediaSize to deal with this situation. +% You do not need \SetMediaSize, if (as usual) it is identical to TrimSize. +% Changing the Media Size does not affect Trim Size or internal page layout. +% Class options `cropview' and `closecrop' (only in draft mode) +% affect Media Size. See their descriptions below. +% +% \SetMediaSize[<obsolete option>]{width}{height} usage: +% The optional argument is obsolete. Anything there will be ignored. +\newif \if@MediaSize % true if \SetMediaSize rather than default = Trim Size. +\DeclareDocumentCommand\SetMediaSize { O{} m m } {% width, height + \@MediaSizetrue + \gsetlength\paperwidth{#2} + \gsetlength\paperheight{#3} +}% end \SetMediaSize %% -%% Sets the gap between cropmarks and trim area: -\newlength\@mygap -\def\SetCropmarkGap#1{ - \ifthenelse{\lengthtest{#1 < 0pt}}{ - \setlength\@mygap{0pt} - }{ - \setlength\@mygap{#1} +%% Lines Per Page refers to the main textblock, not including header or footer. +% If you do not set it, a suitable default will be based on other settings. +% The number of lines is contrained by Trim Height, Margins, and normal em. +% This is because the minimum \baselineskip must be 1.2x normal em size, +% to avoid crowding of the text and variable line heights. +% The check for constraint is done in file novel-CalculateLayout.sty. +% The same check also verifies that the number is an integer >=10. +\newif \if@LinesPerPage % true if \SetLinesPerPage rather than default. +\newcommand\SetLinesPerPage[1]{ + \IfInteger{#1}{}{% + \ClassError{novel}{\string\SetLinesPerPage\space must be integer >=10}% + {Do not write period, comma, or space within \string\SetLinesPerPage.}% } -} -\SetCropmarkGap{0.125in} % default + \FPiflt{#1}{10} + \ClassError{novel}{\string\SetLinesPerPage\ must be at least 10}% + {LinesPerPage were set or calculated at less than 10.}% + \fi + \global\@LinesPerPagetrue + \gdef\@LinesPerPage{#1} +}% end set linesperpage %% - -%% Fake \microtypesetup until package is loaded later: -\newif \if@setmicrotype -\gdef\microtypesetup#1{ - \gdef\@mymicrotypesetup{#1} % used in novel-FontDefaults.sty - \global\@setmicrotypetrue -} +%% \SetFontSize may be in any units, even decimals: 12.2pt, 11.5bp, etc. +% Before external packages load, the font size is temporarily set to +% 10pt at 13pt skip, so that moldy-oldie packages don't get confused. +% Later, the size is changed to its actual value based on this command, +% or on the defaults for Trim Size. +\newif \if@FontSizeSet % true if \SetFontSize rather than default. +\newlength\@SetFontSize +\newcommand\SetFontSize[1]{ + \global\@FontSizeSettrue + \gsetlength\@SetFontSize{#1} +}% end set font size %% - %% MISCELLANOUS SETTINGS. Mostly remove "glue". Best to leave as-is. -%% -------------------------------------------------------------------------- -%% +%% ---------------------------------------------------------------------------- +% Standard TeX \hoffset and \voffset is not relative to the MediaBox, but is +% relative to 1in from the top left corner of the MediaBox. Ouch. +% When necessary, the 1in (72.27pt) is compensated in later calculations. +\setlength\hoffset{0pt} % relative to 1in built-in offset at left +\setlength\voffset{0pt} % relative to 1in built-in offset at top % \@twocolumnfalse \@twosidetrue \@mparswitchtrue % -\abovedisplayskip \z@ -\abovedisplayshortskip \z@ -\belowdisplayshortskip \z@ -\belowdisplayskip \abovedisplayskip +\setlength\abovedisplayskip{0pt} +\setlength\abovedisplayshortskip{0pt} +\setlength\belowdisplayshortskip{0pt} +\setlength\belowdisplayskip{0pt} \global\@topnum \z@ % \setlength\smallskipamount{0pt} @@ -445,9 +226,14 @@ \setlength\marginparwidth{0pt} \setlength\marginparsep{0pt} \setlength\marginparpush{0pt} +\setlength\floatsep{0pt} \setlength\textfloatsep{0pt} \setlength\dbltextfloatsep{0pt} -% +\setlength\intextsep{0pt} +% \topskip will be set as normal baslineskip, which must first be calculated. +% That is done in novel-CalculateLayout.sty. +\widowpenalty 150 % same as TeX default +\clubpenalty 150 % same as TeX default \setlength\lineskip{0pt} \setlength\normallineskip{0pt} \renewcommand\baselinestretch{1} % multiplier @@ -455,7 +241,7 @@ \@lowpenalty 51 \@medpenalty 151 \@highpenalty 301 -% +% Floats not allowed, but just in case: \setcounter{topnumber}{2} \renewcommand\topfraction{.7} \setcounter{bottomnumber}{1} @@ -479,199 +265,38 @@ \setlength\columnseprule{0pt} \pagestyle{empty} % will be over-ridden by fancyhead in separate file \pagenumbering{arabic} % may be over-ridden in document -\flushbottom % may be over-ridden in document, but not advised +\flushbottom % best for continuous text % %% End miscellaneous settings. -% The following might become unnecessary if fontspec adds the capability to -% disable keys. For now: Color and Opacity cannot be used as font features, -% for a black/white printed book. Alas, fontspec over-rules xcolor. -% So, this code over-rules fontspec: -\gdef\novel@checkfeatures#1{% - \def\@featuresareok{yes} - \IfSubStr{#1}{Color}{\def\@featuresareok{no}}{}% - \IfSubStr{#1}{Colour}{\def\@featuresareok{no}}{}% - \IfSubStr{#1}{color}{\def\@featuresareok{no}}{}% - \IfSubStr{#1}{colour}{\def\@featuresareok{no}}{}% - \IfSubStr{#1}{Opacity}{\def\@featuresareok{no}}{}% - \IfSubStr{#1}{opacity}{\def\@featuresareok{no}}{}% - \ifthenelse{\equal{\@featuresareok}{yes}}{}{% - \ClassError{novel}{Color and Opacity forbidden as font features}% - {You defined a font, or added a font feature, with Color or Opacity.^^J% - That is disallowed in `novel' class.}% - } -} -%% -%% DEFINITION OF PARENT AND OTHER FONTS -%% -------------------------------------------------------------------------- -%% Prior to v. 1.1, parentfont was known as masterfont. Backwards compatible. -% -% These are the LaTeX defaults, which should already be built-in by now. -% But just in case they are undefined, here they are set to LaTeX defaults: -\providecommand\rmdefault{lmr} -\providecommand\sfdefault{lmss} -\providecommand\ttdefault{lmtt} -% The `no-math' option prevents fontspec from tracking certain font changes. -% This is probably necessary, since novel does some of its own font tracking: -\RequirePackage[no-math]{fontspec} % For LuaLaTeX. NOT package `fontenc'. -\defaultfontfeatures{} % reset -\defaultfontfeatures{SmallCapsFeatures={Renderer=Basic},Ligatures=TeX,} -% Main and sans fonts: kerning, ligatures, and OldStyle numbers if available: -\defaultfontfeatures[\rmfamily,\sffamily]{Kerning=On,Numbers=OldStyle,Ligatures=Common} -% Package `unicode-math' uses Latin Modern Math as default math font: -\RequirePackage{unicode-math} -% -%% This could have been easier, but fontspec allows mandatory and optional -% arguments to appear in either order. We wish to store the fontnames -% and arguments, but need Expl syntax to tell which is which. -%% Store settings for the parent font: -% \AtEndPreamble, the parent font becomes becomes -% the default ancestor of all novel-defined fonts, except the deco font. -\newif \if@parentfontset -\gdef\parentfontfeatures{} -\gdef\parentfontname{} -\DeclareDocumentCommand \SetParentFont { O{} m O{} } {% from version 1.1. - \novel@checkfeatures{#1,#3} - \gdef\parentfontfeatures{#1,#3} - \gdef\parentfontname{#2} - \global\@parentfontsettrue -}% -\DeclareDocumentCommand \SetMasterFont { O{} m O{} } {% DEPRECATED - \novel@checkfeatures{#1,#3} - \gdef\parentfontfeatures{#1,#3} - \gdef\parentfontname{#2} - \global\@parentfontsettrue -}% - -%% Store settings for the chapterfont: -% The chapter font is used by the \ChapterTitle{} command. -\newif \if@chapterfontset -\gdef\@chapterfontfeatures{} -\gdef\@chapterfontname{} -\DeclareDocumentCommand \SetChapterFont { O{} m O{} } {% - \novel@checkfeatures{#1,#3} - \gdef\@chapterfontfeatures{Numbers=Lining,#1,#3} - \gdef\@chapterfontname{#2} - \global\@chapterfontsettrue -}% -%% Store settings for the subchfont: -% The subch font is used by the \ChapterSubtitle{} command. -\newif \if@subchfontset -\gdef\@subchfontfeatures{} -\gdef\@subchfontname{} -\DeclareDocumentCommand \SetSubchFont { O{} m O{} } {% - \novel@checkfeatures{#1,#3} - \gdef\@subchfontfeatures{Numbers=Lining,#1,#3} - \gdef\@subchfontname{#2} - \global\@subchfontsettrue -}% -%% Store settings for the headfont: -% The headfont is used in headers and footers. -\newif \if@headfontset -\gdef\@headfontfeatures{} -\gdef\@headfontname{} -\DeclareDocumentCommand \SetHeadFont { O{} m O{} } {% revised v 1.40.3 - \novel@checkfeatures{#1,#3} - \gdef\@headfontfeatures{Numbers=Lining,% - WordSpace=\@looseheadword,LetterSpace=\@loosehead,#1,#3} - \gdef\@headfontname{#2} - \global\@headfontsettrue -}% -%% Store settings for the deco font: -% The deco font is used for decorations and acronyms. -% It must be NovelDeco.otf or a font based on NovelDeco.otf. No other! -\newif \if@decofontset -\newif \if@gotdeco -\gdef\@decofontfeatures{} -\gdef\@decofontname{} -\DeclareDocumentCommand \SetDecoFont { O{} m O{} } {% - \novel@checkfeatures{#1,#3} - \gdef\@decofontname{#2} - \global\@decofontsettrue - \global\@gotdecotrue - \newfontface\decofont[#1,#3]{#2} -}% -%% For syntax consistency: -\ExplSyntaxOn -\cs_new_eq:NN \NewFontFamily \newfontfamily -\cs_new_eq:NN \NewFontFace \newfontface -\cs_new_eq:NN \SetSansFont \setsansfont -\cs_new_eq:NN \SetMonoFont \setmonofont - -\cs_new_eq:NN \SetMathFont \setmathfont -\cs_new_eq:NN \AddFontFeatures \addfontfeatures -\cs_new_eq:NN \AddFontFeature \addfontfeatures -\ExplSyntaxOff -%% -%% \CreateFontFeature{substitutions}{feature code} -% Problem: Font has one or more alternate glyphs that you would like to use, -% but they are not listed in a feature set for the font. -% Solution: Create your own feature set, with \CreateFontFeature. The created -% feature may then be used like a real feature, in any font definition. -% The substitutions are a comma-separated list, char=char.alt and so forth. -% For example, the following substitutions are syntactically OK: -% emdash=emdah.alt, one=one.rev, ntilde=ntilde.03 -% If a substitution is not available in a particular font, it is ignored. -% You have to look at the font in a font editor, to know what is available. -% It is possible to make silly substitutions, such as a=b, five=three without -% throwing an error, unless your code causes a cycle. -% The most useful application of this command is to reach alternate emdash, -% and alternate oldstyle one. Not every font has these. -% The feature code is a 4-character pseudo- Open Type code, otherwise unused. -% For example, the feature code might be myfs (my fake substitution) -% but it cannot be a pre-defined code such as lnum or smcp. It may be -% a style set such as ss03 if you are sure that the font in question -% do not already have ss03 (but this is taking a chance). -% Once defined, you may use it like this (for example): -% \SetParentFont[RawFeature=+myfs]{fontname} -% \NewFontFamily\myfake[RawFeature=+myfs]{fontname} -% In the document body: {\addfontfeature{myfs} text} -\DeclareDocumentCommand \CreateFontFeature { m m } {% - \IfEndWith{#1}{,}{\StrGobbleRight{#1}{1}[\@fakezero]}{\def\@fakezero{#1}} - \def\@fakeone{"\@fakezero"} - \StrSubstitute{\@fakeone}{=}{"]="}[\@fakeone] - \StrSubstitute{\@fakeone}{,}{",\space["}[\@fakeone] - \directlua{ - fonts.handlers.otf.addfeature { - name = "#2", - type = "substitution", - data = {\@fakeone}, - } - } -} %% end \CreateFontFeature. Above thanks to fontspec 2016. -%% -%% end definition of parent and other fonts. %% FRONTMATTER, MAINMATTER. BUT NO BACKMATTER! -%% -------------------------------------------------------------------------- -% -\newif \ifWithinFrontmatter \WithinFrontmatterfalse -\newif \ifWithinMainmatter \WithinMainmatterfalse -\newcounter{frontmatterpages} -\newcounter{runningpages} +%% ---------------------------------------------------------------------------- % % See novel.cls for the AtBeginShipout routine. % +% These do not have @ in name, so that they can be used in document body: +\newif \ifWithinFrontmatter % true within frontmatter +\newif \ifWithinMainmatter % true within mainmatter \def\frontmatter{ % starts page count and frontmatter count at 1. \ifWithinFrontmatter \ClassError{novel}{\string\frontmatter\ used more than once}% - {You issued \string\frontmatter\ more than once.^^J}% + {You issued \string\frontmatter\ more than once.}% \fi \ifWithinMainmatter \ClassError{novel}{\string\frontmatter\ cannot follow \mainmatter}% - {In order: \string\frontmatter\ \string\mainmatter^^J% - but you do not need both of them.^^J}% + {In order: \string\frontmatter\ \string\mainmatter ^^J% + but you do not need both of them.}% \fi - \WithinFrontmattertrue\WithinMainmatterfalse + \global\WithinFrontmattertrue\global\WithinMainmatterfalse \clearpage \pagenumbering{roman} \setcounter{page}{1} - \setcounter{frontmatterpages}{1} } % \def\mainmatter{ % restarts page to 1, arabic numbers; freeze frontpagecount @@ -680,39 +305,38 @@ {You issued \string\mainmatter\ more than once.}% \fi \cleartorecto % added v. 1.40.1 - \WithinFrontmatterfalse\WithinMainmattertrue - \setcounter{frontmatterpages}{\value{page}} - \addtocounter{frontmatterpages}{-1} + \global\WithinFrontmatterfalse\global\WithinMainmattertrue \pagenumbering{arabic} \setcounter{page}{1} } % -\def\backmatter{\@ifstar\@backmatterst\@backmatterns} % asterisk obsolete from v. 1.40. +\def\backmatter{\@ifstar\@backmatterst\@backmatterns} % asterisk obsolete \def\@backmatterst{% - \ClassWarning{novel}{Command \string\backmatter*\ ignored. Do not use.^^J}% + \ClassWarning{novel}{^^J\string\backmatter*\ ignored. Do not use. ^^J}% } % \def\@backmatterns{% \cleartorecto% v. 1.40.2 - \typeout{Class `novel' Alert: \string\backmatter\space merely clears to recto. See docs.^^J}% v. 1.42 + \typeout{^^JClass `novel' Alert: \string\backmatter\space merely % + clears to recto. See docs. ^^J}% v. 1.42 % } % -\def\Backmatter{\@ifstar\@Backmatterst\@Backmatterns} % obsolete from v. 1.40. +\def\Backmatter{\@ifstar\@Backmatterst\@Backmatterns} % obsolete % \def\@Backmatterst{% continues frontmatter count w/ uppercase Roman numerals - \ClassWarning{novel}{Command \string\Backmatter*\ ignored. Do not use.^^J}% + \ClassWarning{novel}{^^J\string\Backmatter*\ ignored. Do not use. ^^J}% } % \def\@Backmatterns{% - \ClassWarning{novel}{Command \string\Backmatter\ ignored. Do not use.^^J}% + \ClassWarning{novel}{^^J\string\Backmatter\ ignored. Do not use. ^^J}% } % %% end frontmatter, mainmatter. No backmatter! %% DISABLE OR NEUTRALIZE SOME STANDARD LATEX COMMANDS -%% -------------------------------------------------------------------------- +%% ---------------------------------------------------------------------------- % The `novel' class disallows these commands, or neutralizes them by simply % repeating their arguments. In some cases, they request functionality that's % not implemented in `novel'. In other cases, functionality is part of core, @@ -722,17 +346,19 @@ \gdef\null{\hbox{\strut}} % May be important! % % Standard LaTeX font sizes are ineffective: -\let\small\relax -\let\footnotesize\relax -\let\scriptsize\relax -\let\tiny\relax -% -\let\large\relax -\let\Large\relax -\let\LARGE\relax -\let\huge\relax -\let\Huge\relax -\let\HUGE\relax +\gdef\@DisableFontSizes{% called by `novel.cls' \AtBeginDocument + \let\HUGE\relax + \let\Huge\relax + \let\huge\relax + \let\LARGE\relax + \let\Large\relax + \let\large\relax + \let\small\relax + \let\footnotesize\relax + \let\scriptsize\relax + \let\tiny\relax +} % +% In `novel' there is no academic organization. % All these do is echo the argument, if any: \long\gdef\part#1{#1} \long\gdef\chapter#1{#1} @@ -741,10 +367,12 @@ \long\gdef\subsubsection#1{#1} \long\gdef\paragraph#1{#1} \long\gdef\subparagraph#1{#1} +\long\gdef\appendix#1{#1} % In some situations, the use will be interrupted: -\gdef\@nodocommand#1{ - \ClassError{novel}{No command `\string\#1' in this class}% - {The `\string\#1' command is not implemented in `novel' class.^^J}% +\DeclareDocumentCommand\@nodocommand { O{} +m } {% + \ClassError{novel}{No command or environment `#1' in this class}% + {Many academic layout commands or environments are disabled in `novel'. ^^J% + #2.}% } % Here is the interruption list: \long\gdef\maketitle\@nodocommand{maketitle} @@ -752,24 +380,33 @@ \long\gdef\tableofcontents\@nodocommand{tableofcontents} \long\gdef\listoftables\@nodocommand{listoftables} \long\gdef\listoffigures\@nodocommand{listoffigures} +\long\gdef\thebibliography\@nodocommand{thebibliography} +\long\gdef\theindex\@nodocommand{theindex} +\long\gdef\titlepage\@nodocommand{titlepage} +\long\gdef\description\@nodocommand{description} +\long\gdef\caption\@nodocommand{caption} +\long\gdef\abstract\@nodocommand{abstract} +\long\gdef\table\@nodocommand[Use `sandbox' mode to create an image]{table} +\long\gdef\figure\@nodocommand[Use `sandbox' mode to create an image]{figure} % %% end disable or neutralize. -%% polyglossia -% Language-specific settings: -\if@polyoff % polyoff is new in v 1.44. - \ClassWarning{novel}{^^JYou chose the `polyoff' class option.^^J% - So, the polyglossia package was not loaded. But like it or not,^^J% - the babel package was loaded, with generic hyphenation.^^J% - This behavior, or choice of language, cannot be changed.^^J% - If you want a specific language, you will have to use polyglossia.^^J}% -\else - \RequirePackage{polyglossia} % loading order changed in v. 1.40.3. -\fi -%% end polyglossia +%% Neutralize settings commands: +\gdef\@DisableLayoutSettings{% called by `novel.cls' \AtBeginDocument + \LetLtxMacro\SetMediaSize\relax + \LetLtxMacro\SetTrimSize\relax + \LetLtxMacro\SetMargins\relax + \LetLtxMacro\SetLinesPerPage\relax + \LetLtxMacro\SetFontSize\relax + \LetLtxMacro\SetUnsafeZone\relax +}% end \@DisableLayoutSettings +%% %% +\endinput +%% %% End of file `novel-LayoutSettings.sty'. + diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-Obsolete.sty b/Master/texmf-dist/tex/lualatex/novel/novel-Obsolete.sty new file mode 100644 index 00000000000..b848c005705 --- /dev/null +++ b/Master/texmf-dist/tex/lualatex/novel/novel-Obsolete.sty @@ -0,0 +1,453 @@ +%% +%% This is file `novel-Obsolete.sty', part of `novel' document class. +%% Copyright 2017-2018 Robert Allgeyer. +%% +%% +%% This file may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% +\ProvidesFile{novel-Obsolete.sty}% +[2018/03/28 v1.50 LaTeX file (obsolete macros)] +%% + + +%% OBSOLETE MACROS !!! +%% +%% Prior to version 1.50, `novel' contained some macros or features that +%% worked but were hard to maintain, or worked in a fashion that was +%% user-unfriendly, or was not as good as some better code. +%% These macros have been gathered here. DO NOT USE THEM IN NEW DOCUMENTS. +%% They have only been retained for backwards-compatibility. +%% If you find a bug -- too bad! Anything here is "won't fix." +%% + + +%% OBSOLETE +\gdef\SetCropmarkGap#1{} % simply ignored +%% + + +%% OBSOLETE +\newcommand\pushtextdown[1]{% OBSOLETE + \ifthenelse{\equal{#1}{} \OR \equal{#1}{ } \OR \equal{#1}{0}}{% + \def\@howmuchdown{0em}% + }{% + \def\@howmuchdown{#1}% + }% + ~\par\vspace*{-\nbs}\vspace*{\@howmuchdown}\par% +} +%% + + +%% OBSOLETE +%% \squeeze{} and \crush{} slightly shrink the horizonal dimension of the +% enclosed text. May span paragraphs. Emergency only! No compounding. +\long\gdef\squeeze#1{{\addfontfeature{FakeStretch=0.99}#1}} +\long\gdef\crush#1{{\addfontfeature{FakeStretch=0.98}#1}} +%% + + +%% OBSOLETE +\gdef\specialblankline{\null} % deprecated +%% + + +%% OBSOLETE. +%%Replaced by better method. Will be honored, but not documented. +\newcommand\TestCoverImage[1]{% + \@tempTFfalse% + \IfSubStr{#1}{jpg}{\@tempTFtrue}{}% + \IfSubStr{#1}{jpeg}{\@tempTFtrue}{}% + \IfSubStr{#1}{JPG}{\@tempTFtrue}{}% + \IfSubStr{#1}{JPEG}{\@tempTFtrue}{}% + \IfSubStr{#1}{png}{% + \@tempTFtrue + \if@pdfxISoff\else + \ifthenelse{\equal{\@PDFversion}{PDF/X-1}}{ + \ClassError{novel}{Cannot use png cover image with PDF/X-1a}% + {PDF/X-1a requires CMYK image. But png format is always RGB.}% + }{} + \fi + \ClassWarning{novel}{^^JCover image is png file type. ^^J% + Format png only supports RGB, not CMYK. ^^J% + This might be OK if you are not using PDF/X-1a, ^^J% + and if your print service accepts RGB artwork. ^^J% + But in many cases, not OK. Did you need CMYK? ^^J}% + }{}% + \IfSubStr{#1}{PNG}{% + \@tempTFtrue + \if@pdfxISoff\else + \ifthenelse{\equal{\@PDFversion}{PDF/X-1}}{ + \ClassError{novel}{Cannot use png cover image with PDF/X-1a}% + {PDF/X-1a requires CMYK image. But png format is always RGB.}% + }{} + \fi + \ClassWarning{novel}{^^JCover image is png file type. ^^J% + Format png only supports RGB, not CMYK. ^^J% + This might be OK if you are not using PDF/X-1a, ^^J% + and if your print service accepts RGB artwork. ^^J% + But in many cases, not OK. Did you need CMYK? ^^J}% + }{}% + \if@tempTF\else% + \ClassError{novel}{Cover image has wrong file extension}% + {Cover image must be jpg, JPG, jpeg, JPEG. ^^J% + Can also use png or PNG if CMYK not required.}% + \fi% +} % end \TestCoverImage +%% +\newcommand\SetCoverImage[1]{% + \if@coverart% + \ClassWarning{novel}{^^J\string\SetCoverImage\space is obsolete. ^^J% + It will be honored, but not documented. From `novel' version 1.50 use ^^J% + novel-scripts, then \ScriptCoverImage\space instead. ^^J}% + \TestCoverImage{#1}% + \AddToShipoutPictureBG{% + \AtPageUpperLeft{% + \InlineImage{#1}% + }% + }% + \null% without this, page has no "content" + \else% + \ClassError{novel}{\string\SetCoverImage\space requires `coverart' option}% + {You must use the `coverart' document class option, for cover image.}% + \fi% +} % end \SetCoverImage +%% + + +%% OBSOLETE +\newif \if@FlexResolutionSet +\gdef\@novereserror{% + \ClassError{novel}{\string\SetFlexResolution\space bad value}% + {Resolution dpi must be integer from 200 to 9600. Default 300.}% +} +\newcommand\SetFlexResolution[1]{ + \IfInteger{#1}{ % + \FPiflt{#1}{200}\@novereserror\else\fi % not enough + \FPifgt{#1}{9600}\@novereserror\else\fi % too much + \gdef\@novimgres{#1} % + }{ % + \@novreserror % + } % + \@FlexResolutionSettrue % +}% +% +\AtEndPreamble{% called by `novel.cls' \AtEndPreamble + \if@FlexResolutionSet % + \pdfimageresolution=\@novimgres % from \SetFlexResolution. Default 300. + \fi % +}% +%% + + +%% BLOCK IMAGE (OBSOLETE) +%% ---------------------------------------------------------------------------- +%% \BlockImage[alignment]{image}[text] +%% OBSOLETE FROM VERSION 1.50. Use \FloatImage instead. +\DeclareDocumentCommand \BlockImage { O{c} m +O{} }{% + \ClassWarning{novel}{^^J\string\BlockImage\space command is obsolete. ^^J% + It will remain in effect for existing documents that have it. ^^J% + New documents: Use \string\FloatImage, or \string\WrapImage, instead. ^^J% + Purpose and syntax is slightly different. See docs. ^^J}% + \iftoggle{@inheadfoot}{% + \ClassError{novel}{Cannot use \string\BlockImage\space in header/footer}% + {Header footer allow \string\InlineImage, but not \string\BlockImage.}% + }{}% + \@TestImageExtension{#2}% + % Allows empty or blank to be used, and still provide default values: + \ifthenelse{\equal{#1}{} \OR \equal{#1}{\space}}{% + \def\@myargs{c}}{\def\@myargs{#1}% + }% + \StrDel{\@myargs}{\space}[\@myargsns]% needs {\space} not { } + \StrCut{\@myargsns}{,}{\@myalign}{\@mycoord}% + \StrCut{\@mycoord}{,}{\@myxt}{\@myyt}% + \ifthenelse{\equal{\@myxt}{}\OR\equal{\@myxt}{0}}{% + \def\@myx{0pt}}{\def\@myx{\@myxt}% + }% + \ifthenelse{\equal{\@myyt}{}\OR\equal{\@myyt}{0}}{% + \def\@myy{0pt}}{\def\@myy{\@myyt}% + }% + % + \global\@UsingNovelCommandtrue% + \gdef\@mygraphic{\novel@sub@inclgr{#2}}% + \gdef\@mygraphicname{#2}% + \setlength\@imagewidth{\widthof{\@mygraphic}}% + \global\@imagewidth=\@imagewidth% + \setlength\@imageheight{\heightof{\@mygraphic}}% + \global\@imageheight=\@imageheight% + \setlength\@imagehoffset{\@myx}% + \IfBeginWith{\@myy}{b}{% + \ClassError{novel}{Cannot use voffset `b' on % + \string\BlockImage, page \thepage}% + {The `b' voffset only works with \string\InlineImage, % + not \string\BlockImage.}% + }{% + \setlength\@imagevoffset{-\@imageheight}% + \addtolength\@imagevoffset{\@myy}% + }% + % + \setlength\@mytotalht{0pt}% + \addtolength\@mytotalht{\@imageheight}% + \addtolength\@mytotalht{-\@myy}% + \addtolength\@mytotalht{1em}% + \def\@mytotalhtN{\strip@pt\@mytotalht}% + \FPdiv{\@mytotalhtN}{\@mytotalhtN}{\strip@pt\nbs}% + \FPadd{\@mytotalhtN}{\@mytotalhtN}{0.5}% + \FPround{\@mytotalhtN}{\@mytotalhtN}{0}% + % + \begin{linegap}{\@mytotalhtN}% + % + \ifthenelse{\equal{\@myalign}{c}\OR\equal{\@myalign}{}}{% + {\centering% + \makebox[0pt][l]{% + \hspace{\dimexpr\@myx-0.5\@imagewidth}% + \stake\smash{\raisebox{\dimexpr\@myy-\@imageheight}{\@mygraphic}}% + }% + \par% + } + \vspace*{-\nbs}% + {\centering #3\par}% + }{}% + \ifthenelse{\equal{\@myalign}{r}}{% + \noindent\makebox[0pt][l]{% + \hspace{\dimexpr\textwidth+\@myx-\@imagewidth}% + \stake\smash{\raisebox{\dimexpr\@myy-\@imageheight}{\@mygraphic}}% + }\par% + \vspace{-2\nbs}% + \begin{adjustwidth}{0pt}{\@imagewidth+\parindent}% + \strut\par% + #3\par% + \end{adjustwidth}% + }{}% + \ifthenelse{\equal{\@myalign}{l}}{% + \noindent\makebox[0pt][l]{% + \hspace{\@myx}% + \stake\smash{\raisebox{\dimexpr\@myy-\@imageheight}{\@mygraphic}}% + }% + \par% + \vspace{-2\nbs}% + \begin{adjustwidth}{\@imagewidth+\parindent}{0pt}% + \strut\par% + #3\par% + \end{adjustwidth}% + }{}% + \end{linegap}% + \global\@UsingNovelCommandfalse% +} % end \BlockImage (OBSOLETE) +%% + + +%% REWORK IS OBSOLETE CODE. NOT DOCUMENTED. +%% ---------------------------------------------------------------------------- +%% \ReworkTrimSize retroactively changes Trim Size after layout. +% If you use \ReworkTrimSize, you must first use \SetTrimSize (not defaults): +\newlength\@NewTrimWidth +\newlength\@NewTrimHeight +\newif \if@ReworkTrimSize +\newcommand\ReworkTrimSize[2]{% width, height + \ClassWarning{novel}{\string\Rework\space commands are obsolete. ^^J% + The \string\Rework\space commands are still effective for old documents, ^^J% + but should not be used for new documents, due to potential layout issues.}% + \if@SetTrimSize\else + \ClassError{novel}{Must use \string\SetTrimSize\space % + before \string\ReworkTrimSize}% + {\string\ReworkTrimSize\space cannot be applied to default Trim Size. ^^J% + You must manually \string\SetTrimSize\space prior to % + \string\ReworkTrimSize.}% + \fi + \if@coverart % New in version 1.2 + \ClassError{novel}{\string\Rework\space commands cannot be used % + with `coverart' option}% + {Instead of \string\Rework, you must re-do the graphics artwork.} + \else + \global\@ReworkTrimSizetrue + \gsetlength\@NewTrimWidth{#1} + \gsetlength\@NewTrimHeight{#2} + \typeout{^^J Class `novel' Alert: % + Used \string\ReworkTrimSize\space command. ^^J% + Carefully review your PDF to ensure that line breaks, paragraphs, ^^J% + and page breaks are where you expect them to be. ^^J}% + \fi +}% end \ReworkTrimSize +%% + + +%% REWORK IS OBSOLETE CODE. NOT DOCUMENTED. +%% Retroactively change margins after layout. See documentation. +% If you use \ReworkMargins, you must first use \SetMargins (not defaults): +\newlength\@NewTopMargin +\newlength\@NewOuterMargin +\newlength\@NewBottomMargin +\newlength\@NewInnerMargin +\newif \if@ReworkMargins +\newcommand\ReworkMargins[4]{ % top, outer, bottom, inner + \ClassWarning{novel}{\string\Rework\space commands are obsolete. ^^J% + The \string\Rework\space commands are still effective for old documents, ^^J% + but should not be used for new documents, due to potential layout issues.}% + \if@coverart % New in version 1.2 + \ClassError{novel}{\string\Rework\space commands cannot be used % + with coverart option}% + {Instead of \string\Rework, you must re-do the graphics artwork.} + \else + \global\@ReworkMarginstrue + \gsetlength\@NewTopMargin{#1} + \gsetlength\@NewOuterMargin{#2} + \gsetlength\@NewBottomMargin{#3} + \gsetlength\@NewInnerMargin{#4} + \typeout{^^JClass novel Alert: Used \string\ReworkMargins. ^^J% + Carefully review your PDF to ensure that line breaks, paragraphs, ^^J% + and page breaks are where you expect them to be. ^^J}% + \fi +}% end \ReworkMargins +\LetLtxMacro\ReworkMargin{\ReworkMargins}\relax % for those who mis-type +%% When \Rework, should result honor new margins (if possible), or should +% result maintain original aspect ratio? +\newif \if@AspectPriority +\newcommand\ReworkPriority[1]{% + \@tempTFfalse + \ifthenelse{\equal{#1}{aspect}}{\@AspectPrioritytrue\@tempTFtrue}{} + \ifthenelse{\equal{#1}{margins}}{\@AspectPriorityfalse\@tempTFtrue}{} + \ifthenelse{\equal{#1}{margin}}{\@AspectPriorityfalse\@tempTFtrue}{} + \if@tempTF\else + \ClassError{novel}{Bad choice for \string\ReworkPriority}% + {Rework priority choices: aspect, margins (default margins).}% + \fi +} +\ReworkPriority{margins} % default +%% + + +%% REWORK IS OBSOLETE CODE. NOT DOCUMENTED. +\gdef\ObsoleteRework{ % +% A few values from the original calculation must be stored: +\newlength\@OriginalEmSize + \gsetlength\@OriginalEmSize{\@SetFontSize} +\newlength\@OriginalTextWidth % same as original available width + \gsetlength\@OriginalTextWidth{\textwidth} +\newlength\@OriginalHeight % includes header/footer + \gsetlength\@OriginalHeight{\@AvailableHeight} +\newlength\@OriginalBaselineSkip + \gsetlength\@OriginalBaselineSkip{\baselineskip} +% Change the values of trim size and margins, as requested. +% If not changed, same as before: +\if@ReworkTrimSize + \gsetlength\@TrimWidth{\@NewTrimWidth} + \gsetlength\@TrimHeight{\@NewTrimHeight} +\fi +\if@ReworkMargins + \gsetlength\@TopMargin{\@NewTopMargin} + \gsetlength\@OuterMargin{\@NewOuterMargin} + \gsetlength\@BottomMargin{\@NewBottomMargin} + \gsetlength\@InnerMargin{\@NewInnerMargin} +\fi +% Re-calculate: +\gsetlength\@AvailableWidth{\@TrimWidth-\@OuterMargin-\@InnerMargin} +\gsetlength\@AvailableHeight{\@TrimHeight-\@TopMargin-\@BottomMargin} +%% +\xdef\@TWratio{\fpeval{\@AvailableWidth/\@OriginalTextWidth}} +\xdef\@THratio{\fpeval{\@AvailableHeight/\@OriginalHeight}} +\FPmin{\@TMratio}{\@TWratio}{\@THratio} +%% +\if@AspectPriority + \gsetlength\textwidth{\@TMratio\@OriginalTextWidth} + \gsetlength\@SetFontSize{\@TMratio\@OriginalEmSize} + \gsetlength\baselineskip{\@TMratio\@OriginalBaselineSkip} + % Find whether limiting factor is width or height: + \ifnumcomp{\@TWratio}{<}{\@THratio}{% + \setlength\@tempLength{\@AvailableHeight-\@AdjLPP\baselineskip} + \setlength\@tempLength{\@tempLength-\baselineskip+\@SetFontSize} + \setlength\@tempLength{0.5\@tempLength} + \gsetlength{\@TopMargin}{\@TopMargin+\@tempLength} + \gsetlength{\@BottomMargin}{\@BottomMargin+\@tempLength} + \FPround{\@tempN}{\strip@pt\@tempLength}{2} + \setlength\@tempLength{\@tempN pt} + \FPround{\@tempN}{\@TMratio}{4} + \typeout{^^JClass `novel' Info: Rework preserving aspect ratio. ^^J Each% + vertical margin \the\@tempLength\space over requested rework value. ^^J% + Scale \@tempN\space applied to text size and baselineskip. ^^J% + } % + }{% + \gsetlength\@OuterMargin{\@OuterMargin+0.5\@AvailableWidth-0.5\textwidth} + \gsetlength\@InnerMargin{\@InnerMargin+0.5\@AvailableWidth-0.5\textwidth} + \setlength\@tempLength{0.5\@AvailableWidth-0.5\textwidth} + \FPround{\@tempN}{\strip@pt\@tempLength}{2} + \setlength\@tempLength{\@tempN pt} + \FPround{\@tempN}{\@TMratio}{4} + \typeout{^^JClass `novel' Info: Rework preserving aspect ratio. ^^J% + Each side margin \the\@tempLength\space over requested rework value. ^^J% + Scale \@tempN\space applied to text size and baselineskip. ^^J% + } % + } % end \ifnumcomp +\else % margins priority: + % Discover what happens if scaled according to text width: + \gsetlength\textwidth{\@AvailableWidth} + \gsetlength\@SetFontSize{\@TWratio\@OriginalEmSize} + \gsetlength\baselineskip{1.2\@SetFontSize} % test for least allowable + \setlength\@tempLength{\@AdjLPP\baselineskip} + \ifdimcomp{\@AvailableHeight-\@tempLength}{<}{0pt}{% + % Will not fit vertically, so will need to re-scale \@SetFontSize. + \gsetlength\@SetFontSize{\@OriginalEmSize} + \gsetlength\baselineskip{\fpeval{\@AvailableHeight/(\@AdjLPP+1.3)}pt} + \FPdiv\@THratio{\strip@pt\baselineskip}{\strip@pt\@OriginalBaselineSkip} + \gsetlength\@SetFontSize{0.8333\baselineskip} % 0.8333 = 1/1.2, tight skip + \FPdiv{\@tempN}{\strip@pt\@SetFontSize}{\strip@pt\@OriginalEmSize} + \gsetlength\textwidth{\@tempN\@OriginalTextWidth} + \gsetlength\@OuterMargin{% + 0.5\@OuterMargin+0.5\@TrimWidth-0.5\@InnerMargin-0.5\textwidth% + } + \gsetlength\@InnerMargin{% + 0.5\@InnerMargin+0.5\@TrimWidth-0.5\@OuterMargin-0.5\textwidth% + } + \FPround{\@ActualOuterN}{\strip@pt\@OuterMargin}{2} + \FPround{\@ActualInnerN}{\strip@pt\@InnerMargin}{2} + \FPmul{\@TWratio}{\@TWratio}{\@THratio} + \FPmul{\@THratio}{\@TWratio}{1.2} + \FPround{\@TWratio}{\@TWratio}{4} + \FPround{\@THratio}{\@THratio}{4} + \typeout{^^JClass `novel' Info: Reworked side margins enlarged. ^^J% + Actual Outer Margin is now \@ActualOuterN pt. ^^J% + Actual Inner Margin is now \@ActualInnerN pt. ^^J% + Scale \@TWratio\space applied to text, ^^J% + \@THratio\space applied to baselineskip. ^^J% + } % + }{% Fits vertically. Keep \@SetFontSize. Calculate \baselineskip to fit: + \gsetlength\baselineskip{% + \fpeval{(\@AvailableHeight-1.3*\@SetFontSize)/\@AdjLPP}pt% + } % + \FPdiv{\@BLratio}{\strip@pt\baselineskip}{\strip@pt\@OriginalBaselineSkip} + \FPround{\@BLratio}{\@BLratio}{4} + \FPround{\@TWratio}{\@TWratio}{4} + \typeout{^^JClass `novel' Info: Rework was able to fit new margins. ^^J% + Scale applied to font size: \@TWratio. ^^J% + Scale applied to baselineskip: \@BLratio. ^^J% + } % + }% end \ifdimcomp. +\fi +} % end ObsoleteRework. +%% + + +%% +\AtBeginDocument{% + \LetLtxMacro\ReworkTrimSize\relax + \LetLtxMacro\ReworkMargins\relax + \LetLtxMacro\ReworkPriority\relax + \LetLtxMacro\SetFlexResolution\relax % cannot use past Preamble + \providecommand\acronym[1]{\midcase{#1}}% acronym deprecated +} % +%% + + + +%% +\endinput +%% +%% End of file `novel-Obsolete.sty'. + + diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-PostLayout.sty b/Master/texmf-dist/tex/lualatex/novel/novel-PostLayout.sty new file mode 100644 index 00000000000..b2bcc27c030 --- /dev/null +++ b/Master/texmf-dist/tex/lualatex/novel/novel-PostLayout.sty @@ -0,0 +1,263 @@ +%% +%% This is file `novel-PostLayout.sty', part of `novel' document class. +%% Copyright 2017-2018 Robert Allgeyer. +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% +\ProvidesFile{novel-PostLayout.sty}% +[2018/03/28 v1.50 LaTeX file (post-layout modifications)] +%% + +%% +%% This file is loaded \AtEndPreamble, which precedes \AtBeginDocument. +%% + + + +% \@getPageXY is used by `shademargins' and `cropmarks' options. +% The 72.27pt compensates for built-in 1in TeX offsets. +% Position of left edge of TrimBox, rightwards from left edge of MediaBox: +\newlength\Trim@Left +% Position of bottom of TrimBox, upwards from bottom of MediaBox: +\newlength\Trim@Bottom +\gdef\@getPageXY{% + \ifodd\c@page% Adjusts for left-right margin switching, verso/recto, + % and also for horizontal position of TrimBox within MediaBox: + \gsetlength\Trim@Left{\oddsidemargin-\@InnerMargin+72.27pt}% + \else% + \gsetlength\Trim@Left{\evensidemargin-\@OuterMargin+72.27pt}% + \fi% + % Adjusts for vertical position of TrimBox within MediaBox: + + \gsetlength\Trim@Bottom{0.5\paperheight-0.5\@TrimHeight+\hoffset}% + +}% +%% end \@getPageXY. + + +%% ACTIVATE CLOSECROP CLASS OPTION +%% ---------------------------------------------------------------------------- +% The `closecrop' class option is only effective in draft mode. +% It preserves the text layout, but removes most of the margin white space. +% The resulting file is more easily readable on a hand-held device. +% However, the cropped file is not suitable for distribution as an E-book, +% as it is missing reflow information, marketing metadata, etc. +\if@closecrop + \gsetlength\paperwidth{\textwidth+0.2in} + \if@HasHeader + \gsetlength\topmargin{-1in} + \else + \gsetlength\topmargin{-0.9in} + \fi + \if@HasFooter + \if@HasHeader + \gsetlength\paperheight{% + \textheight+\headsep+\headheight+\@FootJump\baselineskip+1pt% + } + \else + \gsetlength\paperheight{% + \textheight+\headsep+\headheight+\@FootJump\baselineskip+\@SetFontSize% + } + \fi + \else + \gsetlength\paperheight{\textheight+\headsep+\headheight+0.1in} + \fi +\fi +%% end closecrop + + +%% ACTIVATE SHADEMARGINS CLASS OPTION (Includes Unsafe Zone) +%% ---------------------------------------------------------------------------- +%% With class option `shademargins' (only effective in draft mode): +% Based on code by Ulrike Fischer at tex.stackexchange.com, CC-by-sa-3.0: +% 0.542763, 0.883215 and 0.949123 are unlikely user choices. +% The re-defined \color command makes an exception for those values. +\definecolor[named]{hingledingle}{gray}{1} % fake white, when white disallowed +% +\if@shademargins + % Margins are visualized by filling the TrimBox background with gray. + % Then, the rectangle defining the Englosed area is filled with white. + % Then header and/or footer are filled with a lighter gray background. + % Then Unsafe Zone (UZ) sits atop the other background fills, as darker gray. + % The UZ is constructed from four strips, one at each side. + \AddToShipoutPictureBG{% fills trim area with medium gray + \@getPageXY% + \AtPageLowerLeft{\color[gray]{0.883215}% + \hspace{\Trim@Left}% + \rule[\Trim@Bottom]{\@TrimWidth}{\@TrimHeight}% + }% + }% + % + \AddToShipoutPictureBG{% fills enclosed area with white + \@getPageXY% + \AtPageLowerLeft{\color{hingledingle}% + \ifodd\c@page% + \hspace{\dimexpr\oddsidemargin+72.27pt}% + \else% + \hspace{\dimexpr\evensidemargin+72.27pt}% + \fi% + \rule[\dimexpr\Trim@Bottom+\@BottomMargin]% + {\textwidth}{\dimexpr\@TrimHeight-\@TopMargin-\@BottomMargin} + }% + }% + \if@HasHeader% fills header (and its jump) with light gray + \AddToShipoutPictureBG{% + \@getPageXY% + \AtPageLowerLeft{\color[gray]{0.949123}% + \ifodd\c@page% + \hspace{\dimexpr\oddsidemargin+72.27pt}% + \else% + \hspace{\dimexpr\evensidemargin+72.27pt}% + \fi% + \rule[\Trim@Bottom+\@TrimHeight-\@TopMargin-\@HeadJump\nbs]% + {\@TrimWidth-\@OuterMargin-\@InnerMargin}{\@HeadJump\nbs}% + }% + }% + \fi% + % + \if@HasFooter% fills footer (and its jump) with light gray + \AddToShipoutPictureBG{% + \@getPageXY% + \AtPageLowerLeft{\color[gray]{0.949123}% + \ifodd\c@page% + \hspace{\dimexpr\oddsidemargin+72.27pt}% + \else% + \hspace{\dimexpr\evensidemargin+72.27pt}% + \fi% + \rule[\Trim@Bottom+\@BottomMargin]% + {\@TrimWidth-\@OuterMargin-\@InnerMargin}{\@FootJump\nbs}% + }% + }% + \fi% + % + \if@UnsafeZone% fills unsafe zones with dark gray + \AddToShipoutPictureBG{% top unsafe zone + \@getPageXY% + \AtPageLowerLeft{\color[gray]{0.542763}% + \hspace{\Trim@Left}% + \rule[\Trim@Bottom+\@TrimHeight-\@TopUZWidth]% + {\@TrimWidth}{\@TopUZWidth}% + }% + }% + \AddToShipoutPictureBG{% outer unsafe zone + \@getPageXY% + \AtPageLowerLeft{\color[gray]{0.542763}% + \ifodd\c@page% + \hspace{\dimexpr\Trim@Left+\@TrimWidth-\@OuterUZWidth}% + \rule[\Trim@Bottom]{\@OuterUZWidth}{\@TrimHeight}% + \else% + \hspace{\dimexpr\Trim@Left+\@TrimWidth-\@InnerUZWidth}% + \rule[\Trim@Bottom]{\@InnerUZWidth}{\@TrimHeight}% + \fi% + }% + }% + \AddToShipoutPictureBG{% bottom unsafe zone + \@getPageXY% + \AtPageLowerLeft{\color[gray]{0.542763}% + \hspace{\Trim@Left}% + \rule[\Trim@Bottom]{\@TrimWidth}{\@BottomUZWidth}% + }% + }% + \AddToShipoutPictureBG{% inner unsafe zone + \@getPageXY% + \AtPageLowerLeft{\color[gray]{0.542763}% + \hspace{\Trim@Left}% + \ifodd\c@page% + \rule[\Trim@Bottom]{\@InnerUZWidth}{\@TrimHeight}% + \else% + \rule[\Trim@Bottom]{\@OuterUZWidth}{\@TrimHeight}% + \fi% + }% + }% + \fi% end \if@UnsafeZone + % +\fi % end \if@shademargins +% +%% end shademargins and unsafe zone + + +%% LABEL DRAFT OPTION +%% ---------------------------------------------------------------------------- +% Writes DRAFT inside upper left of TrimBox, when in draft mode. +% This macro must go here, in order, so that the label is not over-shaded. +\ifdraftdoc + \AddToShipoutPictureBG{% + \@getPageXY% + \AtPageUpperLeft{% + \raisebox{-\@SetFontSize}{\textbf{~DRAFT}}% + }% + }% +\fi +%% end label draft. + + +%% ACTIVATE CROPMARKS CLASS OPTION +%% ---------------------------------------------------------------------------- +% Cropmarks (trim marks, really) are not important in this document class. +% That's because the targeted printing services generally do not want them. +% But a minimal capability was easy to add. The far end of each mark is +% 0.25in from the trim area. The close end is separated by 0.125in. +% So the length of the marks essentially 1/8in. Width 0.25bp. +% The marks are turned on using `cropmarks' class option. +% When Media Size = Trim Size, cropmarks are disabled. +% Too late for \@cropviewfalse; OK since CropBox already calculated properly. +\ifthenelse{% + \dimtest{\@TrimWidth}{=}{\paperwidth} % + \AND \dimtest{\@TrimHeight}{=}{\paperheight}% +}{\global\@cropmarksfalse}{} +% +\if@cropmarks% Cropmark begins 0.125in from TrimBox, ends 0.25in from TrimBox. + % H top left: + \AddToShipoutPictureBG{\@getPageXY% + \AtPageLowerLeft{% + \hspace{\dimexpr\Trim@Left-0.25in}% + \rule[0.5\paperheight+0.5\@TrimHeight]{0.25in-0.125in}{0.25bp}}} + % H bottom left: + \AddToShipoutPictureBG{\@getPageXY\AtPageLowerLeft{% + \hspace{\dimexpr\Trim@Left-0.25in}% + \rule[\Trim@Bottom-0.5pt]{0.25in-0.125in}{0.25bp}}} + % H top right: + \AddToShipoutPictureBG{\@getPageXY\AtPageLowerLeft{% + \hspace{\dimexpr\Trim@Left+\@TrimWidth+0.125in}% + \rule[0.5\paperheight+0.5\@TrimHeight]{0.25in-0.125in}{0.25bp}}} + % H bottom right: + \AddToShipoutPictureBG{\@getPageXY\AtPageLowerLeft{% + \hspace{\dimexpr\Trim@Left+\@TrimWidth+0.125in}% + \rule[\Trim@Bottom-0.25bp]{0.25in-0.125in}{0.25bp}}} + % V top left: + \AddToShipoutPictureBG{\@getPageXY\AtPageLowerLeft{% + \hspace{\dimexpr\Trim@Left-0.25bp}% + \rule[0.5\paperheight+0.5\@TrimHeight+0.125in]% + {0.25bp}{0.25in-0.125in}}} + % V bottom left: + \AddToShipoutPictureBG{\@getPageXY\AtPageLowerLeft{% + \hspace{\dimexpr\Trim@Left-0.25bp}% + \rule[\Trim@Bottom-0.25in]{0.25bp}{0.25in-0.125in}}} + % V top right: + \AddToShipoutPictureBG{\@getPageXY\AtPageLowerLeft{% + \hspace{\dimexpr\Trim@Left+\@TrimWidth}% + \rule[0.5\paperheight+0.5\@TrimHeight+0.125in]% + {0.25bp}{0.25in-0.125in}}} + % V bottom right: + \AddToShipoutPictureBG{\@getPageXY\AtPageLowerLeft{% + \hspace{\dimexpr\Trim@Left+\@TrimWidth}% + \rule[\Trim@Bottom-0.25in]{0.25bp}{0.25in-0.125in}}} +\fi +% +%% end cropmarks + + + +%% +\endinput +%% +%% End of file `novel-PostLayout.sty'. + + diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-Sandbox.sty b/Master/texmf-dist/tex/lualatex/novel/novel-Sandbox.sty new file mode 100644 index 00000000000..16f888ea51d --- /dev/null +++ b/Master/texmf-dist/tex/lualatex/novel/novel-Sandbox.sty @@ -0,0 +1,143 @@ +%% +%% This is file `novel-Sandbox.sty', part of `novel' document class. +%% Copyright 2017-2018 Robert Allgeyer. +%% +%% Material extracted from `article.cls', a LaTeX document class. +%% Copyright 1993-2016 +%% The LaTeX3 Project and any individual authors listed elsewhere +%% in this file. +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% +\ProvidesFile{novel-Sandbox.sty}% +[2018/03/28 v1.50 LaTeX file (used only with sandbox class option)] +%% + +%% +%% This file is only loaded when the `sandbox' document class is used. +%% It provides support for tables, and a few other things that ordinarily +%% would be prohibited in `novel' due to possible layout incompatibility. +%% + + + + + + +\setlength\leftmargini {2.5em} +\leftmargin \leftmargini +\setlength\leftmarginii {2.2em} +\setlength\leftmarginiii {1.87em} +\setlength\leftmarginiv {1.7em} +\setlength\leftmarginv {1em} +\setlength\leftmarginvi {1em} +\setlength \labelsep {.5em} +\setlength \labelwidth{\leftmargini} +\addtolength\labelwidth{-\labelsep} +\@beginparpenalty -\@lowpenalty +\@endparpenalty -\@lowpenalty +\@itempenalty -\@lowpenalty +\renewcommand\theenumi{\@arabic\c@enumi} +\renewcommand\theenumii{\@alph\c@enumii} +\renewcommand\theenumiii{\@roman\c@enumiii} +\renewcommand\theenumiv{\@Alph\c@enumiv} +\newcommand\labelenumi{\theenumi.} +\newcommand\labelenumii{(\theenumii)} +\newcommand\labelenumiii{\theenumiii.} +\newcommand\labelenumiv{\theenumiv.} +\renewcommand\p@enumii{\theenumi} +\renewcommand\p@enumiii{\theenumi(\theenumii)} +\renewcommand\p@enumiv{\p@enumiii\theenumiii} +\newcommand\labelitemi{\textbullet} +\newcommand\labelitemii{\normalfont\bfseries \textendash} +\newcommand\labelitemiii{\textasteriskcentered} +\newcommand\labelitemiv{\textperiodcentered} +\newenvironment{description} + {\list{}{\labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\descriptionlabel}} + {\endlist} +\newcommand*\descriptionlabel[1]{\hspace\labelsep + \normalfont\bfseries #1} + + + +\setlength\tabcolsep{6pt} +\setlength\arrayrulewidth{.4pt} +\setlength\doublerulesep{2pt} +\setlength\tabbingsep{\labelsep} + + +\newcounter{figure} +\renewcommand \thefigure {\@arabic\c@figure} +\def\fps@figure{tbp} +\def\ftype@figure{1} +\def\ext@figure{lof} +\def\fnum@figure{\figurename\nobreakspace\thefigure} + +\newenvironment{figure} + {\@float{figure}} + {\end@float} +\newenvironment{figure*} + {\@float{figure}} + {\end@float} + + + +\newcounter{table} +\renewcommand\thetable{\@arabic\c@table} +\def\fps@table{tbp} +\def\ftype@table{2} +\def\ext@table{lot} +\def\fnum@table{\tablename\nobreakspace\thetable} + +\newenvironment{table} + {\@float{table}} + {\end@float} +\newenvironment{table*} + {\@float{table}} + {\end@float} + + + +\newlength\abovecaptionskip +\newlength\belowcaptionskip + +\setlength\abovecaptionskip{\nbs} + +\setlength\belowcaptionskip{0pt} + +\long\def\@makecaption#1#2{% + \vskip\abovecaptionskip + \sbox\@tempboxa{#1: #2}% + \ifdim \wd\@tempboxa >\hsize + #1: #2\par + \else + \global \@minipagefalse + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} + + + + + + + +\def\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year} + + + +\endinput + +%% end of file `novel-Sandbox.sty'. + diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-TextMacros.sty b/Master/texmf-dist/tex/lualatex/novel/novel-TextMacros.sty index 32f874c2348..90d92edba5e 100644 --- a/Master/texmf-dist/tex/lualatex/novel/novel-TextMacros.sty +++ b/Master/texmf-dist/tex/lualatex/novel/novel-TextMacros.sty @@ -1,6 +1,6 @@ %% -%% This is file `novel-TextMacros.sty', part of class `novel'. -%% Copyright 2017 Robert Allgeyer. +%% This is file `novel-TextMacros.sty', part of `novel' document class. +%% Copyright 2017-2018 Robert Allgeyer. %% %% %% This file may be distributed and/or modified under the @@ -13,156 +13,170 @@ %% %% \ProvidesFile{novel-TextMacros.sty}% -[2018/01/14 v1.46.2 LaTeX file (text macros usable within document body)] +[2018/03/28 v1.50 LaTeX file (text macros usable within document body)] %% -%% This file contains various commands that are usable within the document body, -%% for styling and otherwise manipulating text. +%% This file contains various commands usable within the document body, +%% for styling and otherwise manipulating text. %% These are not commands used in Preamble for setup, although a few of them -%% can be used in Preamble for setup, then again in body for change. +%% can be used in Preamble for setup, then again in body for change. + %% The following commands are BANNED. -%% ----------------------------------------------------------------------------- +%% ---------------------------------------------------------------------------- % The `novel' class disallows these commands, or neutralizes them by simply -% repeating their arguments. In some cases, they request functionality that is -% not implemented in `novel'. In other cases, the functionality is part of core, -% but would interfere with the `novel' emphasis on constant line skip. -% You may re-define the commands using your own code in Preamble (discouraged). +% repeating their arguments. In some cases, they request functionality +% not implemented in `novel'. In other cases, the function is part of core, +% but would interfere with the `novel' emphasis on constant line skip. +% You may re-define the commands via your own code in Preamble (discouraged). % %% Standard LaTeX font sizes are ineffective. Use novel's own methods. % If you write one of these size commands, it will silently be ignored: -% \small, \footnotesize, \scriptsize, \tiny, -% \large, \Large, \LARGE, \huge, \Huge, \HUGE. +% \small, \footnotesize, \scriptsize, \tiny, +% \ large, \Large, \LARGE, \huge, \Huge, \HUGE, \textls % %% Internal subdivisions are ineffective. % The command will merely echo its argument, without any functionality: -% \part{}, \chapter{}, \section{}, \subsection{}, \subsubsection{}, \paragraph{}, \subparagraph{} +% \part, \chapter, \section, \subsection, \subsubsection, +% \paragraph, \subparagraph. % -%% Certain commands will generate an error, so that you know they cannot be used: -% \maketitle, \makeindex, \tableofcontents, \listoftables, \listoffigures, \textls +%% Some commands will generate an error, so that you know they cannot be used: +% \maketitle, \makeindex, \tableofcontents, \listoftables, \listoffigures, % -%% You cannot use \includepdf (package: pdfpages). +%% You can only use \includepdf (package: pdfpages) for pdf files pre-processed +%% by novel-scripts. % %% You cannot use \includegraphics. Instead use novel's own image commands. % -%% Commands normally provided in other classes, pertaining to floats, figures, and tables, -%% are not defined in `novel' class. If you attempt to use them, an error will result. - +%% Commands normally provided in other classes, pertaining to floats, figures, +% and tables, are not defined in `novel' class. +% If you attempt to use them, an error will result. +%% %% AND NOW TO THE GOOD STUFF -%% ----------------------------------------------------------------------------- -% +%% ---------------------------------------------------------------------------- + +%% +% New in version 1.38, \straightquote and \straightdblquote: +\gdef\straightquote{{\addfontfeature{Ligatures=ResetAll}'}} +\gdef\straightdblquote{{\addfontfeature{Ligatures=ResetAll}"}} +%% + +%% Acronyms often look too big in regular capitals, but too small in +% small caps. Command \midcase{} provides an intermediate size: +\gdef\midcase#1{% + \if@HasDecoFont% + {\decofont{#1}}% + \else% + #1% simply echo the argument, if no decofont + \fi% +}% +%% + +%% Deco glyphs are decorative elements chosen from the decofont by code. +% They are documented in file NovelDeco-glyphs.pdf, in the `extras' folder. +\gdef\decoglyph#1{% + \if@HasDecoFont% + \IfBeginWith{#1}{n}{% normal weight symbol (same as regular) + \StrBehind{#1}{n}[\@tempdecoglyph]{\@decoglyph\symbol{\@tempdecoglyph}}% + }{}% + \IfBeginWith{#1}{r}{% regular weight symbol + \StrBehind{#1}{r}[\@tempdecoglyph]{\@decoglyph\symbol{\@tempdecoglyph}}% + }{}% + \IfBeginWith{#1}{l}{% light weight symbol + \StrBehind{#1}{l}[\@tempdecoglyph]{\@decoglypha\symbol{\@tempdecoglyph}}% + }{}% + \IfBeginWith{#1}{e}{% extra light weight symbol + \StrBehind{#1}{e}[\@tempdecoglyph]{\@decoglyphb\symbol{\@tempdecoglyph}}% + }{}% + \IfBeginWith{#1}{t}{% thin weight symbol + \StrBehind{#1}{t}[\@tempdecoglyph]{\@decoglyphc\symbol{\@tempdecoglyph}}% + }{}% + \else% + ~% non-breaking space, if no decofont + \fi% +}% +%% + %% \memo{} does not print or save its argument. % Useful when you wish to put a note to yourself in the *.tex document. % Not the same as % comment, because anything after the braces will print. \long\gdef\memo#1{} -% -\gdef\stake{\rule{0pt}{1pt}} % placeholder -% -% \forceindent and \backindent perform or remove indent, using \hspace{}. -% Rationale: Sometimes \indent and \noindent are neutralized by another command. -\newlength\forceparlength % holds default value, even when \parindent changed - -% See novel.cls for accompanying AtBeginDocument routine. +%% +%% \stake is like \strut, but does not occupy uch vertical space. +\gdef\stake{\rule{0pt}{1pt}} % placeholder %% -% \smcp{} and \textsc{} small caps (Open Type) and \allsmcp{}: -% + +%% \smcp{} and \textsc{} small caps (Open Type) and \allsmcp{}: \ExplSyntaxOn -% -\DeclareDocumentCommand \smcp { +m } - {% +\DeclareDocumentCommand \smcp { +m } {% lowercase to small caps {\addfontfeature{Letters=SmallCaps}#1}% - } -% -\DeclareDocumentCommand \allsmcp { +m } - {% +} +\DeclareDocumentCommand \allsmcp { +m } {% lowercase+uppercase to small caps \fontspec_if_feature:nTF {c2sc}{% {\addfontfeatures{Letters=UppercaseSmallCaps, Letters=SmallCaps}#1}% }{% {\addfontfeature{Letters=SmallCaps}\MakeLowercase{#1}}% }% } -% \ExplSyntaxOff -% \let\textsc\smcp\relax % unified \let\oldscshape\scshape\relax % in case needed later \let\scshape\smcp\relax % unified -% \providecommand\FirstLineFont{\smcp} % package `magaz' \renewcommand\FirstLineFont{\smcp} %% -%% The `novel' class normally allows only black text on white paper. +%% `novel' class normally allows only black or grayscale text on white paper. %% In draft mode, option `shademargins` provides light gray margins, %% but still black text on white paper. -%% However, with option `graytext' (in any mode) then grayscale text -%% is allowed. Images are always allowed grayscale. %% Just in case `xcolor' re-defines its internals, to prevent code bomb: \ProvideDocumentCommand\@declaredcolor { m } {} \ProvideDocumentCommand\@undeclaredcolor { o m } {} +% For convenience: +\definecolor[named]{gray1}{gray}{0.15} % ten percent gray, etc. +\definecolor[named]{gray2}{gray}{0.25} +\definecolor[named]{gray3}{gray}{0.33} +\definecolor[named]{gray4}{gray}{0.4} +\definecolor[named]{gray5}{gray}{0.5} +\definecolor[named]{gray6}{gray}{0.6} +\definecolor[named]{gray7}{gray}{0.68} +\definecolor[named]{gray8}{gray}{0.75} +\definecolor[named]{gray9}{gray}{0.87} %% -\if@graytext % and the usual colors, including black and white. - \definecolor[named]{gray1}{gray}{0.15} % ten percent gray, etc. - \definecolor[named]{gray2}{gray}{0.25} - \definecolor[named]{gray3}{gray}{0.33} - \definecolor[named]{gray4}{gray}{0.4} - \definecolor[named]{gray5}{gray}{0.5} - \definecolor[named]{gray6}{gray}{0.6} - \definecolor[named]{gray7}{gray}{0.68} - \definecolor[named]{gray8}{gray}{0.75} - \definecolor[named]{gray9}{gray}{0.87} -\else - \let\my@color\color\relax - \let\color\relax - \DeclareDocumentCommand \color { o m } - {% - \ifthenelse{\equal{#1}{gray} \AND \equal{#2}{0.903215}}{\@undeclaredcolor[gray]{0.903215}}{}% shademargins - \ifthenelse{\equal{#2}{hingledingle}}{\@declaredcolor{white}}{}% hingledingle is internal alias for white - } -\fi -%% - - % This code is slightly modified from package `etextools' by Florent Chervet. % Its license: "This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 of this % license or (at your option) any later version." % My rationale for not simply loading the package: Other parts of the package -% generate warning messages, but the warnings do not apply. Also, I might -% wish to hack the code at some point. +% generate warning messages, but the warnings do not apply in `novel' +% Also, I might wish to hack the code at some point. \newcount\nov@ettl@fter \newrobustcmd\nov@AfterGroup{% \@ifstar{\nov@ettl@AfterGroup\@firstofone}{\nov@ettl@AfterGroup\unexpanded}% } \newrobustcmd\nov@ettl@AfterGroup[2]{% - \csxdef{nov@ettl@fterGroup\number\numexpr\the\nov@ettl@fter+1}% - {\global\csundef{nov@ettl@fterGroup\number\numexpr\the\nov@ettl@fter+1}#1{#2}}% - \global\advance\nov@ettl@fter\@ne% - \expandafter\aftergroup\csname nov@ettl@fterGroup\the\nov@ettl@fter\endcsname% +\csxdef{nov@ettl@fterGroup\number\numexpr\the\nov@ettl@fter+1}% +{\global\csundef{nov@ettl@fterGroup\number\numexpr\the\nov@ettl@fter+1}#1{#2}}% +\global\advance\nov@ettl@fter\@ne% +\expandafter\aftergroup\csname nov@ettl@fterGroup\the\nov@ettl@fter\endcsname% } -% End code from `etextools`. - - - +%% End code from `etextools`. %% \flexbox based on code by Werner at tex.stackexchange.com, CC-by-sa-3.0: % Optional first argument is minimum width of box. % Second argument is contents of box. % Box width will be the greater of #1 or the width of #2. -\newlength\@mylen \newcommand{\flexbox}[2][\parindent]{% - \settowidth{\@mylen}{#2}% - \ifdim\@mylen < #1% - \makebox[#1][l]{#2}% - \else% - #2% - \fi% + \settowidth{\@tempLength}{#2}% + \ifdimcomp{\@tempLength}{<}{#1}{\makebox[#1][l]{#2}}{#2}% } +%% + %% \bigemdash inspired by code by RTBarnard at stackoverflow.com, CC-by-sa-3.0: % Allows a rule of variable length to fill available space at its right. % There must be a "right-hand limit" imposed by something, such as by enclosing @@ -172,25 +186,30 @@ % Takes a single optional argument: Comma-separated raise, line thickness. % If no argument or empty, defaults to [1,1]. % Without comma, argument defaults to [argument,1]. -% First number: Scales the raise up or down. 1 = raise of emdash in typical fonts. -% Second number: Scales the line thickness. 1 = thickness of emdash in typical fonts. +% First number: Scales raise/down. 1 = raise of emdash in typical fonts. +% Second number: Scales line thickness. 1 = emdash in typical fonts. % NOTE: Built-in TeX PDF viewer might show the line at slightly incorrect % width and height. Best seen in a "real" PDF viewer. \DeclareDocumentCommand \bigemdash { O{1,1} } {% - \ifthenelse{\equal{#1}{}\OR\equal{#1}{\space}}{\def\@myargsi{1,1}}{\def\@myargsi{#1}}% + \ifthenelse{\equal{#1}{}\OR\equal{#1}{\space}}{% + \def\@myargsi{1,1}}{\def\@myargsi{#1}% + }% \StrDel{\@myargsi}{\space}[\@myargs]% \StrCut{\@myargs}{,}{\@myraisei}{\@mythicki}% - \ifthenelse{\equal{\@myraisei}{}\OR\equal{\@myraisei}{\space}}{\def\@myraise{1}}{\def\@myraise{\@myraisei}}% - \ifthenelse{\equal{\@mythicki}{}\OR\equal{\@mythicki}{\space}}{\def\@mythick{1}}{\def\@mythick{\@mythicki}}% + \ifthenelse{\equal{\@myraisei}{}\OR\equal{\@myraisei}{\space}}{% + \def\@myraise{1}}{\def\@myraise{\@myraisei}% + }% + \ifthenelse{\equal{\@mythicki}{}\OR\equal{\@mythicki}{\space}}{% + \def\@mythick{1}}{\def\@mythick{\@mythicki}% + }% \FPmul{\@myraise}{\@myraise}{0.56}% ex, typical font emdash raise \FPmul{\@mythick}{\@mythick}{0.049}% em, typical font emdash thickness {\leaders\hbox{\rule[\@myraise ex]{1pt}{\@mythick em}}\hfill\stake}% } %% -%% -% \charscale[scale,x,y]{text} and starred version +%% \charscale[scale,x,y]{text} and starred version % This is an "in-line" means of adjusting font size % and position, without changing the baselineskip. % If the optional argument is unused or empty, then the text is not scaled @@ -200,46 +219,63 @@ % First argument is scale. Number>=0.5. Default 1. Relative to what the size % would otherwise be. May multiply with an already-scaled font. % Second and third arguments are x-offset and y-offset, respectively. -% Offsets are lengths, best measured in em or \nfs for x, -% and em or \nfs or \nbs for y. Default 0pt. Can abbreviate as 0. -% Posiive offsets are x right, y up. +% Offsets are lengths, best measured in em or \nfs for horizontal, +% and em or \nfs or \nbs for vertical. Default 0pt. Can abbreviate as 0. +% Posiive offsets are horizontal right, vertical up. % Text is "smashed" and may go anywhere, even overlying other text or image. % The unstarred command occupies width equal to the scaled text, % thus leaving a "hole" where the text would have been. % The starred command occupies zero width, thus no hole. Consecutive starred % commands, without intervening space, displace from same origin. % The text must be on a single line, without break or wrap. -% Do not use \\ or \par inside \charscale, but you sometimes need \par after it. +% Do not use \\ or \par inside \charscale. Sometimes you need \par after it. % If the text is in a font other than usual, place the font command % outside \charscale, not inside. \ExplSyntaxOn -\DeclareDocumentCommand \charscale { s O{1} m } - { +\DeclareDocumentCommand \charscale { s O{1} m } {% % Allows empty or blank to be used, and still provide default values: - \ifthenelse{\equal{#2}{}\OR\equal{#2}{\space}}{\def\@myargs{1}}{\def\@myargs{#2}} - \StrDel{\@myargs}{\space}[\@myargsns] % needs {\space} not { } - \StrCut{\@myargsns}{,}{\@myscalet}{\@mycoord} - \ifthenelse{\equal{\@myscalet}{}}{\def\@myscale{1}}{\def\@myscale{\@myscalet}} + \ifthenelse{\equal{#2}{}\OR\equal{#2}{\space}}{% + \def\@myargs{1}% + }{% + \def\@myargs{#2}% + }% + \StrDel{\@myargs}{\space}[\@myargsns]% needs {\space} not { } + \StrCut{\@myargsns}{,}{\@myscalet}{\@mycoord}% + \ifthenelse{\equal{\@myscalet}{}}{% + \def\@myscale{1}% + }{% + \def\@myscale{\@myscalet}% + }% \FPmax{\@myscale}{\@myscale}{0.5}% not permitted below this scale - \StrCut{\@mycoord}{,}{\@myxt}{\@myyt} - \ifthenelse{\equal{\@myxt}{}\OR\equal{\@myxt}{0}}{\def\@myx{0pt}}{\def\@myx{\@myxt}} - \ifthenelse{\equal{\@myyt}{}\OR\equal{\@myyt}{0}}{\def\@myy{0pt}}{\def\@myy{\@myyt}} - \IfBooleanTF{#1} + \StrCut{\@mycoord}{,}{\@myxt}{\@myyt}% + \ifthenelse{\equal{\@myxt}{}\OR\equal{\@myxt}{0}}{% + \def\@myx{0pt}% + }{% + \def\@myx{\@myxt}% + }% + \ifthenelse{\equal{\@myyt}{}\OR\equal{\@myyt}{0}}{% + \def\@myy{0pt}% + }{% + \def\@myy{\@myyt}% + }% + \IfBooleanTF{#1}% {% starred \ifvmode\else\unskip\fi% - \stake\makebox[0pt][l]{\smash{\hspace{\@myx}\raisebox{\@myy}{\scalebox{\@myscale}{#3}}}}% + \stake\makebox[0pt][l]{% + \smash{\hspace{\@myx}\raisebox{\@myy}{\scalebox{\@myscale}{#3}}}% + }% }{% unstarred - \stake\makebox[0pt][l]{\smash{\hspace{\@myx}\raisebox{\@myy}{\scalebox{\@myscale}{#3}}}}% + \stake\makebox[0pt][l]{% + \smash{\hspace{\@myx}\raisebox{\@myy}{\scalebox{\@myscale}{#3}}}% + }% \smash{\phantom{\scalebox{\@myscale}{#3}}}% - } - } + }% + }% end \charscale \ExplSyntaxOff %% - - -%% -% If you really must change the font size and baselineskip on a paragraph basis, +%% Environment parascale. +% If you really must change font size and baselineskip on a paragraph basis, % then use an environment. For example, the text on your Copyright page might % be smaller (and less baselineskip) than normal. % The following environment takes an optional argument, which is the scale @@ -259,16 +295,17 @@ % do the calculations yourself. \newenvironment{parascale}[1][1] {\begingroup% -\FPmax{\my@tempDetailsNum}{#1}{0.5}% must be at least half normal. -\FPmul{\my@tempDetailsFontNum}{\my@tempDetailsNum}{\Current@FontSizeNum}% -\FPround{\my@tempDetailsFontNum}{\my@tempDetailsFontNum}{2}% -\FPmul{\my@tempDetailsSkipNum}{\my@tempDetailsNum}{\Current@BaselineSkipNum}% -\FPround{\my@tempDetailsSkipNum}{\my@tempDetailsSkipNum}{2}% -\fontsize{\my@tempDetailsFontNum pt}{\my@tempDetailsSkipNum pt}\selectfont}% +\FPmax{\@mytempDetailsN}{#1}{0.5}% must be at least half normal. +\FPmul{\@mytempDetailsFontN}{\@mytempDetailsN}{\strip@pt\@SetFontSize}% +\FPround{\@mytempDetailsFontN}{\@mytempDetailsFontN}{2}% +\FPmul{\@mytempDetailsSkipN}{\@mytempDetailsN}{\strip@pt\baselineskip}% +\FPround{\@mytempDetailsSkipN}{\@mytempDetailsSkipN}{2}% +\fontsize{\@mytempDetailsFontN pt}{\@mytempDetailsSkipN pt}\selectfont% +}% {\endgroup} -% %% -% Environment toc (alternative table of contents): + +%% Environment toc (alternative table of contents): % optional argument: additional vspace (\nbs) after each \tocitem entry. % required: LR margin increase, to narrow the table (0pt = full textwidth). \newlength\@tocnumwid @@ -276,14 +313,15 @@ \newenvironment{toc}[2][0]% {% \begin{adjustwidth}{#2}{#2}% - \begingroup% lengths not global - \setlength\parindent{0pt}% - \setlength\@tocnumwid{\widthof{00.~}}% - \setlength\@tocskip{#1\nbs}% + \begingroup% + \setlength\parindent{0pt}% local + \setlength\@tocnumwid{\widthof{00.~}}% local + \setlength\@tocskip{#1\nbs}% local }{% - \endgroup\end{adjustwidth}\par% + \endgroup% + \end{adjustwidth}\par% }% -%% \tocitem[number]{description}{page} provides a one-line table entry in toc. +% \tocitem[number]{description}{page} provides a one-line table entry in toc. % optional number might be chapter number. Can use ~ to offset. % unstarred: distance between description and page is not decorated. % starred (better): distance between description and page has dotted line. @@ -297,7 +335,8 @@ }% }% #2\,% - \dotfill% + %%%%%\dotfill% + \leaders\hbox to 0.3em{\hfil.\hfil}\hfill% Thanks to user daniel-j via GitHub. \,#3\par\vspace{\@tocskip}% }% % @@ -314,7 +353,7 @@ #3\par\vspace{\@tocskip}% }% %% end toc and \tocitem. -%% + %% legalese environment. Certain info, such as Copyright page, customarily is % neither justified nor hyphenated. Can be used wherever desired, of course. \newenvironment{legalese} @@ -322,145 +361,161 @@ {} % \gdef\hangleft#1{% places content to left of usual position. - \newlength\@temphangl% - \setlength\@temphangl{\widthof{#1}}% - \stake\hspace{-\@temphangl}#1% + \setlength\@tempLength{\widthof{#1}}% local + \stake\hspace{-\@tempLength}#1% } %% -% \showlength[decimal places]{length}{units} -% Returns the length as a string with the units, but does not change the length. + +%% \showlength[decimal places]{length}{units} +% Returns length as a string with the units, but does not change the length. % length is any existing length % units may be pt, bp, mm, cm, in % decimal places for rounding (0=integer, 1=one decimal point, etc.) % Example: \showlength[3]{17bp}{in} returns 0.236in -\newlength{\temp@showlength} \newcommand\showlength[3][]{% - \setlength\temp@showlength{#2}% - \def\temp@lengthnum{\strip@pt\temp@showlength}% + \setlength\@tempLength{#2}% + \def\@tempLengthN{\strip@pt\@tempLength}% \ifthenelse{\equal{#3}{bp}}{% - \FPmul{\temp@lengthnum}{\temp@lengthnum}{0.99626401}% + \FPmul{\@tempLengthN}{\@tempLengthN}{0.99626401}% }{}% \ifthenelse{\equal{#3}{mm}}{% - \FPmul{\temp@lengthnum}{\temp@lengthnum}{0.351459804}% + \FPmul{\@tempLengthN}{\@tempLengthN}{0.351459804}% }{}% \ifthenelse{\equal{#3}{cm}}{% - \FPmul{\temp@lengthnum}{\temp@lengthnum}{0.0351459804}% + \FPmul{\@tempLengthN}{\@tempLengthN}{0.0351459804}% }{}% \ifthenelse{\equal{#3}{in}}{% - \FPmul{\temp@lengthnum}{\temp@lengthnum}{0.013837}% + \FPmul{\@tempLengthN}{\@tempLengthN}{0.013837}% }{}% - \ifthenelse{\equal{#1}{}}{}{\FPround{\temp@lengthnum}{\temp@lengthnum}{#1}}% - \temp@lengthnum#3% + \ifthenelse{\equal{#1}{}}{}{\FPround{\@tempLengthN}{\@tempLengthN}{#1}}% + \@tempLengthN{#3}% } %% end \showlength - -%% \squeeze{} and \crush{} slightly shrink the horizonal dimension of the -% enclosed text. May span paragraphs. Emergency only! No compounding. -\long\gdef\squeeze#1{{\addfontfeature{FakeStretch=0.99}#1}} -\long\gdef\crush#1{{\addfontfeature{FakeStretch=0.98}#1}} -%% - - %% \lnum for lining numbers. \gdef\lnum#1{{\addfontfeature{Numbers=Lining}#1}} %% - -%% superscripts and subscripts -\let\subs\relax -\let\sups\relax -\let\textsuperscript\relax -\let\textsubscript\relax -\newlength\@hoAhl % measured when needed. -% Perhaps superscripts and subscripts (scientific) are in the font, or not. -% Problem: The best fonts have these characters at size/weight designed -% to mingle with normal size. But many fonts merely scaled characters, -% which will be too light at the small size. -% The unstarred version of these commands use the Open Type features when -% they are present, then faking (auto scale/raise) if features not present. -% The starred version just fakes, without regard for features. -% - -% Note that the effect of these commands continues, not just one-shot: -\gdef\realmarker{\toggletrue{@realmarker}} % anywhere in text -\gdef\fakemarker{\togglefalse{@realmarker}} % anywhere in text -%% -\ExplSyntaxOn -% -\DeclareDocumentCommand \sups { m } - {% - \iftoggle{@realmarker}{% - \fontspec_if_feature:nTF {sups}{% - \ifvmode\else\unskip\fi{\addfontfeature{VerticalPosition=Superior}\smash{#1}}% - }{% - \setlength\@hoAhl{\heightof{Ahl}}% - \ifvmode\else\unskip\fi\charscale[0.7,0pt,0.5\@hoAhl]{#1}% - }% - }{% - \setlength\@hoAhl{\heightof{Ahl}}% - \ifvmode\else\unskip\fi{\addfontfeature{Numbers=Lining}\charscale[0.7,0pt,0.5\@hoAhl]{#1}}% - }% - }% end \sups -% -\DeclareDocumentCommand \subs { m } - {% - \iftoggle{@realmarker}{% - \fontspec_if_feature:nTF {sinf}{% - \ifvmode\else\unskip\fi{\addfontfeature{VerticalPosition=ScientificInferior}\smash{#1}}% - }{% - \fontspec_if_feature:nTF {subs}{% - \ifvmode\else\unskip\fi{\addfontfeature{VerticalPosition=Inferior}\smash{#1}}% - }{% - \setlength\@hoAhl{\heightof{Ahl}}% - \ifvmode\else\unskip\fi\charscale[0.7,0pt,-0.2\@hoAhl]{#1}% - }% - }% - }{% - \setlength\@hoAhl{\heightof{Ahl}}% - \ifvmode\else\unskip\fi{\addfontfeature{Numbers=Lining}\charscale[0.7,0pt,-0.2\@hoAhl]{#1}}% - }% - }% end \subs -% -\cs_new_eq:NN \textsuperscript \sups -\cs_new_eq:NN \textsubscript \subs -\ExplSyntaxOff -%% -\gdef\specialblankline{\null} % deprecated -%% - - -%% New in v. 1.46: Allows text to be placed (potentially) off-grid, with grid resuming after. -\newcounter{currentlinegap} % 0 when not within a linegap environment, >0 otherwise. -\ExplSyntaxOn +%% Environment linegap. +% Allows text to be placed (potentially) off-grid, with grid resuming after. +\newif \if@WithinLinegap % true within linegap environment +\newcounter{currentlinegap} % 0 when not within linegap, >0 otherwise. +\ExplSyntaxOn % absorbs line returns here: \DeclareDocumentEnvironment {linegap} { m } {% - \FPifint{#1}\else% + \FPifint{#1}\else \ClassError{novel}{Non-integer~linegap~on~page~\thepage}% {Only~integer~>=~1~allowed~for~linegap.}% - \fi% - \FPiflt{#1}{1}% + \fi + \FPiflt{#1}{1} \ClassError{novel}{Insufficient~linegap~on~page~\thepage}% {Only~integer~>=~1~allowed~for~linegap.}% - \fi% - \par% - \null% - \vspace*{-\nbs}% - \begin{textblock*}{\textwidth}[0,0](0pt,0pt)% - \setcounter{currentlinegap}{#1}% - \strut\par% - \vspace*{-\nbs}% + \fi + \par + \null + \vspace*{-\nbs} + \global\@WithinLinegaptrue + \begin{textblock*}{\textwidth}[0,0](0pt,0pt) + \setcounter{currentlinegap}{#1} + \strut\par + \vspace*{-\nbs} }{% close the environment: - \end{textblock*}% - \par% - \vspace*{#1\nbs}% - \setcounter{currentlinegap}{0}% -} -\ExplSyntaxOff % end linegap environment + \end{textblock*} + \global\@WithinLinegapfalse + \par + \vspace*{#1\nbs} + \setcounter{currentlinegap}{0} +} % +\ExplSyntaxOff +%% + + +%% New in version 1.50: two columns, cannot cross page break. +%% \sidebyside[a,b,c,d]{column 1 content}{column 2 content} % a,b,c,d lengths +% a = left margin to left edge of left column (left indent) +% b = left margin to right edge of left column ( = a + column width) +% c = left margin to left edge of right column ( = a + b + gap) +% d = left margin to right edge of right column ( = textwidth - right indent) +% Thus 0pt <= a < b < c < d <= \textwidth. +% Default: no indents, equal column widths, separated by \normalparindent. +\DeclareDocumentCommand\sidebyside { O{} +m +m } {% no ExplSyntax, no more %: + \StrDel{#1}{\space}[\@argsns] + \StrCut{\@argsns}{,}{\@argsone}{\@argsothera} + \StrCut{\@argsothera}{,}{\@argstwo}{\@argsotherb} + \StrCut{\@argsotherb}{,}{\@argsthree}{\@argsfour} + \ifthenelse{\equal{\@argsone}{}}{% + \def\@sbsll{0pt} + }{% + \def\@sbsll{\@argsone} + }% + \setlength\@tempLength{0.5\textwidth-0.5\normalparindent} + \ifthenelse{\equal{\@argstwo}{}}{% + \edef\@sbslr{\the\@tempLength} + }{% + \edef\@sbslr{\@argstwo} + }% + \setlength\@tempLength{0.5\textwidth+0.5\normalparindent} + \ifthenelse{\equal{\@argsthree}{}}{% + \edef\@sbsrl{\the\@tempLength} + }{% + \edef\@sbsrl{\@argsthree} + }% + \ifthenelse{\equal{\@argsfour}{}}{% + \edef\@sbsrr{\the\textwidth} + }{% + \edef\@sbsrr{\@argsfour} + }% + \null\vspace{-\baselineskip} + \begin{adjustwidth}{\@sbsll}{\dimexpr\textwidth-\@sbsrr} + \noindent\begin{minipage}[t]{\dimexpr\@sbslr-\@sbsll} + \strut #2\strut + \end{minipage}\hspace{\normalparindent}\begin{minipage}[t]{\dimexpr\@sbsrr-\@sbsrl} + \strut #3\strut + \end{minipage} + \end{adjustwidth} + \null\vspace{-\baselineskip} +} % +%% end \sidebyside + + + +%% Some things must wait until after layout calculations: +\gdef\@ActivateTextLengths{% called by `novel.cls' \AtEndPreamble + % Store some normal values (main font) for global use in document body: + \newlength\nfs % abbreviation for normal font point size + \gsetlength\nfs{\@SetFontSize} + \newlength\nbs % abbreviation for normal baselineskip + \gsetlength\nbs{\baselineskip} + \gsetlength\parindent{1.5em} % may be locally changed + \newlength\normalparindent + \gsetlength\normalparindent{\parindent} + \newlength\normalxheight % height of lowercase x + \gsetlength\normalxheight{\heightof{x}} + \newlength\normalXheight % height of uppercase X + \gsetlength\normalXheight{\heightof{X}} + \newlength\normalscxheight % height of small cap x + \gsetlength\normalscxheight{\heightof{\textsc{x}}} + \newlength\normalAringheight % height of Å (usually tallest in Latin-1) + \gsetlength\normalAringheight{\heightof{Å}} + \newlength\normaldescender % depth of lowercase gjpqy + \gsetlength\normaldescender{\depthof{gjpqy}} + \newlength\@NovelCaulk % fills gaps that would cause underfull vbox + \gsetlength{\@NovelCaulk}{0pt plus 0.999\nbs minus 1pt} +}% end \@ActivateTextLengths %% +%% More things that must wait: +\gdef\@ActivateTextMacros{% called by `novel.cls' \AtBeginDocument + % \forceindent and \backindent perform or remove indent, using \hspace{}. + % Rationale: Sometimes \indent and \noindent neutralized by another command. + \gdef\forceindent{\ifvmode\else\unskip\fi\stake\hspace{\normalparindent}} + \gdef\backindent{\ifvmode\else\unskip\fi\hspace{-\normalparindent}} +}% end \@ActivateTextMacros +%% %% +\endinput +%% %% End of file `novel-TextMacros.sty'. diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-microtype.cfg b/Master/texmf-dist/tex/lualatex/novel/novel-microtype.cfg index 0b3d8440ea2..d5bb8e639ff 100644 --- a/Master/texmf-dist/tex/lualatex/novel/novel-microtype.cfg +++ b/Master/texmf-dist/tex/lualatex/novel/novel-microtype.cfg @@ -1,5 +1,6 @@ %% -%% This is file `novel-microtype.cfg', modified for `novel' document class. +%% This is file `novel-microtype.cfg', part of `novel' document class. +%% Modified from file `microtype.cfg' by Robert Allgeyer, 2017-2018. %% %% Original notice from `microtype.cfg' follows. %% Same license for `novel-microtype.cfg'. @@ -17,11 +18,10 @@ %% When modifying this file, also change the identification line below. %% ------------------------------------------------------------------------ %% -\NeedsTeXFormat{LaTeX2e} \ProvidesFile{novel-microtype.cfg}% -[2018/01/14 v1.46.2 LaTeX file (microtype configuration file for novel class)] +[2018/01/14 any version. (default microtype configuration for novel class)] -%%% ----------------------------------------------------------------------- +%%% --------------------------------------------------------------------------- %%% FONT SETS \DeclareMicrotypeSet{all} @@ -51,7 +51,7 @@ \DeclareMicrotypeSet{normalfont} { font = */*/*/*/* } -%%% ----------------------------------------------------------------------- +%%% --------------------------------------------------------------------------- %%% DEFAULT SETS \DeclareMicrotypeSetDefault[protrusion]{alltext} @@ -60,7 +60,7 @@ \DeclareMicrotypeSetDefault[kerning] {alltext} \DeclareMicrotypeSetDefault[tracking] {smallcaps} -%%% ----------------------------------------------------------------------- +%%% --------------------------------------------------------------------------- %%% FONT VARIANTS AND ALIASES \DeclareMicrotypeVariants{x,j,w,a,d,0,1} @@ -68,7 +68,7 @@ \DeclareMicrotypeAlias{lmr} {Latin Modern Roman} \DeclareMicrotypeAlias{lmm} {Latin Modern Math} -%%% ----------------------------------------------------------------------- +%%% --------------------------------------------------------------------------- %%% INTERACTION WITH THE `babel' PACKAGE \DeclareMicrotypeBabelHook @@ -83,7 +83,7 @@ {turkish} {kerning=turkish, spacing=} -%%% ----------------------------------------------------------------------- +%%% --------------------------------------------------------------------------- %%% CHARACTER INHERITANCE \DeclareCharacterInheritance @@ -120,7 +120,7 @@ z = {\'z,\.z,\v z}, } -%%% ----------------------------------------------------------------------- +%%% --------------------------------------------------------------------------- %%% TRACKING/LETTERSPACING \SetTracking @@ -129,7 +129,7 @@ { encoding = * } { } -%%% ----------------------------------------------------------------------- +%%% --------------------------------------------------------------------------- %%% EXPANSION \SetExpansion @@ -166,7 +166,7 @@ -%%% ----------------------------------------------------------------------- +%%% --------------------------------------------------------------------------- %%% PROTRUSION \SetProtrusion @@ -249,3 +249,4 @@ \endinput %% %% End of file `novel-microtype.cfg'. + diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-pdfx.sty b/Master/texmf-dist/tex/lualatex/novel/novel-pdfx.sty index 524c04620a3..8c2bf9823bd 100644 --- a/Master/texmf-dist/tex/lualatex/novel/novel-pdfx.sty +++ b/Master/texmf-dist/tex/lualatex/novel/novel-pdfx.sty @@ -1,44 +1,64 @@ %% %% This is file `novel-pdfx.sty', part of `novel' document class. -%% -%% Copyright (c) 2017, Robert Allgeyer. -%% -%% This file may be distributed and/or modified under the conditions -%% of the LaTeX Project Public License, either version 1.3c of this -%% license or (at your option) any later version. The latest version -%% of this license is in: -%% +%% Copyright (c) 2017-2018 Robert Allgeyer. +%% +%% This file may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in %% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. %% -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% ----------------------------------------------------------------------------- +%% ---------------------------------------------------------------------------- %% %% File `novel-pdfx.sty' uses code, directly copied or modified, %% from file `pdfx.sty', part of LaTeX package `pdfx': Copyright (c) 2015, %% CV Radhakrishnan, Han The Thanh, Ross Moore, Peter Selinger. %% Licensed LPPL 1.2+. %% -%% ----------------------------------------------------------------------------- +%% ---------------------------------------------------------------------------- %% \NeedsTeXFormat{LaTeX2e} \ProvidesFile{novel-pdfx.sty}% -[2018/01/14 v1.46.2 LaTeX file (PDF/X support for novel class)] +[2018/03/28 v1.50 LaTeX file (PDF/X support for novel class)] % This package supports, and is part of, class `novel'. % No support for anything but LuaLaTeX. +% DO NOT ATTEMPT TO USE OUTSIDE `NOVEL' DOCUMENT CLASS. +% Reason: Other files in this class define stuff that is used here. %% %% This file is loaded \AtEndPreamble. %% - +%% Preliminary tests for cases forbidding PDF/X: +\ifdraftdoc + \global\@pdfxISofftrue +\fi +\if@sandbox + \global\@pdfxISofftrue +\fi % +\AtBeginDocument{% + \if@pdfxSEToff\else + \ifdraftdoc + \typeout{^^JClass `novel' Alert: No PDF/X in draft mode. ^^J% + Your document was processed with \string\SetPDFX\{off\}. ^^J}% + \fi + \if@sandbox + \typeout{^^JClass `novel' Alert: No PDF/X with sandbox option. ^^J% + Your document was processed with \string\SetPDFX\{off\}. ^^J}% + \fi + \fi +} % +%% + + % Hyperref options for PDF/X with LuaLaTeX: \def\pdfx@pdfX@opts@luatex{% - draft,pdftex,pdfpagemode=UseNone,bookmarks=false,hyperfootnotes=false,% + draft,pdfpagemode=UseNone,bookmarks=false,hyperfootnotes=false,% hyperindex=false,implicit=false,pdfversion=1.\the\pdfminorversion,% pdfpagelabels=true,pageanchor=false,pdfstartview=} % @@ -50,25 +70,29 @@ \fi \Hy@bookmarksfalse % -\newif \if@gottitle \@gottitlefalse % refers to PDF File Data -% Was \SetTitle{} called prior to this step? If so: -\ifthenelse{\equal{\@title}{} \OR \equal{\@title}{ }}{}{\@gottitletrue} +\ifthenelse{\equal{\@title}{} \OR \equal{\@title}{ }}{% + \global\@HasTitlefalse}{\global\@HasTitletrue% +} +\ifthenelse{\equal{\@title}{IMPORTANT: Provide Book Title}}{% + \ClassWarning{novel}{^^JDid not provide title using \string\SetTitle. ^^J% + Default used: `IMPORTANT: Provide Book Title'. Be sure to change it! ^^J}% +}{}% % % Sanity check: If title is missing at this step, then compliance must be off: -\ifpdfx@isOFF\else - \if@gottitle\else - \ClassError{novel}{PDF/X requires \string\SetTitle\space first}% +\if@pdfxISoff\else + \if@HasTitle\else + \ClassError{novel}{PDF/X requires non-empty \string\SetTitle\space}% {Unless \string\SetPDFX\space is off, must use \string\SetTitle\space ^^J% - before using \string\SetPDFX.^^J} + with non-empty title. Blank space counts as empty.}% \fi \fi % -\if@gottitle\else - \ClassWarning{novel}{Your file has been compiled without standard^^J % - PDF internal metadata, such as the title. This is allowable, and in ^^J % - some cases desirable. But in most cases it is not what you intended. ^^J % - If you want title and other metadata to be in PDF internal metadata, ^^J % - then you must place them prior to the \string\SetPDFX.^^J} +\if@HasTitle\else + \ClassWarning{novel}{^^JYour file has been compiled without standard ^^J% + PDF internal metadata, such as the title. This is allowable, and in ^^J% + some cases desirable. But in most cases it is not what you intended. ^^J% + If you want title and other metadata to be in PDF internal metadata, ^^J% + then you must place them prior to the \string\SetPDFX. ^^J} \fi % \expandafter\ifx\csname pdfresetpageorigin\endcsname\relax\else @@ -81,7 +105,7 @@ %% CALCULATE AND SPECIFY CROPBOX AND TRIMBOX -%% ----------------------------------------------------------------------------- +%% ---------------------------------------------------------------------------- %% % The MediaBox is automatically provided, so there is no need to write % MediaBox in /pdfInfo (because it would be a duplicate). @@ -90,54 +114,54 @@ % by professional PDF software. For that reason, and for proper centering % of TrimBox when MediaBox is larger, CropBox is created (= MediaBox). % -\newcommand\my@MWnum{\strip@pt\New@MediaWidth} -\FPmul{\my@MWnum}{\my@MWnum}{0.99626401} -\FPround{\my@MWnum}{\my@MWnum}{3} -\FPclip{\my@MWnum}{\my@MWnum} -\newcommand\my@MHnum{\strip@pt\New@MediaHeight} -\FPmul{\my@MHnum}{\my@MHnum}{0.99626401} -\FPround{\my@MHnum}{\my@MHnum}{3} -\FPclip{\my@MHnum}{\my@MHnum} -\newcommand\my@TWnum{\strip@pt\New@TrimWidth} -\FPmul{\my@TWnum}{\my@TWnum}{0.99626401} -\FPround{\my@TWnum}{\my@TWnum}{3} -\newcommand\my@THnum{\strip@pt\New@TrimHeight} -\FPmul{\my@THnum}{\my@THnum}{0.99626401} -\FPround{\my@THnum}{\my@THnum}{3} -% -\FPsub{\my@TWorigin}{\my@MWnum}{\my@TWnum} -\FPmul{\my@TWorigin}{\my@TWorigin}{0.5} -\FPround{\my@TWorigin}{\my@TWorigin}{3} -\FPadd{\my@TWcorner}{\my@TWorigin}{\my@TWnum} -\FPround{\my@TWcorner}{\my@TWcorner}{3} -\FPsub{\my@THorigin}{\my@MHnum}{\my@THnum} -\FPmul{\my@THorigin}{\my@THorigin}{0.5} -\FPround{\my@THorigin}{\my@THorigin}{3} -\FPadd{\my@THcorner}{\my@THorigin}{\my@THnum} -\FPround{\my@THcorner}{\my@THcorner}{3} -% -\FPclip{\my@TWorigin}{\my@TWorigin} -\FPclip{\my@TWcorner}{\my@TWcorner} -\FPclip{\my@THorigin}{\my@THorigin} -\FPclip{\my@THcorner}{\my@THcorner} +\newcommand\@myMWN{\strip@pt\paperwidth} +\FPmul{\@myMWN}{\@myMWN}{0.99626401} +\FPround{\@myMWN}{\@myMWN}{3} +\FPclip{\@myMWN}{\@myMWN} +\newcommand\@myMHN{\strip@pt\paperheight} +\FPmul{\@myMHN}{\@myMHN}{0.99626401} +\FPround{\@myMHN}{\@myMHN}{3} +\FPclip{\@myMHN}{\@myMHN} +\newcommand\@myTWN{\strip@pt\@TrimWidth} +\FPmul{\@myTWN}{\@myTWN}{0.99626401} +\FPround{\@myTWN}{\@myTWN}{3} +\newcommand\@myTHN{\strip@pt\@TrimHeight} +\FPmul{\@myTHN}{\@myTHN}{0.99626401} +\FPround{\@myTHN}{\@myTHN}{3} +% +\FPsub{\@myTWorigin}{\@myMWN}{\@myTWN} +\FPmul{\@myTWorigin}{\@myTWorigin}{0.5} +\FPround{\@myTWorigin}{\@myTWorigin}{3} +\FPadd{\@myTWcorner}{\@myTWorigin}{\@myTWN} +\FPround{\@myTWcorner}{\@myTWcorner}{3} +\FPsub{\@myTHorigin}{\@myMHN}{\@myTHN} +\FPmul{\@myTHorigin}{\@myTHorigin}{0.5} +\FPround{\@myTHorigin}{\@myTHorigin}{3} +\FPadd{\@myTHcorner}{\@myTHorigin}{\@myTHN} +\FPround{\@myTHcorner}{\@myTHcorner}{3} +% +\FPclip{\@myTWorigin}{\@myTWorigin} +\FPclip{\@myTWcorner}{\@myTWcorner} +\FPclip{\@myTHorigin}{\@myTHorigin} +\FPclip{\@myTHcorner}{\@myTHcorner} % \newcommand\novel@CropBox{% \if@cropview% - /CropBox[\my@TWorigin\space\my@THorigin\space\my@TWcorner\space\my@THcorner]% + /CropBox[\@myTWorigin\space\@myTHorigin\space\@myTWcorner\space\@myTHcorner]% \else% - /CropBox[0\space0\space\my@MWnum\space\my@MHnum]% + /CropBox[0\space0\space\@myMWN\space\@myMHN]% \fi% } % \newcommand\novel@TrimBox{% - /TrimBox[\my@TWorigin\space\my@THorigin\space\my@TWcorner\space\my@THcorner]% + /TrimBox[\@myTWorigin\space\@myTHorigin\space\@myTWcorner\space\@myTHcorner]% } % % New in version 1.2: BleedBox, only for cover art. Same size as MediaBox. \newcommand\novel@BleedBox{% \if@coverart% - /BleedBox[0\space0\space\my@MWnum\space\my@MHnum]% - \else\fi% + /BleedBox[0\space0\space\@myMWN\space\@myMHN]% + \fi% } % \begingroup\edef\next{% @@ -147,44 +171,8 @@ -%% DISABLE HYPERLINKS AND BOOKMARKS -%% ----------------------------------------------------------------------------- -% -% Files for PDF/X cannot have hyperlinks. If your document has any, -% they will be functionally disabled. However, it is still necessary -% to ensure that you do not specify them in the wrong color space. -% Since `novel' class disallows any kind of color, `xcolor' is loaded with -% `monochrome' or `gray' option, prior to loading `hyperref'. -% -% Your text will be K black, rather than CMYK `rich black'. This is best. -% If you use a grayscale image anywhere, ask your print service whether it may -% be directly placed as grayscale (and they will convert to halftone) -% or whether you must convert it to halftone yourself, and place it that way. -% -% Note that LaTeX cannot detect any erroneous placement of a color image. -% -% The pagegrid package can only be used in draft mode, without PDF/X: -\gdef\@reallyOFF{off} -\@ifpackageloaded{pagegrid}{ - \if@useDraftMode\else - \ClassError{novel}{\string\pagegrid\space needs `draft' mode^^J}% - {\string\pagegrid\space may only be used with class option `draft'^^J}% - \fi - \ifpdfx@isOFF\else - \pdfx@isOFFtrue % cancels pdfx when using pagegrid (in draft mode) - \gdef\@reallyOFF{re-set to off by pagegrid package.} - \ClassWarning{novel}{You requested PDF/X compliance.^^J% - But you also used the \string\pagegrid\space package. Cannot have both.^^J% - So instead, your document was processed with \string\SetPDFX\space off.^^J% - Reason: The grid and text are in layers. No layers allowed.^^J}% - \fi -}{} -%% End disable hyperlinks and bookmarks. - - - %% GENERAL PDF INTERNAL METADATA PREPARATION -%% ----------------------------------------------------------------------------- +%% ---------------------------------------------------------------------------- % % Create hashes that will be used for uuid data. Does not need to be fancy: \edef\xmp@docid{\pdfx@mdfivesum{jobname.pdf}} @@ -195,7 +183,7 @@ %% PREPARATION OF XMP METADATA -%% ----------------------------------------------------------------------------- +%% ---------------------------------------------------------------------------- %% Data prepared here, will later be inserted into the XMP packet template, %% then the processed template will be incuded in the PDF. %% XMP metadata is in utf-8 encoding. @@ -245,18 +233,19 @@ % \def\@pdfVersion{1.\the\pdfminorversion} % -\ifpdfx@isOFF +\if@pdfxISoff \gdef\@verconfString{}% \else \gdef\@verconfString{ \pad@vi<pdfx:GTS_PDFXVersion>\@PDFXversion</pdfx:GTS_PDFXVersion>^^J - \if@gotConformance - \pad@vi<pdfx:GTS_PDFXConformance>\@PDFXconformance</pdfx:GTS_PDFXConformance>^^J + \if@HasConformance + \pad@vi<pdfx:GTS_PDFXConformance>% + \@PDFXconformance</pdfx:GTS_PDFXConformance>^^J \fi } \fi % -\ifpdfx@isOFF +\if@pdfxISoff \gdef\@pdfidString{}% \else \gdef\@pdfidString{ @@ -267,28 +256,30 @@ \ifthenelse{\equal{\@novelApplication}{} \OR \equal{\@novelApplication}{ }}{ \gdef\@applicationString{}% }{ - \gdef\@applicationString{\pad@vi<xmp:CreatorTool>\@novelApplication</xmp:CreatorTool>^^J}% + \gdef\@applicationString{\pad@vi<xmp:CreatorTool>% + \@novelApplication</xmp:CreatorTool>^^J}% } % \ifthenelse{\equal{\@novelProducer}{} \OR \equal{\@novelProducer}{ }}{ \gdef\@producerString{}% }{ - \gdef\@producerString{\pad@vi<pdf:Producer>\@novelProducer</pdf:Producer>^^J}% + \gdef\@producerString{\pad@vi<pdf:Producer>% + \@novelProducer</pdf:Producer>^^J}% } % % Calculation of Dates and Times, which must be in a specific format. % Each time you process to PDF, the current date/time is used, % for all of the several metadata date/time strings. -% The date string begins with D: then 4 digits of year, etc. -% This definition removes the D: from front: -\gdef\pdfx@getYear#1#2#3#4#5#6{\edef\pdfx@xYear{#3#4#5#6}\pdfx@getMonth} +\def\xmp@cDate{\pdfx@getYear} +{\catcode`\D=12 \catcode`\:=12 + \gdef\pdfx@getYear D:#1#2#3#4{\edef\pdfx@xYear{#1#2#3#4}\pdfx@getMonth} +} \def\pdfx@getMonth#1#2{\edef\pdfx@xMonth{#1#2}\pdfx@getDay} \def\pdfx@getDay#1#2{\edef\pdfx@xDay{#1#2}\pdfx@getHour} \def\pdfx@getHour#1#2{\edef\pdfx@xHour{#1#2}\pdfx@getMin} \def\pdfx@getMin#1#2{\edef\pdfx@xMin{#1#2}\pdfx@getSec} \def\pdfx@getSec#1#2{\edef\pdfx@xSec{#1#2}\pdfx@getTZh} \def\pdfx@getTZh{\futurelet\pdfx@next\pdfx@getTzh@branches} -\def\xmp@cDate{\pdfx@getYear} % {\catcode`\@=11 \catcode`\Z=12 \catcode`\+=12 \catcode`\-=12 % ends below \gdef\pdfx@getTzh@branches{% @@ -327,37 +318,44 @@ %% WRITE THE XMP METADATA, UNLESS PDF/X IS OFF OR NO TITLE -%%------------------------------------------------------------------------------ +%%----------------------------------------------------------------------------- %% Inserts the prepared XMP metadata into XMP packet template, then writes %% the result at the start of the PDF, right now, before the document. % -\ifpdfx@isOFF\else - \if@gottitle - \begingroup - \makeatletter - \input{novel-xmppacket.sty} - \global\let\@xmpData\@xmpPacket % from the above file - \begingroup - \pdfcompresslevel=0 - \immediate\pdfobj stream attr {/Type /Metadata /Subtype /XML} {\@xmpData} - \pdfcatalog{/Metadata \the\pdflastobj\space 0 R} - \endgroup - \endgroup - % Creates external xml file, if requested: - \if@wantXMPasXML - \newwrite\file - \immediate\openout\file=\jobname-XMPasXML.xml - \immediate\write\file{<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>^^J} - \immediate\write\file{<!-- Ignore any message about not having style information. That is normal. -->^^J} - \immediate\write\file{<!-- Your viewer's font must be able to display any characters used in the XMP. -->^^J} - \immediate\write\file{<!-- For example, if your XMP has Cyrillic, then you need a Cyrillic-capable font. -->^^J} - \immediate\write\file{<!-- Any decorations (such as dashes in front of lines) are added by the viewer. Not in XMP. -->^^J} - \immediate\write\file{<!-- Note: xpacket begin="" contains the invisible 3-byte utf-8 BOM within its quotes. -->^^J} - \immediate\write\file{<!-- The above xml declaration, and these comments, are not part of the XMP packet. -->^^J} - \immediate\write\file{\@xmpData^^J} - \closeout\file - \fi - \fi +\if@pdfxISoff\else + \if@HasTitle + \begingroup + \makeatletter + \input{novel-xmppacket.sty} + \global\let\@xmpData\@xmpPacket % from the above file + \begingroup + \pdfcompresslevel=0 + \immediate\pdfobj stream attr {/Type /Metadata /Subtype /XML} {\@xmpData} + \pdfcatalog{/Metadata \the\pdflastobj\space 0 R} + \endgroup + \endgroup + % Creates external xml file, if requested: + \if@wantXMPasXML + \newwrite\file + \immediate\openout\file=\jobname-XMPasXML.xml + \immediate\write\file{<?xml version="1.0" encoding="UTF-8" % + standalone="yes" ?>^^J} + \immediate\write\file{<!-- Ignore any message about not having style % + information. That is normal. -->^^J} + \immediate\write\file{<!-- Your viewer's font must be able to display % + any characters used in the XMP. -->^^J} + \immediate\write\file{<!-- For example, if your XMP has Cyrillic, % + then you need a Cyrillic-capable font. -->^^J} + \immediate\write\file{<!-- Any decorations (such as dashes in front of % + lines) are added by the viewer. Not in XMP. -->^^J} + \immediate\write\file{<!-- Note: xpacket begin="" contains the invisible % + 3-byte utf-8 BOM within its quotes. -->^^J} + \immediate\write\file{<!-- The above xml declaration, and these % + comments, are not part of the XMP packet. -->^^J} + \immediate\write\file{\@xmpData^^J} + \closeout\file + \fi + \fi \fi % % @@ -366,7 +364,7 @@ %% PREPARE PDF /INFO METADATA -%% ----------------------------------------------------------------------------- +%% ---------------------------------------------------------------------------- %% PDF /Info is another form of metadata, older than XMP but still used. %% It is NOT in utf-8 encoding. Depending on content, one of two encodings %% will be automatically used: PDFDoc encoding if metadata uses only @@ -402,9 +400,9 @@ %% WRITE THE OUTPUT INTENT, UNLESS PDFX IS OFF. -%% ----------------------------------------------------------------------------- -% -\ifpdfx@isOFF\else +%% ---------------------------------------------------------------------------- +% Data for CGATS TR 001, FOGRA39, and JC200103 are in file novel-FileData.sty. +\if@pdfxISoff\else \begingroup \edef\@pctchar{\expandafter\@gobble\string\%} % Escaped in TeX, not PDF. \edef\@bchar{\expandafter\@gobble\string\\} % For use as escape, below. @@ -413,15 +411,16 @@ \edef\){\string\)} % PDF Catalog requires escaped parentheses. \catcode`\_ 12 % The icc file name might contain underscores. % - \if@noembedicc\else + \if@EmbedICC \IfFileExists{\@OIprofile}{% \immediate\pdfobj stream attr{/N 4} file{\@OIprofile}% \edef\OBJ@OI{\the\pdflastobj\space 0 R}% }{% \ClassError{novel}{Requested icc color profile not found}% - {You used the starred \string\SetPDFX*\space which embeds the^^J% - associated icc color profile. But the file could not be located.^^J% - If necessary, place it in the same folder as your *.tex document.}% + {You used the starred \string\SetPDFX*\space which embeds the ^^J% + associated icc color profile. But the file could not be located. ^^J% + If necessary, put it in the same folder as your *.tex document. ^^J% + Incidentally: Do you really need to embed the profile?}% } \fi \ifthenelse{\equal{\@OIcondition}{}}{ @@ -452,7 +451,7 @@ \@OIidentifierString% \@OIinfoString% \@OIregistryString% - \if@noembedicc\else/DestOutputProfile \OBJ@OI\fi% + \if@EmbedICC/DestOutputProfile \OBJ@OI\fi% >> ]% }% \endgroup @@ -463,7 +462,7 @@ %% DISABLE HYPERREF OPTIONS -%%------------------------------------------------------------------------------ +%%----------------------------------------------------------------------------- %% Prevents changes that will cause an incompatibility. % \Hy@DisableOption{pdfauthor}% @@ -480,12 +479,9 @@ %% PREPARE PDF/Info -%% ----------------------------------------------------------------------------- -%% The \novel@PDFinfo command is used AtBeginDocument in novel.cls. -% -\gdef\@novelPDFinfo{ % rather than \PDF@FinishDoc - \if@gottitle - \Hy@UseMaketitleInfos +%% ---------------------------------------------------------------------------- +\gdef\@ActivatePDFInfo{% called by `novel.cls' \AtBeginDocument + \if@HasTitle \pdfinfo{ \ifx\@infotitle\@empty\else /Title(\@infotitle)\fi \ifx\@infoauthor\@empty\else /Author(\@infoauthor)\fi @@ -502,18 +498,20 @@ \fi \ifx\@infoproducer\@empty\else /Producer(\@infoproducer)\fi% /Trapped/False% - \ifpdfx@isOFF\else + \if@pdfxISoff\else /GTS_PDFXVersion(\@PDFXversion)% - \if@gotConformance /GTS_PDFXConformance(\@PDFXconformance)\fi% + \if@HasConformance /GTS_PDFXConformance(\@PDFXconformance)\fi% \fi } \fi -} -% -%% End prepare PDF/Info. +}% +%% End \@ActivatePDFInfo. %% +\endinput +%% %% End of file `novel-pdfx.sty'. + diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-xmppacket.sty b/Master/texmf-dist/tex/lualatex/novel/novel-xmppacket.clo index 0a75df000f2..6aa0e0dc849 100644 --- a/Master/texmf-dist/tex/lualatex/novel/novel-xmppacket.sty +++ b/Master/texmf-dist/tex/lualatex/novel/novel-xmppacket.clo @@ -1,6 +1,6 @@ %% -%% This is file `novel-xmppacket.sty', part of class `novel'. -%% Copyright 2017 Robert Allgeyer. +%% This is file `novel-xmppacket.clo', part of `novel' document class. +%% Copyright 2017-2018 Robert Allgeyer. %% %% %% This file may be distributed and/or modified under the @@ -12,24 +12,24 @@ %% version 2005/12/01 or later. %% %% -%% ----------------------------------------------------------------------------- +%% ---------------------------------------------------------------------------- %% %% The descriptive properties of the namespaces, and the general format of XMP, %% are public standards released by Adobe Systems Incorporated. %% See http://www.adobe.com/products/xmp.html %% -%% ----------------------------------------------------------------------------- +%% ---------------------------------------------------------------------------- %% %% -\ProvidesFile{novel-xmppacket.sty}% -[2018/01/14 v1.46.2 LaTeX file (novel XMP packet template)] +\ProvidesFile{novel-xmppacket.clo}% +[2018/01/14 any version. (novel XMP packet template)] %% % This packet uses utf-8 BOM. % The catcodes allow # _ ~ $ % & to be used as ordinary characters. -% The \edef and \let get rid of escape backslashes in front of those characters. +% \edef and \let get rid of escape backslashes in front of those characters. % NO COMMENTS AFTER THIS! Until \endgroup. @@ -178,6 +178,9 @@ \endgroup +% OK to use comments now. %% -%% End of file `novel-xmppacket.sty'. +\endinput +%% +%% End of file `novel-xmppacket.clo'. diff --git a/Master/texmf-dist/tex/lualatex/novel/novel.cls b/Master/texmf-dist/tex/lualatex/novel/novel.cls index 78bdd95fbc8..23989dc380b 100644 --- a/Master/texmf-dist/tex/lualatex/novel/novel.cls +++ b/Master/texmf-dist/tex/lualatex/novel/novel.cls @@ -1,10 +1,6 @@ %% -%% This is file `novel.cls', part of class `novel'. -%% Copyright 2017 Robert Allgeyer. Contact: anytthree [at] gmail.com -%% -%% Wanted: Replacement maintainer. The original creator wants to move on. -%% AFAIK this code is tested and suitable for general use. -%% Contact CTAN (and me) if interested in taking over the maintenance. +%% This is file `novel.cls', LuaLaTeX `novel' document class. +%% Copyright 2017-2018 Robert Allgeyer. Contact: anytthree [at] gmail.com %% %% This file may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -17,9 +13,10 @@ %% \NeedsTeXFormat{LaTeX2e}[1995/12/01] % Actually needs LuaLaTeX, at least version 0.95 from TeXLive 2016. -\ProvidesClass{novel}[2018/01/14 v1.46.2 LaTeX document class] +\ProvidesClass{novel}[2018/03/28 v1.50 LaTeX document class] %% -%% Version 1.46: Possibly final version. +%% Version 1.50: Improved image handled, sandbox, scripts. +%% Version 1.46.2: Now called "novel-old" version. %% Version 1.43: General cleanup of docs and code, for improved readbaility. %% Version 1.42: Greatly improved HTML documentation. %% Version 1.41: Improved HTML documentation. @@ -38,7 +35,7 @@ %% DESCRIPTION: -%% ----------------------------------------------------------------------------- +%% ---------------------------------------------------------------------------- %% Class `novel' is designed for print fiction: novels or short stories. %% It cannot be used for e-books or for journal publication. %% It is not suitable for most non-fiction, because routine academic features @@ -63,25 +60,28 @@ %% REQUIRE LUATEX and do some preliminary setup. -%% ----------------------------------------------------------------------------- +%% ---------------------------------------------------------------------------- %% These are not user settings. % \RequirePackage{ifluatex} % LuaTeX is required. Not XeTeX, dvips, or pdfTeX. \RequirePackage{ifxetex} % For occasional hacks (hiss, boo). -\RequirePackage{luatex85} % Needed for compatibility when using LuaTeX 0.95 etc. +\RequirePackage{luatex85} % Needed for compatibility with LuaTeX 0.95 etc. \RequirePackage{pdftexcmds} % compatibility \ifluatex % New with TeXlive 2016. Removes unnecessary File Data: \pdfvariable suppressoptionalinfo 511 % writes only ID to PDF Catalog \else - \ClassError{novel}{Must compile with LuaLaTeX 0.95+}{Sorry, LuaLaTeX only.% - No pdfTeX, dvips, or XeTeX.} + \ClassError{novel}{Must compile with LuaLaTeX 0.95+}% + {Sorry, LuaLaTeX only. No pdfTeX, dvips, or XeTeX.} \fi +\pdfimageresolution=300 % default dpi if image does not say % \RequirePackage{etoolbox} % general good stuff \RequirePackage{xifthen} % improved ifthenelse handling \RequirePackage{xstring} % parses strings \RequirePackage{fp} % used everywhere for math calculations +\RequirePackage{xfp} % more math calculations +\RequirePackage{keyval} % used by drop cap \FPmessagesfalse % eliminates numerous friendly messages from the log % \pdfminorversion=3 % might be reset later, depending on settings @@ -90,26 +90,23 @@ \RequirePackage{silence} % Used here: % hyperref draft mode is always on, even when novel is not in draft mode: \WarningFilter{hyperref}{Draft mode on} % So, get rid of the hyperref warning. -% Prevent complaints about no protrusion list for cmr, cmm, etc. in decimal pts: +% Prevent complaints about no protrusion list for cmr, cmm, etc. in decimal pt: \WarningFilter{microtype}{I cannot find a protrusion list} % It's not there! % \WarningsOff[Fancyhdr,fancyhdr] % complains about headheight when no header \RequirePackage[relative]{textpos} % for inserting images -\RequirePackage{noindentafter} % for unindented chapter and scene starts \RequirePackage{calc} % allows length expression calculations -\RequirePackage{changepage} % provides block indents, etc. Do not use strict! -\RequirePackage{atbegshi} % for one-page header changes. Also used by hyperref. -\RequirePackage{letltxmacro} % for re-defining some macros -\RequirePackage{magaz} % special treatment of first lines +\RequirePackage{atbegshi} % in oberdiek bundle. For one-page header changes. Also used by hyperref. +\RequirePackage{letltxmacro} % in oberdiek bundle. For re-defining some macros \RequirePackage{xparse} % for writing cool-looking commands % -% In addition, the following packages are required, but they are not loaded now. -% They must wait for something else to happen first. They will be loaded -% with suitable arguments, when the time comes: +% In addition, the following packages are required, but not loaded yet. +% They must wait for something else to happen first. Then they will be loaded +% with suitable arguments, when the time comes: % fontspec -- in novel-LayoutSettings.sty % unicode-math -- in novel-LayoutSettings.sty % polyglossia -- in novel-LayoutSettings.sty -% microtype -- in novel-FontDefaults.sty +% microtype -- in novel-Fonts.sty % hyperref -- in novel-pdfx.sty % fancyhdr -- in novel.HeadFootStyles.sty % xcolor -- lower in this page @@ -119,11 +116,28 @@ %% +\newlength\@tempLength % scratch length for local calculations +\newif \if@tempTF % scratch boolean for local tests + + +%% Global lengths are often passed around in `novel'. +%% But \setlength is not always global in effect. +%% This code defines a global command. +%% Via Heiko Oberdiek at tex.stackexchange.com: +\gdef\gsetlength#1#2{% #1 is the length command, #2 is the length value + \begingroup% + \setlength\skip@{#2}% Local assignment to a TeX scratch register. + \global#1=\skip@% Global assignment to #1 + \endgroup% \skip@ is restored by end of group. +}% end \gsetlength +%% + + %% Process document class options. -%% ----------------------------------------------------------------------------- +%% ---------------------------------------------------------------------------- % Allowed option list: -% draft xml shademargins graytext greytext cropmarks cropview closecrop -% coverart unblock +% draft xml shademargins cropmarks cropview closecrop +% coverart sandbox unblock mtoff polyoff test % Yes, I realize that this could have been done another way, but I want % to issue error messages from `novel' rather than (say) `keyval': \gdef\@mycol{\@classoptionslist} @@ -132,8 +146,8 @@ \StrDel{\@mycol}{draft}[\@mycol] \StrDel{\@mycol}{xml}[\@mycol] \StrDel{\@mycol}{shademargins}[\@mycol] -\StrDel{\@mycol}{graytext}[\@mycol] -\StrDel{\@mycol}{greytext}[\@mycol] +\StrDel{\@mycol}{graytext}[\@mycol] % Obsolete. Now always allows graytext. +\StrDel{\@mycol}{greytext}[\@mycol] % See above. \StrDel{\@mycol}{cropmarks}[\@mycol] \StrDel{\@mycol}{cropview}[\@mycol] \StrDel{\@mycol}{closecrop}[\@mycol] @@ -141,65 +155,53 @@ \StrDel{\@mycol}{unblock}[\@mycol] \StrDel{\@mycol}{mtoff}[\@mycol] \StrDel{\@mycol}{polyoff}[\@mycol] +\StrDel{\@mycol}{test}[\@mycol] +\StrDel{\@mycol}{sandbox}[\@mycol] % \ifthenelse{\equal{\@mycol}{}}{}{ - \ClassWarning{novel}{Unrecognized class option: \@mycol^^J% - The unrecognized option was ignored!^^J% - If `debug' it is obsolete from v.1.40.^^J% - Note that font size, document size, and language^^J% - are not `novel' class options. See documentation.}% + \ClassWarning{novel}{^^JUnrecognized class option: \@mycol. ^^J% + The unrecognized option was ignored! ^^J% + If `debug' it is obsolete from v.1.40. ^^J% + Note that font size, document size, and language ^^J% + are not `novel' class options. See documentation. ^^J}% } -% % If used, option `draft' shows overflow rule. -\newif \if@useDraftMode +% Prior to v. 1.46.1, the following was \if@useDraftMode. +% Changed for possible compatibility with packages that detect draft mode. +\newif \ifdraftdoc \setlength\overfullrule{0pt} \DeclareOption{draft}{ \setlength\overfullrule{6pt} - \@useDraftModetrue - \ClassWarning{novel}{Compiled using draft mode. Not for final release!^^J} + \draftdoctrue + \ClassWarning{novel}{^^JCompiled with draft mode. Not for final release! ^^J} } +\newif \ifmsdoc % manuscript, always false. Compatibility with other packages. % If used, option `xml' creates a file `\jobname-XMPasXML.xml` that contains % the XMP metadata with an xml declaration and comments at top. % Only works when \SetPDFX is not `off'. Note that you do not need to use % this option to get PDF/X. It is only for your own usage. \newif \if@wantXMPasXML -\DeclareOption{xml}{ - \@wantXMPasXMLtrue -} +\DeclareOption{xml}{\@wantXMPasXMLtrue} \DeclareOption{xmp}{ % in case you mis-type. - \ClassError{novel}{No class option `xmp'. Want `xml' ?^^J}% - {There is no class option named `xmp'. It is `xml'.^^J} + \ClassError{novel}{No class option `xmp'. Use `xml'}% + {There is no class option named `xmp'. It is `xml'.} } % Option `shademargins' does just that. Ignored unless in draft mode. -% Does not matter if `graytext' option in use. \newif \if@shademargins -\DeclareOption{shademargins}{ - \@shademarginstrue -} -% Option `graytext' allows text in grayscale. Images unaffected. -% If this option is not used, all text will be K black. -\newif \if@graytext -\DeclareOption{graytext}{ - \@graytexttrue -} -% For the Brits: -\DeclareOption{greytext}{ - \@graytexttrue -} +\DeclareOption{shademargins}{\@shademarginstrue} +% +\newif \if@graytext % remains here for backwards compatibility +\@graytexttrue % from v.1.50 always true, no longer an option. +% % Usually you do NOT want crop (trim) marks! -% Configurable by \SetCropMarks[]{}. \newif \if@cropmarks -\DeclareOption{cropmarks}{ - \@cropmarkstrue -} +\DeclareOption{cropmarks}{\@cropmarkstrue} % PDF viewers display CropBox, which normally is identical to MediaBox. % Option `cropview', sets CropBox to TrimBox instead, so that's all you see. % Only makes a difference when MediaBox is larger than TrimBox. % Ignored unless in draft mode. \newif \if@cropview -\DeclareOption{cropview}{ - \@cropviewtrue -} +\DeclareOption{cropview}{\@cropviewtrue} % With `closecrop', the TrimSize and margins are re-sized, to preserve the % live area, but with reduced margins on all sides (same for verso/recto). % This option is available only in draft mode, and disables shademargins. @@ -207,53 +209,43 @@ % so you can think about edits while traveling. It is NOT an e-book, since % it has no hyperlinks and is missing some features that an e-book should have. \newif \if@closecrop -\DeclareOption{closecrop}{ - \@cropviewtrue\@closecroptrue -} +\DeclareOption{closecrop}{\@cropviewtrue\@closecroptrue} % New in version 1.2: `coverart' option. See documentation. % This is used to create a 1-page file with no text, just an image. % Intended purpose is PDF/X for novel cover. \newif \if@coverart -\DeclareOption{coverart}{ - \@coverarttrue -} +\DeclareOption{coverart}{\@coverarttrue} % New in version 1.34: unblock option, for developer use only. -% Normally, a number of packages known to be incompatible with this document class +% Normally, a number of packages known to be incompatible with `novel' % are blocked from loading. If the user tries to get them via \usepackage % or \RequirePackage, or if they are called within some other loaded package, % then compile halts with an error. The `unblock' option turns off blocking, % and allows incompatible packages to load. Use only at own risk! \newif \if@novelunblock % For developer use. -\DeclareOption{unblock}{ - \@novelunblocktrue -} +\DeclareOption{unblock}{\@novelunblocktrue} % New in version 1.44: mtoff option, primarily for developer use. % With mtoff, the microtype package is not loaded. \newif \if@mtoff -\DeclareOption{mtoff}{ - \@mtofftrue -} +\DeclareOption{mtoff}{\@mtofftrue} % New in version 1.44: polyoff option, primarily for developer use. % With polyoff, the polyglossia package is not loaded. % You may need to load babel, or not, via \RequirePackage[options]{babel}. \newif \if@polyoff -\DeclareOption{polyoff}{ - \@polyofftrue -} +\DeclareOption{polyoff}{\@polyofftrue} % New in version 1.46: test option, primarily for developer use. -% Throws error if Liberintus and Latin Modern Roman fonts are unavailable. -% Throws error is file novel-testimage.png is not in same folder. -% Lets \lettrine relax if `lettrine' package not loaded. \newif \if@testsuite -\DeclareOption{test}{ - \@testsuitetrue -} +\DeclareOption{test}{\@testsuitetrue} +% +% New in version 1.50: sandbox option, for artwork and tables. Max 4 pages. +\newif \if@sandbox +\DeclareOption{sandbox}{\@sandbox} +% %% Note that document size and normal font size are not class options. %% They are set by commands in the Preamble, and have default values. % \ProcessOptions\relax % Disable some options, depending on compatibilities: -\if@useDraftMode\else +\ifdraftdoc\else \global\@shademarginsfalse \global\@cropviewfalse \global\@closecropfalse @@ -270,64 +262,81 @@ \fi % \if@coverart - \global\@useDraftModefalse + \global\draftdocfalse \global\@shademarginsfalse \global\@cropviewfalse \global\@closecropfalse - \global\@graytextfalse + \global\@sandboxfalse +\fi +% +\if@sandbox + % Thanks to user Compholio at stackexchange.com: + \newcounter{sandboxcount} + \ifx\latex@outputpage\@undefined\relax% + \global\let\latex@outputpage\@outputpage% + \fi% + \gdef\@outputpage{% + \addtocounter{sandboxcount}{1}% + \ifnum\value{sandboxcount}>4\relax% no output after 4 pages + \else% + \latex@outputpage% + \fi% + }% + \AtEndPreamble{% + \gdef\@title{untitled interior artwork}% + }% + \AfterEndPreamble{% + \ifdraftdoc\else\thispagestyle{empty}\fi% + }% \fi %% end class options + +\RequirePackage{noindentafter} % for unindented chapter and scene starts +\RequirePackage{changepage} % provides block indents, etc. Do not use strict! +\RequirePackage{magaz} % special treatment of first lines + + %% Activate xcolor, adjustbox, and eso-pic: -%% ----------------------------------------------------------------------------- -% The final book must be monochrome (black and white only) for all text, -% unless option `graytext' is used. Then, grayscale text is permitted. -% Interior images must be raster monochrome or grayscale, whether or not -% the `graytext' option is used. See documentation. +%% ---------------------------------------------------------------------------- +% The final book must be black/white and gray only, for all text. +% Interior images must be raster black/white or grayscale. See documentation. % Vector graphics are strongly discouraged, in any case. % In draft mode only, the `shademargins' option requires `grayscale', % which will be temporarily enabled, even if not specifically requested. -\newif \if@grayenabled % -\if@useDraftMode - \RequirePackage[gray,hyperref]{xcolor} % allows some layout checks - \global\@grayenabledtrue -\else - \if@graytext - \RequirePackage[gray,hyperref]{xcolor} % black/white book block - \global\@grayenabledtrue - \else - \RequirePackage[monochrome,hyperref]{xcolor} % black/white book block - \fi -\fi +\RequirePackage[gray,hyperref]{xcolor} +% % adjustbox and eso-pic cannot precede xcolor. \RequirePackage{adjustbox} % for scaling and moving \RequirePackage{eso-pic} % background effects in draft mode -% +\RequirePackage{pdfpages} % only used for pdf pre-processed by novel-scripts %% end activate xcolor and adjustbox -%% Temporary normal font size -%% ----------------------------------------------------------------------------- +%% Temporary normal font size, baselineskip, and fontspec +%% ---------------------------------------------------------------------------- %% This normalsize is temporary, so that packages can load without complaint. %% It will be modified later, during layout calculations. %% Actual default font size will be 11pt-12pt, with 11.4pt average. -%% But that is for typical book-weight fonts. The closest LMR eqivalent is 10pt. -\def\Current@FontSizeNum{10} -\def\Current@BaselineSkipNum{13} +%% The small temporary size is to ensure that overly-large struts and skips +%% are not created prior to page layout calculation. +\gdef\@TentativeEmN{10} +\gdef\@TentativeBLSkipN{13} \renewcommand\normalsize{% - \@setfontsize\normalsize{\Current@FontSizeNum}{\Current@BaselineSkipNum}% + \@setfontsize\normalsize{\@TentativeEmN}{\@TentativeBLSkipN}% } \normalsize -% -\RequirePackage{lipsum} % generates dummy text for examples -% -%% end temporary normal point size and baselineskip +\RequirePackage[no-math]{fontspec} % For LuaLaTeX. NOT package `fontenc'. +% The `novel' class is not intended for math. But TeX assumes you do math, +% so it needs a math font, whether you like it or not. +\RequirePackage{unicode-math} +%% end temporary normal point size, baselineskip, and fontspec. %% Define commands used for File Data, including PDF/X Settings. -%% ----------------------------------------------------------------------------- +%% ---------------------------------------------------------------------------- %% As used here, `File Data' refers to PDF metadata as found in PDF/Info %% and in XMP. This class does not write it to the PDF Catalog. \RequirePackage{novel-FileData} @@ -335,18 +344,39 @@ %% Physical Layout Commands and Settings. -%% ----------------------------------------------------------------------------- -%% Define user commands that over-ride the class option pre-configured settings. +%% ---------------------------------------------------------------------------- +%% Define user commands that over-ride class option pre-configured settings. %% Also sets a variety of miscellaneous lengths:s \parsep, \parindent, etc. \RequirePackage{novel-LayoutSettings} -%% -%% Additional Preamble Settings and Commands. -%% ----------------------------------------------------------------------------- +%% Polyglossia. +%% ---------------------------------------------------------------------------- +% Language-specific settings: +\if@polyoff % polyoff is new in v 1.44. + \ClassWarning{novel}{^^JYou chose the `polyoff' class option. ^^J% + So, the polyglossia package was not loaded. But like it or not, ^^J% + the babel package was loaded, with generic hyphenation. ^^J% + This behavior, or choice of language, cannot be changed. ^^J% + If you want a specific language, you will have to use polyglossia. ^^J}% +\else + \RequirePackage{polyglossia} % loading order changed in v. 1.40.3. + \setdefaultlanguage[variant=american]{english} % may be changed by user +\fi +%% end polyglossia + + +%% Additional Macros, Loaded in Preamble. +%% ---------------------------------------------------------------------------- +\RequirePackage{novel-Fonts} % font settings and defaults +\if@coverart\else\RequirePackage{lipsum}\fi % generates dummy text for examples +%% New in version 1.50: +\RequirePackage{novel-DropCap} % Macros for use in document body: \RequirePackage{novel-TextMacros} % Standard header footer styles, based on `fancyhdr': +% Each pre-configured style will set these booleans true or false: +\newif\if@HasHeader \newif\if@HasFooter \RequirePackage{novel-HeadFootStyles} % Chapter and Scene styles: \RequirePackage{novel-ChapterScene} @@ -354,240 +384,274 @@ \RequirePackage{novel-Images} % Footnotes and endnotes: \RequirePackage{novel-Footnotes} +% Obsolete code. Do not use in new documents: +\RequirePackage{novel-Obsolete} +%% + + +%% For convenience, from `article' class. +%% ---------------------------------------------------------------------------- +\newenvironment{verse}{% Not very useful. + \let\\\@centercr + \list{}{% + \itemsep\z@ + \itemindent -\parindent% + \listparindent\itemindent + \rightmargin \leftmargin + \advance\leftmargin \parindent% + }% + \item\relax% +}{% + \endlist% +} +%% +\newenvironment{quotation}{% Not very useful. + \list{}{% + \listparindent \parindent% + \itemindent \listparindent + \rightmargin \leftmargin + \parsep \z@% + }% + \item\relax% +}{% + \endlist% +} %% +\newenvironment{quote}{% Not very useful. + \list{}{% + \rightmargin\leftmargin% + }% + \item\relax% +}{% + \endlist% +} +% +%% end convenience. -%% Special features of test suite. -%% ----------------------------------------------------------------------------- + +%% Special features of test suite (for developers and error reporting) +%% ---------------------------------------------------------------------------- +% Files `novel-testsuite.tex' and `novel-testimage.png' are within the novel +% documentation extras folder. To run the test suite, copy these files to +% a writeable location (such as your home directory) and compile there. \newcommand\testsuiteoops[1]{% \ClassError{novel}{#1 missing}{Install the necessary file(s).}% } \if@testsuite - \IfFontExistsTF{libertinusserif-regular.otf}{}{\testsuiteoops{`libertinus' fonts}} + \IfFontExistsTF{libertinusserif-regular.otf}{}{% + \testsuiteoops{`libertinus' fonts}% + } \IfFileExists{lmodern.sty}{}{\testsuiteoops{`lmodern' package}} \IfFileExists{novel-testimage.png}{}{\testsuiteoops{`novel-testimage.png'}} \NewFontFamily\mustbelibertinus{Libertinus Serif} \NewFontFamily\mustbelmodern{Latin Modern Roman} \fi -\AtBeginDocument{\@ifpackageloaded{lettrine}{}% - {\DeclareDocumentCommand\lettrine{ O{} m m }{#2#3}}% -} %% end special features of test suite. -%% \AtEndPreamble sets defaults and calculates layout -%% ----------------------------------------------------------------------------- +%% \AtEndPreamble sets defaults, calculates layout, and writes PDF/X +%% ---------------------------------------------------------------------------- +% This is prior to \AtBeginDocument, and ensures that the results are available +% prior to any \AtBeginDocument routines from user macros or loaded packages. \AtEndPreamble{ - % New in v. 1.44. Sets default resolution for images without internal dpi: - \pdfimageresolution=\@novimgres % from \SetFlexResolution. Default 300. - % If user did not choose language, default is here. Sorry, Brits: - % Macro \xpg@main@language is gdef'd by \setdefaultlanguage in polyglossia. - \if@polyoff\else % polyoff v 1.44. - \@ifundefined{xpg@main@language}{\setdefaultlanguage[variant=american]{english}}{} - \fi - \RequirePackage{novel-CalculateLayout} - \RequirePackage{novel-FontDefaults} - \providecommand\textls[2][]{#2} % when mtoff option - \renewcommand\textls[2][]{#2} % nullifies this microtype command (problems) - \RequirePackage{novel-pdfx}% + \@ActivateFonts % in `novel-Fonts.sty' + \RequirePackage{novel-CalculateLayout} % may load novel-ChangeLayout.sty + \RequirePackage{novel-PostLayout} % calculates shademargins, cropmarks, etc. + \RequirePackage{novel-pdfx}% also provides an \AtBeginDocument macro + \AtEndDocument{% + \if@coverart\else% + \if@sandbox\else% + \cleartoend% adds 1 or 2 blanks, for final verso blank + \fi% + \fi% + } +}% +%% end AtEndPreamble + + +%% Messages that may be issued by \AtBeginDocument routines: +%% ---------------------------------------------------------------------------- +% +%% Dealing with known incompatible packages: +\gdef\really@no#1#2#3{ % cannot be used, even with unblock or sandbox + \@ifpackageloaded{#1}{% + \ClassError{novel}{Sorry, package `#1' cannot be used in `novel' class}% + {No exceptions. You are out of luck. ^^J% + Reason: `novel' has #2 ^^J% + See `novel' HTML documentation, section #3. ^^J% + Note: The offending package may have been loaded by another package.}% + }{}% +} % +% +%% Command or environment native to LuaLaTeX, but banned except in sandbox: +\gdef\@OnlySandbox#1{% + \ClassError{novel}{Use of `#1' page \thepage\space requires sandbox}% + {`novel' class prohibits command or environment `#1' ^^J% + unless you use class option `sandbox'. See documentation.}% } -%% +% +%% Package can be used, but Alert: +\gdef\alert@nodisp#1{% + \@ifpackageloaded{#1}{% + \typeout{^^JClass `novel' Alert: Beware of package #1. ^^J% + Commands from this package may cause mis-positioning in main text. ^^J% + Maybe, maybe not. Best if usage is confined to display pages. ^^J}% + }% +} +% +%% Dealing with blocked packages, allowed with `unblock': +\if@novelunblock + \gdef\sorry@no#1{} % no package-specific errors, when unblock + \ClassWarning{novel}{Using `unblock' class option, at your own risk. ^^J% + The `unblock' option is for developer use, not production documents. ^^J% + If the unblocked packages and commands cause problems, ^^J% + they are not bugs. Do not report them. You have been warned. ^^J% + Perhaps your document will compile without error, and perhaps the ^^J% + results are OK. But in other cases, unexpected typesetting results. ^^J}% +\else % package-specific errors, when no unblock + \gdef\sorry@no#1{ + \@ifpackageloaded{#1}{% + \ClassError{novel}{Sorry, package `#1' cannot be used in `novel' class}% + {See `novel' HTML documentation, regarding `sandbox' option. ^^J% + Note: The offending package may have been loaded by another package.}% + }{}% + } % +\fi +%% end messages. %% \AtBeginDocument finishes the setup -%% ----------------------------------------------------------------------------- -\newlength\normalparindent +%% ---------------------------------------------------------------------------- +% +\gdef\@needsandboxmsg{% + \ClassError{novel}{Need `sandbox' for picture, figure, table environments}% + {You cannot use picture, figure, or table environments in `novel' unless ^^J% + you use the `sandbox' document class option. See docs.}% +} \AtBeginDocument{ % - \@ifpackageloaded{lettrine}{% - \LettrineOnGridtrue% - \setlength\DiscardVskip{10\nbs}% effectively infinite - \global\DiscardVskip=\DiscardVskip% - \setlength\DefaultFindent{0.25em}% about one space - \global\DefaultFindent=\DefaultFindent% - \setlength\DefaultNindent{0em}% uniform gap - \global\DefaultNindent=\DefaultNindent% - \setcounter{DefaultLines}{3}% more likely than 2. - }{}% - % Find some useful measurements: - \setlength\normalparindent{\parindent} - \global\normalparindent=\parindent - \gdef\@normalxheight{\heightof{x}} - \setlength\normalxheight{\@normalxheight} - \global\normalxheight=\normalxheight - \gdef\@normalXheight{\heightof{X}} - \setlength\normalXheight{\@normalXheight} - \global\normalXheight=\normalXheight - \gdef\@normalscxheight{\heightof{\textsc{x}}} - \setlength\normalscxheight{\@normalscxheight} - \global\normalscxheight=\normalscxheight - \gdef\@normalAringheight{\heightof{Å}} - \setlength\normalAringheight{\@normalAringheight} - \global\normalAringheight=\normalAringheight - \gdef\@normaldescender{\depthof{gjpqy}} - \setlength\normaldescender{\@normaldescender} - \global\normaldescender=\normaldescender - % Activate user choice of whether or not to indent after scenebreak commands: - \if@indentAfterScenebreak\else - \NoIndentAfterCmd{\scenebreak} - \NoIndentAfterCmd{\sceneline} - \NoIndentAfterCmd{\scenestars} - \fi + %% Mostly involve settings defaults: + \@ActivateTextLengths % in `novel-TextMacros.sty' + \@ActivateDropCaps % in `novel-DropCaps.sty' + \@ActivateChapterScene % in `novel-ChapterScene.sty' + \@ActivateHeadFootStyles % in file `novel-HeadFootStyles.sty' + \@ActivatePDFInfo % in file `novel-pdfx.sty' + \@ActivateTextMacros % in `novel-TextMacros.sty' + \@ActivateFootnotes % in `novel-Footnotes.sty' + \@DisableFontSizes % in file `novel-LayoutSettings.sty' + \@DisableLayoutSettings % in file `novel-LayoutSettings.sty' + \@DisableFileDataSettings % in file `novel-FileData.sty' + \@DisableChapterSceneSettings % in file `novel-ChapterScene.sty' + \@DisableHeadFootSettings % in file `novel-HeadFootStyles.sty' + %% List of always-blocked packages (not exhaustive, since TeX has so many): + \really@no{geometry}{its own layout commands.}{4} + \really@no{pdfx}{built-in PDF/X capability.}{3.4} + \really@no{xmpincl}{built-in PDF/X capability.}{3.4} + \really@no{hyperxmp}{built-in PDF/X capability.}{3.4} + \really@no{pdfxmult}{built-in PDF/X capability.}{3.4} + \really@no{inputenc}{utf-8 encoding always.}{1.2.1} + \really@no{fontenc}{`fontspec' and utf-8 encoding always.}{1.2.1, 1.2.3} + \really@no{biblatex}{no bibiography capability.}{1.2.5} + \really@no{showkeys}{an incompatible layout method.}{1.2.5} + \really@no{booktabs}{no capability for this, due to printer specs.}{3.4} + \really@no{pax}{no capability for this, due to printer specs.}{3.4} + \really@no{bookmark}{focus on paper books, not e-books.}{(top of file)} + \really@no{endnotes}{limited, built-in endnote methods.}{6.5} + \really@no{acronym}{focus on paper books, not e-books.}{(top of file)} + \really@no{embedfile}{incompatible print requirements.}{(top of file)} % - \@activateHeadFootStyles % in file `novel-HeadFootStyles.sty' - \@novelPDFinfo % in file `novel-pdfx.sty'. - % Commands that cannot be used after Preamble: - \let\indentAfterScenebreak\relax - \let\title\relax - \let\author\relax - \let\subtitle\relax - % Dealing with known incompatible packages: - \if@novelunblock - \gdef\sorry@no#1{} % let them be used - \else % block them (default) - \gdef\sorry@no#1{\@ifpackageloaded{#1}{% - \ClassError{novel}{Sorry, package `#1' cannot be used}% - {The `novel' class does not allow use of package `#1'.^^J% - You must remove it from the Preamble, and also remove its commands^^J% - from the body of your document. In rare cases, the offending package^^J% - was loaded by some other package.^^J}% - }{}% - } - \fi - % List of blocked packages (not exhaustive, since TeX has so many): - \sorry@no{pdfx} - \sorry@no{xmpincl} - \sorry@no{hyperxmp} - \sorry@no{pdfxmult} - \sorry@no{inputenc} - \sorry@no{fontenc} - \sorry@no{showkeys} - \sorry@no{wrapfigure} - \sorry@no{wrapfig} - \sorry@no{float} - \sorry@no{morefloats} - \sorry@no{footmisc} - \sorry@no{footnote} - \sorry@no{manyfoot} - \sorry@no{caption} - \sorry@no{subcaption} - \sorry@no{multirow} - \sorry@no{tabu} - \sorry@no{tabularx} - \sorry@no{tabulary} - \sorry@no{array} - \sorry@no{booktabs} - \sorry@no{eqparbox} - \sorry@no{pdfpages} - \sorry@no{nth} - \sorry@no{engord} - \sorry@no{endnotes} - %% - %% Pertains to novel-LayoutSettings.sty: - \ifcsname pagenumberstyle\endcsname\else - \SetPageNumberStyle{\thepage} - \fi + \if@sandbox% + \RequirePackage{novel-Sandbox}% + \fi% % - \def\@setchapterstartOK{false}% - \ifthenelse{\equal{\@setchapterstart}{empty}}{% - \def\@setchapterstartOK{true}% - }{}% - \ifthenelse{\equal{\@setchapterstart}{plain}}{% - \def\@setchapterstartOK{true}% - }{}% - \ifthenelse{\equal{\@setchapterstart}{footer}}{% - \def\@setchapterstartOK{true}% - }{}% - \ifthenelse{\equal{\@setchapterstart}{fancyplain}}{% - \def\@setchapterstartOK{true}% - }{}% - \ifthenelse{\equal{\@setchapterstart}{fancy}}{% - \def\@setchapterstartOK{true}% - }{}% - \ifthenelse{\equal{\@setchapterstart}{forcenumber}}{% - \def\@setchapterstartOK{true}% - }{}% - \ifthenelse{\equal{\@setchapterstart}{dropfolioinside}}{% - \def\@setchapterstartOK{true}% - }{}% - \ifthenelse{\equal{\@setchapterstart}{dropfoliobeneath}}{% - \def\@setchapterstartOK{true}% - }{}% - \ifthenelse{\equal{\@setchapterstartOK}{true}}{}{% - \ClassError{novel}{\string\SetChapterStartStyle\space bad argument}% - {\string\SetChapterStartStyle\space only allows certain choices.^^J}% - }% - %% - %% Pertains to novel-TextMacros.sty: - \setlength\forceparlength{\parindent} - \global\forceparlength=\forceparlength - \gdef\forceindent{\ifvmode\else\unskip\fi\stake\hspace{\forceparlength}} - \gdef\backindent{\ifvmode\else\unskip\fi\hspace{-\forceparlength}} - %% - %% Pertains to novel-footnotes.sty: - \gdef\SetFootnoteMarker#1{% - \typeout{^^JClass `novel' Alert: % - \string\SetFootnoteMarker\space ineffective after Preamble.^^J}% - } - % Must wait for \nbs to be calculated: - \setlength\footnotesep{0.8\nbs} - % Must wait for main font and its size to be active: - \newlength\@hoaring - \setlength\@hoaring{\heightof{Å}} - \global\@hoaring=\@hoaring - \newlength\@twast % tweaks asterisk - \setlength\@twast{\heightof{*}} - \addtolength\@twast{-\@hoaring} - \global\@twast=\@twast - \newlength\@twdag % tweaks dagger - \setlength\@twdag{\heightof{†}} - \addtolength\@twdag{-0.2\@twdag} - \addtolength\@twdag{-\@hoaring} - \global\@twdag=\@twdag - \newlength\@twdbldag % tweaks double dagger - \setlength\@twdbldag{\heightof{‡}} - \addtolength\@twdbldag{-0.2\@twdbldag} - \addtolength\@twdbldag{-\@hoaring} - \global\@twdbldag=\@twdbldag - \newlength\@twsect % tweaks section mark - \setlength\@twsect{\heightof{§}} - \addtolength\@twsect{-0.2\@twsect} - \addtolength\@twsect{-\@hoaring} - \global\@twsect=\@twsect - \newlength\@tweight % tweaks 8, reliably the tallest digit - \setlength\@tweight{\heightof{8}}% - \addtolength\@tweight{-0.2\@tweight}% - \addtolength\@tweight{-\@hoaring}% - \global\@tweight=\@tweight% - % Must wait to see how \SetFootnoteMarker was used: - \ifthenelse{\equal{\@myfnsymbols}{*}}{\setcounter{@maxfnsymbol}{8}}{} - \ifthenelse{\equal{\@myfnsymbols}{†}}{\setcounter{@maxfnsymbol}{6}}{} - %% -} -%% end AtBeginDocument - - -%% New in version 1.2, coverart option. See documentation. -\AfterEndPreamble{ - \if@coverart - \AddToShipoutPictureBG{% - \AtPageUpperLeft{% - \InlineImage{\novelcoverimage}% - }% - } - \null% without this, page has no "content" + %% Potential problem packages, allowed in sandbox or with unblock: + \if@sandbox\else + % Related to floats: + \sorry@no{floatflt} + \sorry@no{floatfig} + \sorry@no{flafter} + \sorry@no{float} + \sorry@no{morefloats} + \sorry@no{endfloat} + \sorry@no{placeins} + % Related to footnotes and endnotes: + \sorry@no{footmisc} + \sorry@no{footnote} + \sorry@no{manyfoot} + % Related to tables: + \sorry@no{multirow} + \sorry@no{tabu} + \sorry@no{tabularx} + \sorry@no{tabulary} + \sorry@no{longtable} + % Related to lists: + \sorry@no{array} + \sorry@no{easylist} + \sorry@no{listings} + \sorry@no{numitem} + \sorry@no{tasks} + % Related to graphics or layout: + \sorry@no{pagegrid} + \sorry@no{subfig} + \sorry@no{lpic} + \sorry@no{pinlabel} + \sorry@no{overpic} + \sorry@no{caption} + \sorry@no{sidecap} + \sorry@no{subcaption} + \sorry@no{paracol} + \sorry@no{scrextend} + \sorry@no{exsheets} + \sorry@no{eqparbox} + \sorry@no{colortbl} + \sorry@no{tikz} + \sorry@no{pstricks} + \sorry@no{xypic} + \sorry@no{xfig} + \sorry@no{pgfcalendar} + \sorry@no{pgfpages} + \sorry@no{pst-pdf} + \sorry@no{auto-pst-pdf} + \sorry@no{epstopdf} + \sorry@no{pdftricks} + \sorry@no{pdftricks2} + \sorry@no{mpgraphics} + \sorry@no{pict2e} + \sorry@no{picman} + \sorry@no{scalerel} + \sorry@no{pmgraph} + \sorry@no{reflectgraphics} + \fi % end if sandbox. + % + %% Commands and environments, only allowed in sandbox: + \if@sandbox\else + \gdef\mplibcode{\@OnlySandbox{mplibcode}} \fi -} + % + %% Alert packages, might cause minor layout problems, not enough to block: + \alert@nodisp{nth} + \alert@nodisp{engord} + \alert@nodisp{ulem} + \alert@nodisp{soul} + % end list of Alert packages. + % + %% Package `pagegrid' interacts with `shademargins' and `draft' options: + \@ifpackageloaded{pagegrid}{ % that is, if permitted by sandbox or unblock + \ifdraftdoc + \if@shademargins + \ClassWarning{novel}{^^JGrid from `pagegrid' is concealed. ^^J% + Document class option `shademargins' over-writes page grid. ^^J% + To see the grid, use `draft' but not `shademargins'. ^^J} + \else\fi + \else + \ClassError{novel}{Package `pagegrid' needs `draft' mode}% + {Package `pagegrid' only with document class option `draft'.}% + \fi + }{} % end if pagegrid +}% end \AtBeginDocument %% -%% AtBeginShipout occurs at the completion of each page layout, in document body. -\AtBeginShipout{% - \gdef\@fnafter{}% Pertains to some standard LaTeX footnote code. - \stepcounter{runningpages}% - \global\@thispagestylesetfalse% -} -%% - %% %% End of file `novel.cls' |