diff options
author | Karl Berry <karl@freefriends.org> | 2018-04-29 23:01:28 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2018-04-29 23:01:28 +0000 |
commit | 07e8af9baf7a1fb3ae90901b8fe31460a80cb2d2 (patch) | |
tree | 942288a55a6debbd3540eba18c0751a5508819e1 /Master/texmf-dist/tex/lualatex | |
parent | 962840188681e1d6f4aec0ebf07e05a70609325d (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')
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' |