summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/lualatex/novel
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2017-11-17 22:18:08 +0000
committerKarl Berry <karl@freefriends.org>2017-11-17 22:18:08 +0000
commit52f5a6fb83e0ac58c9bf3cd7c6faf21e26218463 (patch)
tree19042f8e64fa18aa478c2f5283b79c0e99e8e5ce /Master/texmf-dist/tex/lualatex/novel
parent391cfb2ba71abd1145f54ac3865e19aab5fe89d4 (diff)
novel (17nov17)
git-svn-id: svn://tug.org/texlive/trunk@45839 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/lualatex/novel')
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-CGATSTR001.clo2
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-CalculateLayout.sty2
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-ChapterScene.sty2
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-FOGRA39.clo2
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-FileData.sty2
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-FontDefaults.sty2
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-Footnotes.sty4
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-HeadFootStyles.sty23
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-Images.sty144
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-JC200103.clo2
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-LayoutSettings.sty7
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-TextMacros.sty147
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-glyphtounicode.tex2
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-microtype.cfg2
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-pdfx.sty2
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel-xmppacket.sty2
-rw-r--r--Master/texmf-dist/tex/lualatex/novel/novel.cls54
17 files changed, 218 insertions, 183 deletions
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-CGATSTR001.clo b/Master/texmf-dist/tex/lualatex/novel/novel-CGATSTR001.clo
index 496b79d02b6..4763ffe1266 100644
--- a/Master/texmf-dist/tex/lualatex/novel/novel-CGATSTR001.clo
+++ b/Master/texmf-dist/tex/lualatex/novel/novel-CGATSTR001.clo
@@ -1,4 +1,4 @@
-% Typically used in the USA. Novel file version 1.43.1
+% Typically used in the USA. Novel file version 1.46
% The values of the arguments are public industry standards.
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-CalculateLayout.sty b/Master/texmf-dist/tex/lualatex/novel/novel-CalculateLayout.sty
index 3f8bb3ba2c6..f4bf0a2640a 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}%
-[2017/11/12 v1.43.1 LaTeX file (layout calculations)]
+[2017/11/17 v1.46 LaTeX file (layout calculations)]
%%
%%
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-ChapterScene.sty b/Master/texmf-dist/tex/lualatex/novel/novel-ChapterScene.sty
index fd727dcb6ae..ae2f5ae073b 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}%
-[2017/11/12 v1.43.1 LaTeX file (chapter and scene macros)]
+[2017/11/17 v1.46 LaTeX file (chapter and scene macros)]
%%
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-FOGRA39.clo b/Master/texmf-dist/tex/lualatex/novel/novel-FOGRA39.clo
index 70c8a613219..83e85fa8d56 100644
--- a/Master/texmf-dist/tex/lualatex/novel/novel-FOGRA39.clo
+++ b/Master/texmf-dist/tex/lualatex/novel/novel-FOGRA39.clo
@@ -1,4 +1,4 @@
-% Typically used in Europe. Novel file version 1.43.1
+% Typically used in Europe. Novel file version 1.46
% The values of the arguments are public industry standards.
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-FileData.sty b/Master/texmf-dist/tex/lualatex/novel/novel-FileData.sty
index 981494211d1..2aa2a25887d 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}%
-[2017/11/12 v1.43.1 LaTeX file (File Data settings)]
+[2017/11/17 v1.46 LaTeX file (File Data settings)]
%%
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-FontDefaults.sty b/Master/texmf-dist/tex/lualatex/novel/novel-FontDefaults.sty
index 154cb837a2a..28d948e9dd7 100644
--- a/Master/texmf-dist/tex/lualatex/novel/novel-FontDefaults.sty
+++ b/Master/texmf-dist/tex/lualatex/novel/novel-FontDefaults.sty
@@ -13,7 +13,7 @@
%%
%%
\ProvidesFile{novel-FontDefaults.sty}%
-[2017/11/12 v1.43.1 LaTeX file (default fonts)]
+[2017/11/17 v1.46 LaTeX file (default fonts)]
%%
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-Footnotes.sty b/Master/texmf-dist/tex/lualatex/novel/novel-Footnotes.sty
index 6a32695e5e5..00274f08b3d 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}%
-[2017/10/19 v1.43.1 LaTeX file (commands for footnotes and endnotes)]
+[2017/11/17 v1.46 LaTeX file (commands for footnotes and endnotes)]
%%
@@ -179,7 +179,7 @@
\DeclareDocumentCommand \endnote { }
{%
\global\toggletrue{@gotendnotes}%
-\stepcounter{@endnotecount}\sups{\arabic{@endnotecount}}%
+\stepcounter{@endnotecount}\sups{\arabic{@endnotecount}}\obeyspaces%
\long\edef\@endnotelist{\@endnotelist\space (\arabic{@endnotecount},p.\thepage)}%
}
%%
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-HeadFootStyles.sty b/Master/texmf-dist/tex/lualatex/novel/novel-HeadFootStyles.sty
index ba54e9a8afc..f55f864c311 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}%
-[2017/11/12 v1.43.1 LaTeX file (header and footer layouts and styles)]
+[2017/11/17 v1.46 LaTeX file (header and footer layouts and styles)]
%%
@@ -279,6 +279,7 @@
\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}%
@@ -306,16 +307,16 @@
\setlength\temp@pgnumraise{%
\New@BottomMargin-\nbs+0.5\New@MediaHeight-0.5\New@TrimHeight}%
\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\temp@pgnumwidth}\raisebox{%
- \temp@pgnumraise}{{\headfont{\addfontfeature{LetterSpace=\@looseheadnum}\pagenumberstyle}}}}}%
- \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
%%
%
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-Images.sty b/Master/texmf-dist/tex/lualatex/novel/novel-Images.sty
index bf74e1c31f1..64bab0fa1ff 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}%
-[2017/11/12 v1.43.1 LaTeX file (image placement)]
+[2017/11/17 v1.46 LaTeX file (image placement)]
%%
@@ -72,14 +72,26 @@
\gdef\imagestarred{false}
\gdef\imagefilename{unknown}
% Neutralize \includegraphics, so it is no longer a user command:
-\let\@includegraphics\includegraphics\relax
-\let\includegraphics\relax
+\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.
@@ -90,7 +102,7 @@
%
\ExplSyntaxOn
\DeclareDocumentCommand \InlineImage { s O{0pt} m }{%
- \newif\if@imgExtOK%
+ \@imgExtOKfalse%
\IfEndWith{#3}{png}{\@imgExtOKtrue}{}%
\IfEndWith{#3}{PNG}{\@imgExtOKtrue}{}%
\IfEndWith{#3}{jpg}{\@imgExtOKtrue}{}%
@@ -112,7 +124,7 @@
\def\@myily{0pt}}{\def\@myily{\@myilya}%
}%
\iftoggle{@inheadfoot}{}{\gdef\imagefilename{#3}}% for possible later use
- \gdef\my@graphic{\@includegraphics[draft=false]{#3}}%
+ \gdef\my@graphic{\novel@includegraphics[draft=false]{#3}}%
\setlength\@imagewidth{\widthof{\my@graphic}}%
\global\@imagewidth=\@imagewidth%
\iftoggle{@inheadfoot}{}{\setlength\imagewidth{\@imagewidth}}%
@@ -159,8 +171,7 @@
%
%%
-
-
+%% 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).
@@ -175,14 +186,30 @@
% 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.
-% Subsequent text (after all that) will clear the image bottom, and also
-% be at the baseline grid. Beware of using this command near bottom of page.
+% 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{} }{
\iftoggle{@inheadfoot}{%
\ClassError{novel}{Cannot~use~BlockImage~in~header~or~footer}%
{Header~footer~allow~InlineImage~but~not~BlockImage.}%
}{}%
+ \@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~pdf~bmp,~tiff,~eps,~pdf,~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}%
@@ -196,57 +223,64 @@
\ifthenelse{\equal{\@myyt}{}\OR\equal{\@myyt}{0}}{%
\def\@myy{0pt}}{\def\@myy{\@myyt}%
}
- \newdimen\@sbsheight
+ %
+ \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.}
+ }{%
+ \setlength\@imagevoffset{-\@imageheight}%
+ \addtolength\@imagevoffset{\@myy}%
+ }%
+ %
+ \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}{}}{%
- {\centering\strut\InlineImage*[{\@myx-0.5\imagewidth},{\@myy}]{#2}\par}
- \vspace*{-\nbs}
- {\centering\strut #3\par}
- \setbox0=\vbox{{\centering #3\par}}
- }{}
+ {\centering%
+ \makebox[0pt][l]{%
+ \hspace{\dimexpr\@myx-0.5\@imagewidth}%
+ \stake\smash{\raisebox{\dimexpr\@myy-\@imageheight}{\my@graphic}}%
+ }%
+ \par}%
+ \vspace*{-\nbs}%
+ {\centering #3\par}%
+ }{}%
\ifthenelse{\equal{\@myalign}{r}}{%
- \noindent\InlineImage[{\textwidth-\imagewidth+\@myx},{\@myy}]{#2}\par%
- \vspace{-\nbs}
- \begin{adjustwidth}{0pt}{\imagewidth+\parindent}%
- #3\par%
+ \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}%
- \setbox0=\vbox{%
- \begin{adjustwidth}{0pt}{\imagewidth+\parindent}%
- #3\par%
- \end{adjustwidth}%
- }%
- }{}
+ }{}%
\ifthenelse{\equal{\@myalign}{l}}{%
- \noindent\InlineImage*[{\@myx},{\@myy}]{#2}\par%
- \vspace{-\nbs}
- \begin{adjustwidth}{\imagewidth+\parindent}{0pt}%
- #3\par%
+ \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}%
- \setbox0=\vbox{%
- \begin{adjustwidth}{\imagewidth+\parindent}{0pt}%
- #3\par%
- \end{adjustwidth}%
- }%
- }{}
- % portion here, inspired by post from user Killian Foth,
- % at stackoverflow.com, license CC-by-sa-3.0.
- \@sbsheight=\ht0 \advance\@sbsheight by \dp0
- \def\@sbsheightnum{\strip@pt\@sbsheight}
- \FPdiv{\@roughlines}{\@sbsheightnum}{\nbsnum}
- \FPadd{\@roughlines}{\@roughlines}{0.5} % round up, not down
- \FPround{\@roughlines}{\@roughlines}{0}
-
- \gdef\@imageheightnum{\strip@pt\@imageheight}%
- \FPdiv{\@imagelines}{\@imageheightnum}{\nbsnum}%
- \FPadd{\@imagelines}{\@imagelines}{0.5}% round up to integer, not down
- \FPround{\@imagelines}{\@imagelines}{0}%
- \FPclip{\@imagelines}{\@imagelines}%
- \gdef\imagelineskip{\@imagelines}%
- \FPclip{\@roughlines}{\@roughlines}
- \FPadd{\@adjimagelines}{\imagelineskip}{1} % \imagelineskip from \InlineImage*
- \FPsub{\@skipme}{\@adjimagelines}{\@roughlines}
- \FPmax{\@skipme}{\@skipme}{0}
- \vspace{\@skipme\nbs}
-}
+ }{}%
+ \end{linegap}%
+} % end \BlockImage
\ExplSyntaxOff
%%
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-JC200103.clo b/Master/texmf-dist/tex/lualatex/novel/novel-JC200103.clo
index 3d915df4509..a091ea3f41b 100644
--- a/Master/texmf-dist/tex/lualatex/novel/novel-JC200103.clo
+++ b/Master/texmf-dist/tex/lualatex/novel/novel-JC200103.clo
@@ -1,4 +1,4 @@
-% Typically used in Japan. Novel file version 1.43.1
+% Typically used in Japan. Novel file version 1.46
% The values of the arguments are public industry standards.
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-LayoutSettings.sty b/Master/texmf-dist/tex/lualatex/novel/novel-LayoutSettings.sty
index 50ac4930046..ea008ff8ac8 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}%
-[2017/11/12 v1.43.1 LaTeX file (layout settings)]
+[2017/11/17 v1.46 LaTeX file (layout settings)]
%%
@@ -53,6 +53,9 @@
%
\newlength\normalxheight
\newlength\normalXheight
+\newlength\normalscxheight
+\newlength\normalAringheight
+\newlength\normaldescender
%%
@@ -243,7 +246,7 @@
}
\let\SetEmblem\SetEmblems% for convenience
% If you want something fancier than \thepage:
-\gdef\SetPageNumberStyle#1{\gdef\pagenumberstyle{#1}}
+\gdef\SetPageNumberStyle#1{\gdef\pagenumberstyle{{\addfontfeature{Letters=ResetAll}#1}}}
% See novel.cls for the accompanying AtBeginDocument routine.
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-TextMacros.sty b/Master/texmf-dist/tex/lualatex/novel/novel-TextMacros.sty
index 255763e22f2..47b290e9955 100644
--- a/Master/texmf-dist/tex/lualatex/novel/novel-TextMacros.sty
+++ b/Master/texmf-dist/tex/lualatex/novel/novel-TextMacros.sty
@@ -13,96 +13,16 @@
%%
%%
\ProvidesFile{novel-TextMacros.sty}%
-[2017/11/12 v1.43.1 LaTeX file (text macros usable within document body)]
+[2017/11/17 v1.46 LaTeX file (text macros usable within document body)]
%%
-%% This file contains commands that are usable within the document body,
+%% This file contains various commands that are 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.
-
-%% The following commands were defined in other files of `novel' class:
-%% -----------------------------------------------------------------------------
-% \theTitle returns string set by \SetTitle{} -- See novel-LayoutSettings.sty.
-% \theAuthor returns string set by \SetAuthor{} -- See novel-LayoutSettings.sty.
-% \nfs normal font size. May be tweaked during rework. -- See novel-CalculateLayout.sty.
-% \nbs (calculated) normal baselineskip. May be tweaked during rework. -- See novel-CalculateLayout.sty.
-% \theSubtitle returns string set by \SetSubtitle{} -- See novel-LayoutSettings.sty.
-% \InlineImage, \BlockImage -- See novel-Images.sty.
-% \scenebreak, \sceneline, \scenestars -- See novel-ChapterScene.sty.
-% ChapterStart, \ChapterTitle{}, \ChapterSubtitle{}, \ChapterDeco{} -- See novel-ChapterScene.sty.
-% {\chapterfont text} and other pre-defined font selection commands -- See novel-LayoutSettings.sty.
-% \decoglyph{} and \acronym{} -- See novel-FontDefaults.sty.
-% \frontmatter, \mainmatter -- See novel-LayoutSettings.sty.
-% \footnote[]{}, \endnote, \endnotetext[]{} -- See novel-Footnotes.sty.
-% \thispagestyle{choice} -- See novel-HeadFootStyles.sty.
-% \SetVersoHeadText{}, \SetRectoHeadText{} -- See novel-HeadFootStyles.sty.
-% \CreateFontFeature{substitutions}{feature code} fakes an Open Type feature -- See novel-LayoutSettings.sty.
-
-
-
-%% The following commands are defined on this page:
-%% -----------------------------------------------------------------------------
-% \memo{text} is a memo to yourself. Does not print, is not saved.
-% \forceindent and \backindent when \indent and \noindent fail.
-% \smcp{text} or \textsc{text} for lowercase to small caps.
-% \allsmcp{text} puts both caps and lowercase into small caps.
-% \charscale[scale,x,y]{text} for brief change of text size/position. No line wrap.
-% parascale environment for long change in text size. Will go off-grid.
-% toc environment for table of contents.
-% \tocitem[]{}{} and \tocitem*[]{}{} for one-line entries in toc.
-% legalese environment uses ragged right, disables hyphenation.
-% \showlength[round]{length}{units} returns the length, re-calculated in units, rounded.
-% \supersub{raise}{scale}{text} alternative to superscript and subscript commands.
-% \sups{text}, \subs{text}, and \sinf{text} other alternatives to super/subscripts.
-% \bigemdash[raise,thickness] provides a raised rule of flexible length, a "big em dash."
-% \stake inserts zero-width rule, 1pt thick, as placeholder.
-% \color and \textcolor (from package xcolor) have been modified to ensure black, or grayscale when permitted.
-% \hangleft{text} -- places text to left of its usual block position. Do not place text in margins!
-% \lnum{number} -- lining numbers
-% \squeeze{} and \crush{} for emergency text adjustment.
-
-
-%% The following useful commands are from core code, or other pre-loaded packages.
-%% -----------------------------------------------------------------------------
-%% They are listed here as a reminder of their existence. Not a complete list.
-%% A description is only provided here, when it is brief and simple.
-%
-% {\centering text\par} centers text. Needs the \par to finish. May also use internal \\ or \par.
-% \makebox[length][alignment]{text}
-% \hspace{length}
-% \vspace{length} Caution: may disrupt text line grid!
-% \kern
-% \hfill and \dotfill
-% \vfill (use only with discretion)
-% \linebreak (use only with discretion)
-% \null inserts an empty line. See also the scene break commands.
-% \clearpage begins a new page. Two consecutive \clearpage does not make 2 pages (use \null if blank page desired).
-% \strut is useful for occupying the full line height.
-% \smash{text} allows its included text to overlay other content. Sometimes useful when text is too tall to fit the line grid.
-% \textwidth (length) is the width of the textblock.
-% adjustwidth environment (package: changepage) for block indents, etc.
-% \FirstLine{} (package: magaz) may be useful for first line of new chapter. Patched by me.
-% \textsuperscript{} and \textsubscript{} are re-defined.
-
-
-
-%% The following commands are available, but STRONGLY DISCOURAGED.
-%% -----------------------------------------------------------------------------
-%% Beware: Their usage is likely to disturb the line grid.
-%% That is less of an issue on pages where the line grid does not matter.
-%
-% Environments: center, minipage, sloppypar
-% \parbox
-% \framebox or \fbox
-% \raisebox BUT can be used inside \smash or \charscale.
-% \linespread
-% Anything involving math mode.
-
-
%% The following commands are BANNED.
%% -----------------------------------------------------------------------------
% The `novel' class disallows these commands, or neutralizes them by simply
@@ -155,15 +75,15 @@
%
\DeclareDocumentCommand \smcp { +m }
{%
- {\AddFontFeature{Letters=SmallCaps}#1}%
+ {\addfontfeature{Letters=SmallCaps}#1}%
}
%
\DeclareDocumentCommand \allsmcp { +m }
{%
\fontspec_if_feature:nTF {c2sc}{%
- {\AddFontFeatures{Letters=UppercaseSmallCaps, Letters=SmallCaps}#1}%
+ {\addfontfeatures{Letters=UppercaseSmallCaps, Letters=SmallCaps}#1}%
}{%
- {\AddFontFeature{Letters=SmallCaps}\MakeLowercase{#1}}%
+ {\addfontfeature{Letters=SmallCaps}\MakeLowercase{#1}}%
}%
}
%
@@ -355,12 +275,11 @@
\newlength\@tocskip
\newenvironment{toc}[2][0]%
{%
- \begin{adjustwidth}{#2}{#2}\begingroup%
+ \begin{adjustwidth}{#2}{#2}%
+ \begingroup% lengths not global
\setlength\parindent{0pt}%
\setlength\@tocnumwid{\widthof{00.~}}%
- \global\@tocnumwid=\@tocnumwid%
\setlength\@tocskip{#1\nbs}%
- \global\@tocskip=\@tocskip%
}{%
\endgroup\end{adjustwidth}\par%
}%
@@ -438,13 +357,13 @@
%% \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}}
+\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}}
+\gdef\lnum#1{{\addfontfeature{Numbers=Lining}#1}}
%%
@@ -453,7 +372,7 @@
\let\sups\relax
\let\textsuperscript\relax
\let\textsubscript\relax
-\newlength\@hoAhl % Measures the height of these characters in the current font.
+\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,
@@ -473,14 +392,14 @@
{%
\iftoggle{@realmarker}{%
\fontspec_if_feature:nTF {sups}{%
- \ifvmode\else\unskip\fi{\AddFontFeature{VerticalPosition=Superior}\smash{#1}}%
+ \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{\basefont\AddFontFeature{Numbers=Lining}\charscale[0.7,0pt,0.5\@hoAhl]{#1}}%
+ \ifvmode\else\unskip\fi{\addfontfeature{Numbers=Lining}\charscale[0.7,0pt,0.5\@hoAhl]{#1}}%
}%
}% end \sups
%
@@ -488,10 +407,10 @@
{%
\iftoggle{@realmarker}{%
\fontspec_if_feature:nTF {sinf}{%
- \ifvmode\else\unskip\fi{\AddFontFeature{VerticalPosition=ScientificInferior}\smash{#1}}%
+ \ifvmode\else\unskip\fi{\addfontfeature{VerticalPosition=ScientificInferior}\smash{#1}}%
}{%
\fontspec_if_feature:nTF {subs}{%
- \ifvmode\else\unskip\fi{\AddFontFeature{VerticalPosition=Inferior}\smash{#1}}%
+ \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}%
@@ -499,19 +418,47 @@
}%
}{%
\setlength\@hoAhl{\heightof{Ahl}}%
- \ifvmode\else\unskip\fi{\basefont\AddFontFeature{Numbers=Lining}\charscale[0.7,0pt,-0.2\@hoAhl]{#1}}%
+ \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
%%
-\let\textsuperscipt\sups\relax
-\let\textsubscript\subs\relax
-%%
\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
+\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}%
+ \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 of file `novel-TextMacros.sty'.
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-glyphtounicode.tex b/Master/texmf-dist/tex/lualatex/novel/novel-glyphtounicode.tex
index b7c51ac1ecd..2bee12c0745 100644
--- a/Master/texmf-dist/tex/lualatex/novel/novel-glyphtounicode.tex
+++ b/Master/texmf-dist/tex/lualatex/novel/novel-glyphtounicode.tex
@@ -14,7 +14,7 @@
%%
%%
\ProvidesFile{novel-gyphtounicode.tex}%
-[2017/11/12 v1.43.1 LaTeX file (additional glyph to unicode)]
+[2017/11/17 v1.46 LaTeX file (additional glyph to unicode)]
%%
%% I am not sure if this is useful. But it doesn't hurt.
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-microtype.cfg b/Master/texmf-dist/tex/lualatex/novel/novel-microtype.cfg
index a395e09a0db..8ff8d06139d 100644
--- a/Master/texmf-dist/tex/lualatex/novel/novel-microtype.cfg
+++ b/Master/texmf-dist/tex/lualatex/novel/novel-microtype.cfg
@@ -19,7 +19,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{novel-microtype.cfg}%
-[2017/11/12 v1.43.1 LaTeX file (microtype configuration file for novel class)]
+[2017/11/17 v1.46 LaTeX file (microtype configuration file for novel class)]
%%% -----------------------------------------------------------------------
%%% FONT SETS
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-pdfx.sty b/Master/texmf-dist/tex/lualatex/novel/novel-pdfx.sty
index 5ea5d75ea1e..12f00a0c0a7 100644
--- a/Master/texmf-dist/tex/lualatex/novel/novel-pdfx.sty
+++ b/Master/texmf-dist/tex/lualatex/novel/novel-pdfx.sty
@@ -24,7 +24,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{novel-pdfx.sty}%
-[2017/11/12 v1.43.1 LaTeX file (PDF/X support for novel class)]
+[2017/11/17 v1.46 LaTeX file (PDF/X support for novel class)]
% This package supports, and is part of, class `novel'.
% No support for anything but LuaLaTeX.
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel-xmppacket.sty b/Master/texmf-dist/tex/lualatex/novel/novel-xmppacket.sty
index a02c45dbeb7..ca30076cee5 100644
--- a/Master/texmf-dist/tex/lualatex/novel/novel-xmppacket.sty
+++ b/Master/texmf-dist/tex/lualatex/novel/novel-xmppacket.sty
@@ -22,7 +22,7 @@
%%
%%
\ProvidesFile{novel-xmppacket.sty}%
-[2017/11/12 v1.43.1 LaTeX file (novel XMP packet template)]
+[2017/11/17 v1.46 LaTeX file (novel XMP packet template)]
%%
diff --git a/Master/texmf-dist/tex/lualatex/novel/novel.cls b/Master/texmf-dist/tex/lualatex/novel/novel.cls
index 9e0e2d3f223..84ff490d429 100644
--- a/Master/texmf-dist/tex/lualatex/novel/novel.cls
+++ b/Master/texmf-dist/tex/lualatex/novel/novel.cls
@@ -17,9 +17,10 @@
%%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
% Actually needs LuaLaTeX, at least version 0.95 from TeXLive 2016.
-\ProvidesClass{novel}[2017/11/12 v1.43.1 LaTeX document class]
+\ProvidesClass{novel}[2017/11/17 v1.46 LaTeX document class]
%%
-%% Version 1.44: General cleanup of docs and code, for improved readbaility.
+%% Version 1.46: Possibly final 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.
%% Versions 1.40.x: Incremental minor changes, leading to 1.42.
@@ -239,6 +240,14 @@
\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
+}
%% Note that document size and normal font size are not class options.
%% They are set by commands in the Preamble, and have default values.
%
@@ -347,6 +356,25 @@
\RequirePackage{novel-Footnotes}
%%
+
+%% Special features of test suite.
+%% -----------------------------------------------------------------------------
+\newcommand\testsuiteoops[1]{%
+ \ClassError{novel}{#1 missing}{Install the necessary file(s).}%
+}
+\if@testsuite
+ \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{
@@ -368,14 +396,36 @@
%% \AtBeginDocument finishes the setup
%% -----------------------------------------------------------------------------
+\newlength\normalparindent
\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}