diff options
Diffstat (limited to 'Master/texmf-dist/tex/lualatex/novel')
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} |