summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/lualatex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2018-04-29 23:01:28 +0000
committerKarl Berry <karl@freefriends.org>2018-04-29 23:01:28 +0000
commit07e8af9baf7a1fb3ae90901b8fe31460a80cb2d2 (patch)
tree942288a55a6debbd3540eba18c0751a5508819e1 /Master/texmf-dist/tex/lualatex
parent962840188681e1d6f4aec0ebf07e05a70609325d (diff)
novel (26apr18)
git-svn-id: svn://tug.org/texlive/trunk@47492 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/lualatex')
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-CalculateLayout.sty4
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-ChapterScene.sty54
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-DropCap.sty6
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-FileData.sty2
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-Fonts.sty20
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-Footnotes.sty4
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-HeadFootStyles.sty3
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-Images.sty170
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-LayoutSettings.sty111
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-Obsolete.sty34
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-PostLayout.sty2
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-Sandbox.sty8
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-TextMacros.sty204
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-pdfx.sty10
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel.cls88
15 files changed, 528 insertions, 192 deletions
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-CalculateLayout.sty b/Master/texmf-dist/tex/lualatex/novel/novel-CalculateLayout.sty
index fad3c78deb1..fbb8671302d 100644
--- a/Master/texmf-dist/tex/lualatex/novel/novel-CalculateLayout.sty
+++ b/Master/texmf-dist/tex/lualatex/novel/novel-CalculateLayout.sty
@@ -12,7 +12,7 @@
%%
%%
\ProvidesFile{novel-CalculateLayout.sty}%
-[2018/04/07 v1.50.4 LaTeX file (layout calculations)]
+[2018/04/26 v1.52 LaTeX file (layout calculations)]
%%
%%
@@ -303,7 +303,7 @@
% 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}
+\gsetlength\topskip{\baselineskip} % absorber
% 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}
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-ChapterScene.sty b/Master/texmf-dist/tex/lualatex/novel/novel-ChapterScene.sty
index a1bc3e2ec26..e297eeacd34 100644
--- a/Master/texmf-dist/tex/lualatex/novel/novel-ChapterScene.sty
+++ b/Master/texmf-dist/tex/lualatex/novel/novel-ChapterScene.sty
@@ -13,7 +13,7 @@
%%
%%
\ProvidesFile{novel-ChapterScene.sty}%
-[2018/04/07 v1.50.4 LaTeX file (chapter and scene macros)]
+[2018/04/26 v1.52 LaTeX file (chapter and scene macros)]
%%
@@ -94,18 +94,60 @@
% Default behavior is \noindent for following paragraph.
% Use \SetScenebreakIndent{true or false} in Preamble to change globally.
% Either way, local behavior changed using \forceindent or \backindent.
-\newcommand\scenebreak{\null}
+% \newcommand\scenebreak{\null}
+%
+\newcommand\scenebreak{% revised in version 1.52.
+ \leavevmode\getBreakpos{scenebreak}~\par
+}
%
\newcommand\sceneline{%
- \noindent\hfil%
+ \noindent\getBreakpos{sceneline}\hfil%
\raisebox{0.2em}{\rule{0.35\textwidth}{.4pt}}\hfil\par%
}
%
\newcommand\scenestars{%
- \noindent\hfil%
+ \noindent\getBreakpos{scenestars}\hfil%
\raisebox{-.3em}{*\quad\quad*\quad\quad*}\hfil\par%
}
-%% end scene changes
+%
+\gdef\getBreakpos#1{%
+ \begingroup%
+ \savepos%
+ \protected@write\@auxout{}{%
+ \protect\@getBreakpos{\noexpand\number\lastypos}{\thepage}{#1}%
+ }%
+ \endgroup%
+}
+%
+\newlength\CurrentBreakpos
+\gdef\@getBreakpos#1#2#3{} % nothing, when reading aux at beginning
+\gdef\@RedefineBreakpos{ % called by `novel.cls' \AtBeginDocument
+ \gdef\@getBreakpos##1##2##3{% numerical position sp, page, break type
+ \gsetlength\CurrentBreakpos{##1sp}% measured up from very bottom of page.
+ \FPsub{\@BreakLines}{\strip@pt\TotalYpos}{\strip@pt\CurrentBreakpos}
+ \FPdiv{\@BreakLines}{\@BreakLines}{\strip@pt\nbs}%
+ \FPround{\@BreakLines}{\@BreakLines}{0}% integer lines from text top
+ \ifthenelse{\equal{##3}{scenebreak}}{%
+ \xdef\thisline{\@BreakLines}%
+ \ifnum\@BreakLines=1%
+ \ClassWarning{novel}{Replace \string\scenebreak\space at top of ^^J%
+ page ##2 with \string\sceneline\space or \string\scenestars.}%
+ \fi%
+ \ifnum\@BreakLines=\@LinesPerPage%
+ \ClassWarning{novel}{Replace \string\scenebreak\space at bottom of ^^J%
+ page ##2 with \string\sceneline\space or \string\scenestars.}%
+ \fi%
+ }{}%
+ \FPsub{\@nearthebottom}{\@LinesPerPage}{1}%
+ \ifnum\@BreakLines=2%
+ \ClassWarning{novel}{\string\ ##3 too close to top of page ##2.}%
+ \fi%
+ \ifnum\@BreakLines=\@nearthebottom%
+ \ClassWarning{novel}{\string\ ##3 too close to bottom of page ##2.}%
+ \fi%
+ }%
+} % end @RedefineBreakpos
+%%
%% Repair \FirstLine{} command from `magaz' package.
@@ -194,7 +236,7 @@
\vspace{\@fixlines\nbs}%
\if@DeleteCSline\else\null\fi% adjusts when dropfolioinside
\global\@WithinChapterStartfalse%
- \vspace{\@NovelCaulk}%
+ \vspace{0.1pt plus 0pt minus 0.2pt}% caulk
\gsetlength\parindent{\normalparindent}% restored
\nov@AfterGroup\NoIndentAfterThis% etextools and noindentafter
}
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-DropCap.sty b/Master/texmf-dist/tex/lualatex/novel/novel-DropCap.sty
index ff45fa61012..3a6233e3f5d 100644
--- a/Master/texmf-dist/tex/lualatex/novel/novel-DropCap.sty
+++ b/Master/texmf-dist/tex/lualatex/novel/novel-DropCap.sty
@@ -19,7 +19,7 @@
% This file is new in `novel' version 1.50.
%
\ProvidesFile{novel-DropCap.sty}%
- [2018/04/07 v1.50.4 (Drop Caps)]
+ [2018/04/26 v1.52 (Drop Caps)]
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%
%
@@ -94,7 +94,6 @@
\newdimen\NDCboxheight
\newdimen\NDCboxdepth
%
-\ExplSyntaxOn
\DeclareDocumentCommand \NDC@boxcap { m }{%
\begingroup%
% The model letter has no upper diacritical.
@@ -163,7 +162,7 @@
\FPdiv{\@tempN}{\strip@pt\textwidth}{\strip@pt\@OriginalTextWidth}%
\FPmul{\NDC@bloat}{\NDC@bloat}{\@tempN}%
\else%
- \if@ReworkMargins
+ \if@ReworkMargins%
\FPdiv{\@tempN}{\strip@pt\textwidth}{\strip@pt\@OriginalTextWidth}%
\FPmul{\NDC@bloat}{\NDC@bloat}{\@tempN}%
\fi%
@@ -214,7 +213,6 @@
}%
\fi%
}% end @NDCdropcap
-\ExplSyntaxOff
%%
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-FileData.sty b/Master/texmf-dist/tex/lualatex/novel/novel-FileData.sty
index ac77df6d043..803ef635c0e 100644
--- a/Master/texmf-dist/tex/lualatex/novel/novel-FileData.sty
+++ b/Master/texmf-dist/tex/lualatex/novel/novel-FileData.sty
@@ -13,7 +13,7 @@
%%
%%
\ProvidesFile{novel-FileData.sty}%
-[2018/04/07 v1.50.4 LaTeX file (File Data settings)]
+[2018/04/26 v1.52 LaTeX file (File Data settings)]
%%
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-Fonts.sty b/Master/texmf-dist/tex/lualatex/novel/novel-Fonts.sty
index 7fcee811bab..11341046f0d 100644
--- a/Master/texmf-dist/tex/lualatex/novel/novel-Fonts.sty
+++ b/Master/texmf-dist/tex/lualatex/novel/novel-Fonts.sty
@@ -13,7 +13,7 @@
%%
%%
\ProvidesFile{novel-Fonts.sty}%
-[2018/04/07 v1.50.4 LaTeX file (font settings and defaults)]
+[2018/04/26 v1.52 LaTeX file (font settings and defaults)]
%%
@@ -164,7 +164,6 @@
\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}
@@ -204,6 +203,7 @@
}%
}% end \@setdropcapcolor
% for convenience:
+\ExplSyntaxOn
\cs_new_eq:NN \SetDropcapFont \SetDropCapFont
\cs_new_eq:NN \SetDropcapColor \SetDropCapColor
\ExplSyntaxOff
@@ -274,9 +274,9 @@
%% ----------------------------------------------------------------------------
\gdef\@ActivateFonts{% called by `novel.cls' \AtEndPreamble
% We begin with the parent font:
- \if@coverart %%%%%
- \SetParentFont{NovelDeco.otf} %%%%%
- \fi %%%%%
+ \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
@@ -301,12 +301,12 @@
\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%
+ 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%
+ Use \string\SetParentFont[features]{font}\space instead. ^^J%
See `novel' documentation.}%
\fi
}%
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-Footnotes.sty b/Master/texmf-dist/tex/lualatex/novel/novel-Footnotes.sty
index 27f60dc670e..fb21fb1f7cd 100644
--- a/Master/texmf-dist/tex/lualatex/novel/novel-Footnotes.sty
+++ b/Master/texmf-dist/tex/lualatex/novel/novel-Footnotes.sty
@@ -13,7 +13,7 @@
%%
%%
\ProvidesFile{novel-Footnotes.sty}%
-[2018/04/07 v1.50.4 LaTeX file (commands for footnotes and endnotes)]
+[2018/04/26 v1.52 LaTeX file (commands for footnotes and endnotes)]
%%
@@ -189,7 +189,7 @@
}{%
\global\togglefalse{@usenomark}%
}%
- \gdef\footnoterule{\vfill\@fourem}% %%%%%
+ \gdef\footnoterule{\vfill\@fourem}%
\begingroup%
\def\footnotesize{% Not gdef. Local to footnote. Calculated during layout.
\@setfontsize\footnotesize{\@myfootnotesizeN pt}{\@myfootnoteskipN pt}%
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-HeadFootStyles.sty b/Master/texmf-dist/tex/lualatex/novel/novel-HeadFootStyles.sty
index 5687523a84a..e19000bb264 100644
--- a/Master/texmf-dist/tex/lualatex/novel/novel-HeadFootStyles.sty
+++ b/Master/texmf-dist/tex/lualatex/novel/novel-HeadFootStyles.sty
@@ -13,7 +13,7 @@
%%
%%
\ProvidesFile{novel-HeadFootStyles.sty}%
-[2018/04/07 v1.50.4 LaTeX file (header and footer layouts and styles)]
+[2018/04/26 v1.52 LaTeX file (header and footer layouts and styles)]
%%
@@ -465,7 +465,6 @@
% END PRE-DEFINED LAYOUTS AND STYLES.
% ---------------------------------------------------------------------------
%
-%%%%%
% Now put `fancyhdr' to work:
\pagestyle{fancy} % default unless over-ridden by \thispagestyle{}
%
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-Images.sty b/Master/texmf-dist/tex/lualatex/novel/novel-Images.sty
index 3b3bfc16db8..fc6261e072a 100644
--- a/Master/texmf-dist/tex/lualatex/novel/novel-Images.sty
+++ b/Master/texmf-dist/tex/lualatex/novel/novel-Images.sty
@@ -13,7 +13,7 @@
%%
%%
\ProvidesFile{novel-Images.sty}%
-[2018/04/07 v1.50.4 LaTeX file (image placement)]
+[2018/04/26 v1.52 LaTeX file (image placement)]
%%
@@ -215,7 +215,15 @@ end
% 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}%
+ \@TestImageExtension{#3}%
+ \@tempTFfalse%
+ \if@pdfxSEToff%
+ \@tempTFtrue%
+ \else%
+ \IfSubStr*{\@UnknownImages}{#3}{\@tempTFtrue}{}%
+ \IfSubStr*{\@AllGoodImages}{#3}{\@tempTFtrue}{}%
+ \fi%
+ \if@tempTF\else\@NovelInspectImage{#3}\fi%
\StrDel{#2}{\space}[\@myila]%
\StrCut{\@myila}{,}{\@myilxa}{\@myilya}%
\ifthenelse{\equal{\@myilxa}{} \OR \equal{\@myilxa}{0}}{%
@@ -297,6 +305,14 @@ end
{Header footer allow \string\InlineImage, but not \string\FloatImage.}%
}{}%
\@TestImageExtension{#3}%
+ \@tempTFfalse%
+ \if@pdfxSEToff%
+ \@tempTFtrue%
+ \else%
+ \IfSubStr*{\@UnknownImages}{#3}{\@tempTFtrue}{}%
+ \IfSubStr*{\@AllGoodImages}{#3}{\@tempTFtrue}{}%
+ \fi%
+ \if@tempTF\else\@NovelInspectImage{#3}\fi%
% Sadly, parsing with `xstring' involves roundabout code:
\StrDel{#2}{\space}[\@tempArgs]%
\StrCut{\@tempArgs}{,}{\@tempArgA}{\@tempArgX}%
@@ -333,10 +349,28 @@ end
\end@float\par%
\floatlocation{figure}{!ht}% restore default float method
\null%
- \vspace{-\nbs}%
- \vspace{\@NovelCaulk}%
+ \vspace{0.01pt plus 0pt minus 0.02pt} % caulk
} %
%
+
+%% Environment @floatimagegap. Only used by \@FloatImage command.
+% Creates a gap at fixed height, regardless of content.
+% Needs to compensate for prior line depth.
+\newcounter{@gaplines} % passes the argument down to environment end
+\DeclareDocumentEnvironment {@floatimagegap} { m } {%
+ \par%
+ \null%
+ \vspace*{-\nbs}%
+ \begin{textblock*}{\textwidth}[0,0](0pt,0pt)%
+ \setcounter{@gaplines}{#1}%
+ \strut\par%
+ \vspace*{-\nbs}%
+}{% close the environment:
+ \end{textblock*}%
+ \par%
+ \vspace*{#1\nbs}%
+} %
+%%
\DeclareDocumentCommand \@FloatImage { m m m }{% DO NOT CALL DIRECTLY
\global\@UsingNovelCommandtrue%
\gdef\@mygraphic{\novel@sub@inclgr[scale=\@TMratio]{#3}}%
@@ -353,13 +387,13 @@ end
% 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
+ % In `novel' this behavior 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}%
+ \begin{@floatimagegap}{\@allowmyoverflow}%
\vspace*{-\nfs}%
\null%
{\centering%
@@ -369,7 +403,7 @@ end
}%
\par%
}%
- \end{linegap}%
+ \end{@floatimagegap}%
\global\@UsingNovelCommandfalse%
} %
% end Float Image
@@ -401,8 +435,128 @@ end
%%
+%% New in version 1.52: read file bytes as plain text, for later parsing.
+% Output is comma-separated list of byte codes, decimal 0-255.
+% Returns -1 if requested start is more than file size.
+% Returns all bytes if requested number exceeds file size.
+% Does not test if file exists; error if not found.
+\DeclareDocumentCommand\novelgetbytes { m m m } {%
+ % filename, start byte number (0=beginning, e=up to end), number of bytes
+ \ifthenelse{\equal{#2}{e}}{% package xifthen
+ \long\edef\novelbytesare{%
+ \directlua{
+ inp = assert(io.open("#1", "rb"))
+ local e=inp:seek("end")
+ if #3>e+1 then
+ inp:seek("set")
+ local r=inp:read(e)
+ sep=""
+ for i,_ in string.bytes(r)
+ do
+ tex.sprint(sep)
+ sep=","
+ tex.sprint(i)
+ end
+ else
+ local b=e-2-math.min(e,#3)
+ local w=1+math.min(e,#3)
+ inp:seek("set",b)
+ local r=inp:read(w)
+ sep=""
+ for i,_ in string.bytes(r)
+ do
+ tex.sprint(sep)
+ sep=","
+ tex.sprint(i)
+ end
+ end
+ }%
+ }%
+ }{%
+ \long\edef\novelbytesare{%
+ \directlua{
+ inp = assert(io.open("#1", "rb"))
+ local e=inp:seek("end")
+ if #2>e then tex.sprint(-1) else
+ local w=math.min(#3,e-#2)
+ inp:seek("set",#2)
+ local r=inp:read(w)
+ sep=""
+ for i,_ in string.bytes(r)
+ do
+ tex.sprint(sep)
+ sep=","
+ tex.sprint(i)
+ end
+ end
+ }%
+ }%
+ }%
+} % end @novelgetbytes
+
+%%
+% png bit depth is 8 for ordinary color or gray, 1 for b/w monochrome.
+% Although png allows more than 8, `novel' does not.
+\def\novelpngbitdepth#1{\novelgetbytes{#1}{24}{1}\novelbytesare}
+% png color type: 0=grayscale (incl. b/w).
+% `novel' only permits colortype 0 for non-color book interiors.
+% other: 2=rgb, 3=indexed rgb, 4=gray alpha, 6=rgb alpha.
+\def\novelpngcolortype#1{\novelgetbytes{#1}{25}{1}\novelbytesare}
+%%
+
+%%
+% Examine png or jpg image for novel-make as comment:
+% Known-good images, will not be inspected. Comma-separated list:
+\newcommand\SetKnownGoodImages[1]{
+ \gdef\@KnownGoodImages{#1}
+}
+\SetKnownGoodImages{} % default empty
+\gdef\@AllGoodImages{}
+\gdef\@UnknownImages{}
+%
+\gdef\@GatherGoodImages{% called \AtBeginDocument by `novel.cls'.
+ \let\SetKnownGoodImages\relax
+ \xdef\@AllGoodImages{\@KnownGoodImages\space \@AllGoodImages}
+ \if@pdfxSEToff
+ \xdef\@AllGoodImages{\@KnownGoodImages}
+ \xdef\@UnknownImages{}
+ \fi
+}
+% This is the (decimal) code string:
+\gdef\@novelmake{110,111,118,101,108,109,97,107,101}
+%
+\newcommand\@NovelInspectImage[1]{%
+ \StrRight{#1}{3}[\tempEXT]%
+ \ifthenelse{\equal{\tempEXT}{png} \OR \equal{\tempEXT}{PNG}}{%
+ \novelgetbytes{#1}{e}{256}%
+ }{% jpg or JPG:
+ \novelgetbytes{#1}{0}{256}%
+ }%
+ \IfSubStr{\novelbytesare}{\@novelmake}{%
+ \xdef\@AllGoodImages{\@AllGoodImages\space #1}%
+ }{%
+ \xdef\@UnknownImages{\@UnknownImages\space #1}%
+ }%
+}
+%%
+
+
+%% Called \AfterEndDocument by `novel.cls`:
+\long\gdef\@WarnUnknownImages{%
+ \@tempTFfalse%
+ \ifthenelse{\equal{\@UnknownImages}{}}{}{\@tempTFtrue}%
+ \if@pdfxSEToff\@tempTFfalse\fi%
+ \if@tempTF%
+ \typeout{^^JClass `novel' Alert: Some images not processed by scripts.^^J%
+ \space List of unprocessed images: \@UnknownImages ^^J%
+ \space Above list does not include any `known good' set by you. ^^J^^J}%
+ \ClassWarning{novel}{\@testintentional %
+ Some images may not meet PDF/X specifications. ^^J%
+ See near end of log file for `Some images not processed by scripts`. ^^J}%
+ \fi%
+}
+%%
-
%%
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-LayoutSettings.sty b/Master/texmf-dist/tex/lualatex/novel/novel-LayoutSettings.sty
index b316f2e7eac..690a4b03e6d 100644
--- a/Master/texmf-dist/tex/lualatex/novel/novel-LayoutSettings.sty
+++ b/Master/texmf-dist/tex/lualatex/novel/novel-LayoutSettings.sty
@@ -13,7 +13,7 @@
%%
%%
\ProvidesFile{novel-LayoutSettings.sty}%
-[2018/04/07 v1.50.4 LaTeX file (layout settings)]
+[2018/04/26 v1.52 LaTeX file (layout settings)]
%%
@@ -209,39 +209,44 @@
%
\@twocolumnfalse
\@twosidetrue
-\@mparswitchtrue
+\setlength\columnsep{12pt} % not needed, picked something at random
+\setlength\columnseprule{0pt}
+%
+\@mparswitchtrue % irrelevant
+\setlength\marginparwidth{0pt} % no marginal paragraphs allowed
+\setlength\marginparsep{0pt}
+\setlength\marginparpush{0pt}
%
+\global\@topnum \z@
\setlength\abovedisplayskip{0pt}
\setlength\abovedisplayshortskip{0pt}
\setlength\belowdisplayshortskip{0pt}
\setlength\belowdisplayskip{0pt}
-\global\@topnum \z@
-%
\setlength\smallskipamount{0pt}
\setlength\medskipamount{0pt}
\setlength\bigskipamount{0pt}
+% `novel' uses grid setting. However, to allow for roundoff errors in
+% vertical position calculations, there is a tiny amount of wiggle room:
\setlength\topsep{0pt}
\setlength\partopsep{0pt}
\setlength\parsep{0pt}
-\setlength\marginparwidth{0pt}
-\setlength\marginparsep{0pt}
-\setlength\marginparpush{0pt}
+\setlength\parskip{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.
+% \topskip will be set as normal baselineskip, 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}
+\setlength\lineskiplimit{-2pt} % allows some limited vertical clash
\renewcommand\baselinestretch{1} % multiplier
-\setlength\parskip{0pt}
+\widowpenalty 150 % same as TeX default
+\clubpenalty 150 % same as TeX default
\@lowpenalty 51
\@medpenalty 151
\@highpenalty 301
-% Floats not allowed, but just in case:
+% Floats are limited, but just in case:
\setcounter{topnumber}{2}
\renewcommand\topfraction{.7}
\setcounter{bottomnumber}{1}
@@ -261,8 +266,6 @@
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\normalfont\slshape}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\normalfont\scshape}
%
-\setlength\columnsep{12pt} % usually not needed, picked something at random
-\setlength\columnseprule{0pt}
\pagestyle{empty} % will be over-ridden by fancyhead in separate file
\pagenumbering{arabic} % may be over-ridden in document
\flushbottom % best for continuous text
@@ -271,10 +274,6 @@
-
-
-
-
%% FRONTMATTER, MAINMATTER. BUT NO BACKMATTER!
%% ----------------------------------------------------------------------------
%
@@ -343,20 +342,24 @@
% but would interfere with the `novel' emphasis on constant line skip.
% You may redefine the commands using your own Preamble code (discouraged).
%
-\gdef\null{\hbox{\strut}} % May be important!
+%%%%%\gdef\null{\hbox{\strut}} % May be important!
%
% Standard LaTeX font sizes are ineffective:
+\gdef\@noSizeCommand#1{\ClassWarning{novel}{%
+ Standard LaTeX font sizes are ineffective in `novel' class. ^^J%
+ Your use of command `#1' was ignored. ^^J}%
+}
\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
+ \gdef\HUGE{\@noSizeCommand{HUGE}}
+ \gdef\Huge{\@noSizeCommand{Huge}}
+ \gdef\huge{\@noSizeCommand{huge}}
+ \gdef\LARGE{\@noSizeCommand{LARGE}}
+ \gdef\Large{\@noSizeCommand{Large}}
+ \gdef\large{\@noSizeCommand{large}}
+ \gdef\small{\@noSizeCommand{small}}
+ \gdef\footnotesize{\@noSizeCommand{footnotesize}}
+ \gdef\scriptsize{\@noSizeCommand{scriptsize}}
+ \gdef\tiny{\@noSizeCommand{tiny}}
} %
% In `novel' there is no academic organization.
% All these do is echo the argument, if any:
@@ -371,24 +374,44 @@
% In some situations, the use will be interrupted:
\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.}%
+ {Many academic layout commands or environments are disabled in `novel'.}%
+}
+\DeclareDocumentCommand\@sandboxonly { m } {%
+ \ClassError{novel}{ ^^J%
+ Command or environment `#1' only allowed in `sandbox' mode. ^^J%
+ See `novel' documentation 2.2. ^^J
+ The offending command may have been called by another macro.}%
+ {Fix your code. If you do not, then compile will fail or be unexpected.}%
}
% Here is the interruption list:
-\long\gdef\maketitle\@nodocommand{maketitle}
-\long\gdef\makeindex\@nodocommand{makeindex}
-\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}
+\long\gdef\maketitle{\@nodocommand{maketitle}}
+\long\gdef\makeindex{\@nodocommand{makeindex}}
+\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\abstract{\@nodocommand{abstract}}
+\if@sandbox\else
+ \DeclareDocumentCommand\caption{}{\@sandboxonly{caption}}
+ \DeclareDocumentEnvironment{tabular}{s o +m}{\@sandboxonly{tabular}}{}
+ \DeclareDocumentEnvironment{table}{s o}{\@sandboxonly{table}}{}
+ \DeclareDocumentEnvironment{figure}{s o}{\@sandboxonly{figure}}{}
+ \DeclareDocumentEnvironment{itemize}{s}{\@sandboxonly{itemize}}{}
+ \DeclareDocumentEnvironment{enumerate}{s}{\@sandboxonly{enumerate}}{}
+ \DeclareDocumentEnvironment{description}{s}{\@sandboxonly{description}}{}
+ \DeclareDocumentEnvironment{labeling}{s}{\@sandboxonly{labeling}}{}
+\fi
%
+\newif \if@OnTitlePage % not really useful
+\DeclareDocumentEnvironment{titlepage}{s}{%
+ \clearpage
+ \thispagestyle{empty}
+ \global\@OnTitlePagetrue
+}{
+ \clearpage
+ \global\@OnTitlePagefalse
+}
%% end disable or neutralize.
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-Obsolete.sty b/Master/texmf-dist/tex/lualatex/novel/novel-Obsolete.sty
index 326a70bf1e9..305fc7b7c71 100644
--- a/Master/texmf-dist/tex/lualatex/novel/novel-Obsolete.sty
+++ b/Master/texmf-dist/tex/lualatex/novel/novel-Obsolete.sty
@@ -13,7 +13,7 @@
%%
%%
\ProvidesFile{novel-Obsolete.sty}%
-[2018/04/07 v1.50.4 LaTeX file (obsolete macros)]
+[2018/04/26 v1.52 LaTeX file (obsolete macros)]
%%
@@ -243,6 +243,38 @@
%%
+%% LINEGAP IS OBSOLETE CODE. NOT DOCUMENTED.
+%% ----------------------------------------------------------------------------
+% 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.
+\DeclareDocumentEnvironment {linegap} { m } {%
+ \FPifint{#1}\else%
+ \ClassError{novel}{Non-integer linegap on page \thepage}%
+ {Only integer >= 1 allowed for linegap.}%
+ \fi%
+ \FPiflt{#1}{1}%
+ \ClassError{novel}{Insufficient linegap on page \thepage}%
+ {Only integer >= 1 allowed for linegap.}%
+ \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*}%
+ \global\@WithinLinegapfalse%
+ \par%
+ \vspace*{#1\nbs}%
+ \setcounter{currentlinegap}{0}%
+} % end linegap (obsolete)
+%%
+
+
%% REWORK IS OBSOLETE CODE. NOT DOCUMENTED.
%% ----------------------------------------------------------------------------
%% \ReworkTrimSize retroactively changes Trim Size after layout.
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-PostLayout.sty b/Master/texmf-dist/tex/lualatex/novel/novel-PostLayout.sty
index 4f3808fe274..a2796db1d1c 100644
--- a/Master/texmf-dist/tex/lualatex/novel/novel-PostLayout.sty
+++ b/Master/texmf-dist/tex/lualatex/novel/novel-PostLayout.sty
@@ -12,7 +12,7 @@
%%
%%
\ProvidesFile{novel-PostLayout.sty}%
-[2018/04/07 v1.50.4 LaTeX file (post-layout modifications)]
+[2018/04/26 v1.52 LaTeX file (post-layout modifications)]
%%
%%
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-Sandbox.sty b/Master/texmf-dist/tex/lualatex/novel/novel-Sandbox.sty
index d1ed240d50c..9939c661101 100644
--- a/Master/texmf-dist/tex/lualatex/novel/novel-Sandbox.sty
+++ b/Master/texmf-dist/tex/lualatex/novel/novel-Sandbox.sty
@@ -17,7 +17,7 @@
%%
%%
\ProvidesFile{novel-Sandbox.sty}%
-[2018/04/07 v1.50.4 LaTeX file (used only with sandbox class option)]
+[2018/04/26 v1.52 LaTeX file (used only with sandbox class option)]
%%
%%
@@ -25,8 +25,10 @@
%% It provides support for tables, and a few other things that ordinarily
%% would be prohibited in `novel' due to possible layout incompatibility.
%%
-
-
+%% Normally, `novel' sets many glues and lengths to zero, to maintain line grid.
+%% But `sandbox', sets the glues to values typical of other document classes.
+%% So, not only can you construct tables, they will look as expected.
+%%
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-TextMacros.sty b/Master/texmf-dist/tex/lualatex/novel/novel-TextMacros.sty
index 793d1746080..5b994c25389 100644
--- a/Master/texmf-dist/tex/lualatex/novel/novel-TextMacros.sty
+++ b/Master/texmf-dist/tex/lualatex/novel/novel-TextMacros.sty
@@ -13,7 +13,7 @@
%%
%%
\ProvidesFile{novel-TextMacros.sty}%
-[2018/04/07 v1.50.4 LaTeX file (text macros usable within document body)]
+[2018/04/26 v1.52 LaTeX file (text macros usable within document body)]
%%
@@ -112,10 +112,10 @@
%%
%% \smcp{} and \textsc{} small caps (Open Type) and \allsmcp{}:
-\ExplSyntaxOn
\DeclareDocumentCommand \smcp { +m } {% lowercase to small caps
{\addfontfeature{Letters=SmallCaps}#1}%
}
+\ExplSyntaxOn
\DeclareDocumentCommand \allsmcp { +m } {% lowercase+uppercase to small caps
\fontspec_if_feature:nTF {c2sc}{%
{\addfontfeatures{Letters=UppercaseSmallCaps, Letters=SmallCaps}#1}%
@@ -231,7 +231,6 @@
% 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 } {%
% Allows empty or blank to be used, and still provide default values:
\ifthenelse{\equal{#2}{}\OR\equal{#2}{\space}}{%
@@ -271,47 +270,107 @@
\smash{\phantom{\scalebox{\@myscale}{#3}}}%
}%
}% end \charscale
-\ExplSyntaxOff
%%
-%% 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
-% of font size and baselineskip, relative to normal. Note that both size
-% and skip are scaled together. The default is 1, meaning no change.
-% To get the rough equivalent of traditional \footnotesize, use 0.83 scale.
-% Example:
-% \begin{parascale}[0.83]
-% This text is like old footnotesize. It can go on for many lines.\par
-% Be sure to end with the paragraph ending.\par
-% You may need to manipulate whether anything indents.\par
-% \end{parascale}
-% Normally you should NOT use this environment within the main text,
-% as it will upset the baselineskip there. If you have to do that for
-% a special effect, then use \vspace{} before and after the environment,
-% so that the following normalsize text is re-aligned. You'll have to
-% do the calculations yourself.
-\newenvironment{parascale}[1][1]
-{\begingroup%
-\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}
+
+% Note that \savepos is a luatex primitive, not a macro from gridset package.
+% Length \TotalYpos is measured from the very bottom of the page,
+% upward to the baseline of non-existent "line zero" in main text.
+% The first printed main text line is line 1.
+% Neither header nor footer influence this.
+\newlength\TotalYpos
+\gdef\@GetInitialYpos{% called by `novel.cls' \AtEndPreamble
+ \begingroup%
+ \savepos%
+ \protected@write\@auxout{}{%
+ \protect\@TotalYpos{\noexpand\number\lastypos}%
+ }%
+ \endgroup%
+}
+%
+\gdef\@TotalYpos#1{\gsetlength\TotalYpos{#1sp}}
+%
+
+
+%%
+\newlength\PosTolerance % How close is close enough?
+\setlength\PosTolerance{0.0625pt} % should be good enough
%%
+
+%% Environment parascale. Scales one or more paragraphs. Modified in v. 1.52.
+% Warns when (as is often the case) the line after \end{parascale}
+% will be off grid. Then, add some \vspace just before \end{parascale}.
+\newenvironment{parascale}[1][1]{% optional argument is scale, default 1.
+ \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}%
+ \FPsub{\@mytempSkipN}{\strip@pt\baselineskip}{\@mytempDetailsSkipN}%
+ \vspace{\@mytempSkipN pt}% puts first scaled line at normal baseline
+ \begingroup%
+ \fontsize{\@mytempDetailsFontN pt}{\@mytempDetailsSkipN pt}\selectfont%
+ \ignorespaces%
+}{%
+ \par\endgroup%
+ \vspace{-\nbs}%
+ \leavevmode\getParapos\par% detects if following line will be off-grid
+ \vspace{0.002\nbs plus 0pt minus 0.2pt}% math fudge factor, in case of roundoff
+}
+%
+\gdef\getParapos{%
+ \begingroup%
+ \savepos%
+ \protected@write\@auxout{}{%
+ \protect\@getParapos{\noexpand\number\lastypos}{\thepage}%
+ }%
+ \endgroup%
+}
+%
+\newlength\CurrentParapos
+\gdef\@getParapos#1#2{} % initialized to nothing, when reading aux at beginning
+\gdef\@RedefineParapos{ % called by `novel.cls' \AtBeginDocument
+ \gdef\@getParapos##1##2{% numerical position sp, page
+ \gsetlength\CurrentParapos{##1sp}% measured up from very bottom of page.
+ % Now change it, to measure downward from "line zero" of main text:
+ \gsetlength\CurrentParapos{\TotalYpos-\CurrentParapos}% calc package.
+ \FPdiv{\ParaHowdown}{\strip@pt\CurrentParapos}{\strip@pt\nbs}% package fp
+ \FPtrunc{\ParaLinesdown}{\ParaHowdown}{0}% integer number of lines down
+ \FPsub{\ParaResidual}{\ParaHowdown}{\ParaLinesdown}% portion of line
+ \FPdiv{\@PosTolerance}{\strip@pt\PosTolerance}{\strip@pt\nbs}%
+ \gdef\ParaComplain{yes}%
+ \FPifgt{\@PosTolerance}{\ParaResidual}%
+ \gdef\ParaComplain{no}% within tolerance
+ \fi%
+ \FPsub{\ParaDeficit}{\strip@pt\nbs}{\ParaResidual}%
+ \FPifgt{\@PosTolerance}{\ParaDeficit}%
+ \gdef\ParaComplain{no}%
+ \fi%
+ \FPsub{\ParaResidual}{1}{\ParaResidual}%
+ \FPifgt{\@PosTolerance}{\ParaResidual}%
+ \gdef\ParaComplain{no}% within tolerance
+ \fi%
+ \FPifgt{\@PosTolerance}{\ParaDeficit}%
+ \gdef\ParaComplain{no}%
+ \fi%
+ \FPround{\ParaResidual}{\ParaResidual}{3}%
+ \FPclip{\ParaResidual}{\ParaResidual}%
+ \ifthenelse{\equal{\ParaComplain}{yes}}{%
+ \ClassWarning{novel}{Line after parascale may be off-grid, page ##2. ^^J%
+ Appears to be \ParaResidual\string\nbs\space higher than expected.}%
+ }{}%
+ }
+} % end @RedefineParapos
+%%
+
+
%% 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
\newlength\@tocskip
-\newenvironment{toc}[2][0]%
-{%
+\newenvironment{toc}[2][0]{%
\begin{adjustwidth}{#2}{#2}%
\begingroup%
\setlength\parindent{0pt}% local
@@ -335,7 +394,6 @@
}%
}%
#2\,%
- %%%%%\dotfill%
\leaders\hbox to 0.3em{\hfil.\hfil}\hfill% Thanks to user daniel-j via GitHub.
\,#3\par\vspace{\@tocskip}%
}%
@@ -389,43 +447,52 @@
}{}%
\ifthenelse{\equal{#1}{}}{}{\FPround{\@tempLengthN}{\@tempLengthN}{#1}}%
\@tempLengthN{#3}%
-}
+} %
%% end \showlength
%% \lnum for lining numbers.
\gdef\lnum#1{{\addfontfeature{Numbers=Lining}#1}}
%%
-%% 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
- \ClassError{novel}{Non-integer~linegap~on~page~\thepage}%
- {Only~integer~>=~1~allowed~for~linegap.}%
- \fi
- \FPiflt{#1}{1}
- \ClassError{novel}{Insufficient~linegap~on~page~\thepage}%
- {Only~integer~>=~1~allowed~for~linegap.}%
- \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*}
- \global\@WithinLinegapfalse
- \par
- \vspace*{#1\nbs}
- \setcounter{currentlinegap}{0}
-} %
-\ExplSyntaxOff
+
+%% For developer use: prints a number of yada yada lines.
+% Starred version adds extra smashed lines above and below.
+\newcount\yadacurrentcount
+\newcount\yadaendcount
+\DeclareDocumentCommand\novelyadayada { s O{1} }{%
+ \yadacurrentcount=1%
+ \yadaendcount=#2%
+ \ifthenelse{\equal{#2}{0}}{}{%
+ \IfBooleanTF{#1}{%
+ \def\@yadadblup{\charscale*[1,\normalparindent,2\nbs]{Dbl Raised yada}}%
+ \def\@yadaup{\charscale*[1,\normalparindent,\nbs]{Raised yada}}%
+ \def\@yadadown{%
+ \ifnum\yadacurrentcount=\yadaendcount%
+ \charscale*[1,\normalparindent,-\nbs]{Dropped yada}%
+ \fi%
+ }%
+ \def\@yadadbldown{%
+ \ifnum\yadacurrentcount=\yadaendcount%
+ \charscale*[1,\normalparindent,-2\nbs]{Dropped yada}%
+ \fi%
+ }%
+ }{%
+ \def\@yadadblup{}%
+ \def\@yadaup{}%
+ \def\@yadadown{}%
+ \def\@yadadbldown{}%
+ }%
+ \loop%
+ \noindent\@yadadblup\@yadaup\@yadadown\@yadadbldown%
+ \makebox[\normalparindent][l]{\the\yadacurrentcount.}%
+ Lotta yada.\par
+ \def\@yadaup{}%
+ \def\@yadadblup{}%
+ \advance\yadacurrentcount 1%
+ \ifnum\yadacurrentcount<\yadaendcount%
+ \repeat%
+ }%
+}
%%
@@ -498,11 +565,10 @@
\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{}.
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-pdfx.sty b/Master/texmf-dist/tex/lualatex/novel/novel-pdfx.sty
index 9b5e01c2cdb..4af4ea09f00 100644
--- a/Master/texmf-dist/tex/lualatex/novel/novel-pdfx.sty
+++ b/Master/texmf-dist/tex/lualatex/novel/novel-pdfx.sty
@@ -21,7 +21,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{novel-pdfx.sty}%
-[2018/04/07 v1.50.4 LaTeX file (PDF/X support for novel class)]
+[2018/04/26 v1.52 LaTeX file (PDF/X support for novel class)]
% This package supports, and is part of, class `novel'.
% No support for anything but LuaLaTeX.
@@ -41,18 +41,18 @@
\global\@pdfxISofftrue
\fi
%
-\AtBeginDocument{%
+\gdef\@AlertNoPDFX{% called by `novel.cls' 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}%
+ 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}%
+ Your document was processed with \string\SetPDFX{off}. ^^J}%
\fi
\fi
-} %
+} % end @AlertNoPDFX
%%
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel.cls b/Master/texmf-dist/tex/lualatex/novel/novel.cls
index 6aa91920027..e029b43c799 100644
--- a/Master/texmf-dist/tex/lualatex/novel/novel.cls
+++ b/Master/texmf-dist/tex/lualatex/novel/novel.cls
@@ -13,8 +13,9 @@
%%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
% Actually needs LuaLaTeX, at least version 0.95 from TeXLive 2016.
-\ProvidesClass{novel}[2018/04/07 v1.50.4 LaTeX document class]
+\ProvidesClass{novel}[2018/04/26 v1.52 LaTeX document class]
%%
+%% Version 1.50.n (any n) incremental minor changes from 1.50.
%% 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.
@@ -238,7 +239,7 @@
%
% New in version 1.50: sandbox option, for artwork and tables. Max 4 pages.
\newif \if@sandbox
-\DeclareOption{sandbox}{\@sandbox}
+\DeclareOption{sandbox}{\@sandboxtrue}
%
%% Note that document size and normal font size are not class options.
%% They are set by commands in the Preamble, and have default values.
@@ -251,6 +252,12 @@
\global\@closecropfalse
\fi
%
+\if@testsuite
+ \gdef\@testintentional{Test suite intentionally generates this warning. ^^J}
+\else
+ \gdef\@testintentional{}
+\fi
+%
\if@cropview
\global\@cropmarksfalse
\fi
@@ -292,7 +299,6 @@
%% 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
@@ -459,13 +465,7 @@
\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%
- }
+ \@GetInitialYpos% in `novel-TextMacros.sty
}%
%% end AtEndPreamble
@@ -518,23 +518,25 @@
}{}%
} %
\fi
-%% end messages.
-
-
-%% \AtBeginDocument finishes the setup
-%% ----------------------------------------------------------------------------
%
\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.}%
}
+%% end messages.
+
+
+%% \AtBeginDocument finishes the setup
+%% ----------------------------------------------------------------------------
+%
\AtBeginDocument{ %
- %% Mostly involve settings defaults:
+ \@RedefineParapos % in `novel-TextMacros.sty'
\@ActivateTextLengths % in `novel-TextMacros.sty'
\@ActivateDropCaps % in `novel-DropCaps.sty'
\@ActivateChapterScene % in `novel-ChapterScene.sty'
\@ActivateHeadFootStyles % in file `novel-HeadFootStyles.sty'
+ \@AlertNoPDFX % in file `novel-pdfx.sty'
\@ActivatePDFInfo % in file `novel-pdfx.sty'
\@ActivateTextMacros % in `novel-TextMacros.sty'
\@ActivateFootnotes % in `novel-Footnotes.sty'
@@ -542,8 +544,10 @@
\@DisableLayoutSettings % in file `novel-LayoutSettings.sty'
\@DisableFileDataSettings % in file `novel-FileData.sty'
\@DisableChapterSceneSettings % in file `novel-ChapterScene.sty'
+ \@RedefineBreakpos % in file `novel-ChapterScene.sty'
\@DisableHeadFootSettings % in file `novel-HeadFootStyles.sty'
- %% List of always-blocked packages (not exhaustive, since TeX has so many):
+ \@GatherGoodImages % in file `novel-Images.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}
@@ -559,13 +563,13 @@
\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)}
- %
- \if@sandbox%
- \RequirePackage{novel-Sandbox}%
- \fi%
- %
- %% Potential problem packages, allowed in sandbox or with unblock:
- \if@sandbox\else
+ \really@no{makeidx}{an incompatible layout method.}{1.2.5}
+ \really@no{gridset}{a command name conflict.}{4}
+ % Potential problem packages, allowed in sandbox or with unblock:
+ \if@sandbox
+ \RequirePackage{novel-Sandbox}
+ \else
+ \gdef\mplibcode{\@OnlySandbox{mplibcode}}
% Related to floats:
\sorry@no{floatflt}
\sorry@no{floatfig}
@@ -621,21 +625,14 @@
\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:
+ \fi % end sandbox.
+ % 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:
+ % Package `pagegrid' interacts with `shademargins' and `draft' options:
\@ifpackageloaded{pagegrid}{ % that is, if permitted by sandbox or unblock
\ifdraftdoc
\if@shademargins
@@ -652,6 +649,29 @@
%%
+%% AtEndDocument adds one or two blank pages, required by printers.
+% Also writes list of inspected, good images to aux, for later use:
+\AtEndDocument{%
+ \if@coverart\else%
+ \if@sandbox\else%
+ \immediate\write\@auxout{%
+ \string\xdef\string\@AllGoodImages{\@AllGoodImages}^^J%
+ \string\xdef\string\@UnknownImages{\@UnknownImages}^^J%
+ }%
+ \cleartoend% adds 1 or 2 blanks, for final verso blank
+ \fi%
+ \fi%
+}
+%%
+
+
+%% AfterEndDocument writes final message:
+\AfterEndDocument{
+ \@WarnUnknownImages % in `novel-Images.sty'.
+}
+%%
+
+
%%
%% End of file `novel.cls'