texlive[64889] Master/texmf-dist: canoniclayout (1nov22)

commits+karl at tug.org commits+karl at tug.org
Tue Nov 1 20:51:58 CET 2022


Revision: 64889
          http://tug.org/svn/texlive?view=revision&revision=64889
Author:   karl
Date:     2022-11-01 20:51:57 +0100 (Tue, 01 Nov 2022)
Log Message:
-----------
canoniclayout (1nov22)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/canoniclayout/README.txt
    trunk/Master/texmf-dist/doc/latex/canoniclayout/canoniclayout.pdf
    trunk/Master/texmf-dist/source/latex/canoniclayout/canoniclayout.dtx
    trunk/Master/texmf-dist/tex/latex/canoniclayout/canoniclayout.sty

Modified: trunk/Master/texmf-dist/doc/latex/canoniclayout/README.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/canoniclayout/README.txt	2022-11-01 19:51:20 UTC (rev 64888)
+++ trunk/Master/texmf-dist/doc/latex/canoniclayout/README.txt	2022-11-01 19:51:57 UTC (rev 64889)
@@ -1,51 +1,17 @@
-%%
-%% This is file `README.txt',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% canoniclayout.dtx  (with options: `txt')
-%%   ______________________________________________________
-%%   The canoniclayout package for LaTeX
-%%   Copyright (C) 2010-2020 Claudio Beccari
-%%   All rights reserved
-%% 
-%%   License information appended
-%% 
-\ProvidesFile{README.txt}
-   [2020-04-09 v.0.5 Canonic layout circumscribed to a circle]
+Canoniclayout v.1.0
 
+Canoniclayout is a small module that allows to design a canonic layout 
+based of the great circle inscribed within the page and tangent to the 
+horizontal sides of the text block rectangle. The margins reflect the 
+trimmed page shape ratio, therefore the page block principal diagonal 
+coincides with the corresponding page diagonal; this layout is especially 
+good for ISO shapes but can be used with many other traditional book 
+page~shapes. 
 
-Canoniclayout is a small extension package that allows to design
-a canonic layout based on the great circle inscribed within the
-page and tangent to the horizontal sides of the type block rectangle.
-The margins reflect the trimmed page shape ratio, therefore the
-type block principal diagonal coincides with the corresponding
-page diagonal; this layout is especially good for ISO page shapes
-but it can be used with many other traditional book page shapes.
+This work is released under the Latex Project Pubblic Licence v.1.3c. The 
+LPPL is distributed with any  TeX system distribution and can be found 
+also in any CTAN archive.
 
-This new version is completely new, in the sense that its code
-calculations are performed by means of the 2018 xfp package
-facilities. For this reason it cannot be used with any TeX
-distribution preceding the year 2018 and updated by the end of
-that year; should this happen this very package aborts its own
-input while advising the user by means of an Error Message.
-
-This work is released under  the Latex Project Public Licence
-v.1.3c. The LPPL is distributed with any TeX system distribution
-and can be found also in any CTAN archive.
-
-Claudio Beccari 2020
+Claudio Beccari 2022
+Author maintained
 claudio dot beccari at gmail dot com
-
-%% Distributable under the LaTeX Project Public License,
-%% version 1.3c or higher (your choice). The latest version of
-%% this license is at: http://www.latex-project.org/lppl.txt
-%% 
-%% This work consists of this file canoniclayout.dtx, a README.txt file
-%% and the derived files canoniclayout.sty and canoniclayout.pdf.
-%% 
-%% This work is "maintained"
-%% 
-%%
-%% End of file `README.txt'.

Modified: trunk/Master/texmf-dist/doc/latex/canoniclayout/canoniclayout.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/canoniclayout/canoniclayout.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/canoniclayout/canoniclayout.dtx	2022-11-01 19:51:20 UTC (rev 64888)
+++ trunk/Master/texmf-dist/source/latex/canoniclayout/canoniclayout.dtx	2022-11-01 19:51:57 UTC (rev 64889)
@@ -1,4 +1,9 @@
 % \iffalse
+% !TEX TS-program = pdflatex
+% !TEX encoding = UTF-8 Unicode
+%^^A Ho cercato di renderlo indipendente da m0,emoir (2022-10-24)
+% \fi
+% \iffalse
 %<*internal>
 \begingroup
 \input docstrip.tex
@@ -6,28 +11,28 @@
 \preamble
   ______________________________________________________
   The canoniclayout package for LaTeX
-  Copyright (C) 2010-2020 Claudio Beccari 
+  Copyright (C) 2010 Claudio Beccari 
   All rights reserved
 
   License information appended
 
 \endpreamble
+\postamble
+Copyright 2010 Claudio Beccari
 
-\postamble
 Distributable under the LaTeX Project Public License,
 version 1.3c or higher (your choice). The latest version of
 this license is at: http://www.latex-project.org/lppl.txt
 
-This work consists of this file canoniclayout.dtx, a README.txt file
+This work is "author-maintained"
+
+This work consists of this file canoniclayout.dtx, a README file
 and the derived files canoniclayout.sty and canoniclayout.pdf.
 
-This work is "maintained"
-
 \endpostamble
 \askforoverwritefalse
 %
 \generate{\file{canoniclayout.sty}{\from{canoniclayout.dtx}{package}}}
-\generate{\file{README.txt}{\from{canoniclayout.dtx}{txt}}}
 %
 \def\tmpa{plain}
 \ifx\tmpa\fmtname\endgroup\expandafter\bye\fi
@@ -41,23 +46,21 @@
 %</driver>
 %<package>\NeedsTeXFormat{LaTeX2e}[2009/01/01]
 %<package>\ProvidesPackage{canoniclayout}%
-%<txt>\ProvidesFile{README.txt}
-%<*package,txt>
-   [2020-04-09 v.0.5 Canonic layout circumscribed to a circle]
-%</package,txt>
+%<*package>
+   [2022/11/01 v.1.0 Text block height equal to paper width]
+%</package>
 %<*driver>
-\documentclass[a4paper]{ltxdoc}
-\paperwidth=210mm\paperheight=297mm
+\documentclass{ltxdoc}
+\paperwidth=220mm\paperheight=280mm
 \pdfpagewidth=\paperwidth \pdfpageheight=\paperheight
-\usepackage[utf8]{inputenc}
+%\usepackage[utf8]{inputenc}
 \usepackage[T1]{fontenc}
 \usepackage{lmodern}
 \usepackage{textcomp}
 \usepackage{multicol}
 \usepackage{amsmath,array,booktabs}
-\usepackage{pict2e}[2019/06/01]%
-\usepackage{color,xfp}
-\usepackage{canoniclayout}
+\usepackage{pict2e}[2009/06/01]%
+\usepackage{color}
 \hfuzz 10pt
 
 \newcommand*\class[1]{\textsf{#1}}
@@ -64,66 +67,45 @@
 \newcommand*\pack[1]{\textsf{#1}}
 \newcommand*\prog[1]{\textsl{#1}}
 \newcommand*\file[1]{\texttt{#1}}
-\definecolor{grigio}{gray}{.85}
+\renewcommand*\meta[1]{{\normalfont\textlangle#1\textrangle}}
+\renewcommand*\marg[1]{\texttt{\{\meta{#1}\}}}
+\newcommand*\Marg[1]{\texttt{\{#1\}}}
+\renewcommand*\oarg[1]{\texttt{[\meta{#1]}}}
+\newcommand*\Oarg[1]{\texttt{[#1]}}
+\renewcommand*\cs[1]{\texttt{\char92#1}}
+\newcommand*\eTeX{$varepsilon$\TeX}
 
-\makeatletter
-%\newdimen\CLinnermargin % 258
-%\newdimen\CLmm          % 262
-%\newdimen\CLpagewidth   % 260
-%\newdimen\Clowermargin  % 264
-%\newdimen\CLvoffset     % 256
-\edef\CLinnermargin{\fpeval{\oddsidemargin+1in}}
-\edef\CLmm{\fpeval{1mm}}
-\edef\CLpagewidth{\fpeval{\paperwidth}}
-\edef\CLlowermargin{\fpeval{\paperheight-\topmargin-\headheight-(1in)-\headsep-\textheight}}
-\edef\CLvoffset{\fpeval{\headheight+\topmargin+1in-\paperheight}}
-\edef\CLpageheight{\fpeval{\paperheight}}
-\def\cblayoutdestro{%
-\begin{picture}(0,0)(\CLinnermargin,-\CLvoffset)
-\put(0,0){\unitlength=\p@
-\put(0,0){\framebox(\CLpagewidth,\CLpageheight){}}
-\color{red}
-\put(\CLinnermargin,\CLlowermargin){\makebox(0,0)[bl]{\color{grigio}\rule{\textwidth}{\textheight}}}
-	\Line(0,\CLpageheight)(\CLpagewidth,0)
-	\put(\fpeval{\CLpagewidth/2},\fpeval{\CLlowermargin+(\textheight)/2}){\circle{\CLpagewidth}}
-}
-\end{picture}}
-\def\ps at title{\ps at plain
-\def\@oddhead{\cblayoutdestro}
-\let\@evenhead\@oddhead}
+\definecolor{grigio}{gray}{.75}
 \allowdisplaybreaks
 \begin{document}
 \GetFileInfo{canoniclayout.dtx}
-\title{Package \pack{canoniclayout}}
-\author{Claudio Beccari}
-\date{\centering Version number \fileversion; last revision \filedate.\\
- e-mail: \texttt{claudio dot beccari at gmail dot com}\par}
- \maketitle\thispagestyle{title}
+\title{Package \pack{canoniclayout}\\[0.5\baselineskip]{\normalsize Version number \fileversion; last
+ revision \filedate.}}
+\author{Claudio Beccari\thanks{e-mail: \texttt{claudio dot beccari at gmail dot com}}}
+ \maketitle
  \DocInput{canoniclayout.dtx}
 \end{document}
 %</driver>
 % \fi
 %
-% \CheckSum{128}
-%\begin{abstract}
-%\noindent
-% This package is a small extension that allows to determine the page 
-% parameters for a canonical layout where the text block is placed onto
-% the page in such a way as: $(a)$ its diagonal coincides with the page
-% relevant diagonal, and $(b)$ the circle inscribed within the text block
-% is tangent to the page sides. The text block width to height ratio is
-% kept equal to the page ratio, as well as  the inner to outer and the
-% upper to lower margin ratios.
+% \CheckSum{466}
+% \begin{abstract}
+% This package  may be used as an extension to the \class{memoir} or as a
+% standalone package that might work with any standard class. It tests if
+% \class{memoir} was loaded within the preamble, otherwise it does all the
+% necessary calculations with the usual facilities of a recent
+% \LaTeX\ based engine.
 %
-% The canonical layout determined by this package is laid down on this
-% very page; of course the actual text block  fits the text block grid,
-% because this documentation is typeset by means of the \texttt{ltxdoc}
-% document class, that by itself would use other layout parameters, but
-% that is has been arranged so as to invoke this very package. This
-% allows you to immediately evaluate this traditional layout and see if
-% it fits your requirements.
-%\end{abstract}
+% This package computes the page parameters for a canonical layout where
+% the text block is placed onto the page in such a way that: $(a)$ its,
+% diagonal coincides with the page relevant diagonal, and $(b)$ the circle,
+% vertically inscribed within the text block, is also tangent to the page
+% sides. The text block width to height ratio is kept equal to the page
+% ratio, as well as  the inner to outer and the top to bottom margin
+% ratios. See figure~\ref{fig:canoniclayout}
 %
+% \end{abstract}
+%
 % \begin{multicols}{2}
 % \tableofcontents
 % \end{multicols}
@@ -132,36 +114,30 @@
 % As any user of the \class{memoir} class knows well, this class allows
 % to customise the page layout virtually without any limitation; such
 % limitations are connected mainly with the user inconsistent data that
-% miss to specify necessary information or give unnecessary or conflicting
-% information. Also other classes and/or packages allow the customised
-% design of the page layout; some other classes, such as the standard
-% ones, do not have any facility to customise the page geometry, unless
-% the user invokes suitable packages, such as \pack{geometry} or
-% \pack{tyeparea}, just to male a couple of well known examples.
+% miss to specify necessary information or give unnecessary and
+% conflicting information. The same happens when \class{memoir} is not
+% being used. In facts, if \class{memoir} is not used, the package computes
+% the necessary data that turn out to be correct with the standard document
+% classes; they might be correct also with other classes, and users can
+% check the correctness by using some commands that are described below,
+% within the code documented section.
 % 
-% Many packages exist in order to specify a named layout; this package
-% \pack{canoniclayout} is another one that computes the page parameters
-% to determine the horizontal and vertical dimensions of the margins
-% and the text block. All other details shall be specified by the user,
-% for example the dimensions of the stock paper, the trimming widths,
-% and therefore the position of the page onto the stock paper; and so on.
+% Many packages exist in order to specify a specific layout; this package
+% \pack{canoniclayout} is another one that computes the page parameters 
+% to determine the horizontal and vertical dimensions of the margins and
+% the text block. All other details shall be specified by the user, for
+% example the dimensions of the stock paper, the trimming widths, and
+% therefore the position of the page onto the stock paper, and so on.
 % This package deals only with the trimmed page, not with the page and
-% stock paper relationship.
+% stock paper relationship. See the documentation of class \class{memoir}
+% in order to deal with stock paper and the details for configuring the
+% position of the page to be trimmed on the stock paper. With the standard
+% document classes this package works with the standard paper sizes
+% that \LaTeX\ can handle. An attempt to use package \pack{geometry} was
+% made, but it was abandoned, because this package has limitations due to
+% the two digit integer values of element ratios; may be in the future 
+% it might be resumed.
 %
-% \paragraph{Warning} This package works well only with a modern
-% installation of the \TeX\ system; in particular it uses the
-% facilities of the \pack{xfp} package, that is an interface between
-% the end user and the lower level language known as \LaTeX\,3 (L3 for
-% short). This implies a \LaTeX kernel implementation dated  at least
-% 2029-01-01, and a complete installation of the \TeX\ system. In
-% particular the availability of the \pack{xfp} package is checked,
-% and if the typesetting program cannot fetch it, is issues a message
-% and interrupts loading this package. It is a clear message that your
-% installation is obsolete; you might have your good reasons for not
-% using a modern release of the \TeX\ system, but either you upgrade
-% your installation or you cannot use this package.
-
-%
 % \begin{figure}
 % \makebox[\textwidth]{\makebox[1.1\textwidth][r]{%
 % \unitlength=0.0015\textwidth
@@ -190,20 +166,19 @@
 %   \unitlength0.001591\textwidth
 %   \let\ul=\unitlength
 %   \begin{picture}(220,330)(0,-20)
-%   \put(0,0){\framebox(220,280){}}
-%   \put(20.742,33.6){\makebox(0,0)[bl]{\color{grigio}\rule{172.86\ul}{220\ul}}}
-%   \put(110,-35){\makebox(0,0)[b]{Letter paper canonical layout}}
-%   \color{red}
-%   \put(110,143.6){\circle{220}}
+%   		\put(0,0){\framebox(220,280){}}
+%   		\put(20.742,33.6){\makebox(0,0)[bl]{\color{grigio}\rule{172.86\ul}{220\ul}}}
+%   		\put(110,-35){\makebox(0,0)[b]{Letter paper canonical layout}}
+%   		\color{red}
+%   		\put(110,143.6){\circle{220}}
 %		\multiput(0,280)(2.37837837838,-3.02702702703){93}{\line(220,-280){1}}
 %   \end{picture}
 % }}%
 % \caption{A right page with the relevant diagonal, the text block and the
-% canonical circle.
-% In this figure it is important to notice the page proportions, not the
-% scale; matter of fact the letter paper height is 17.6\,mm shorter than
-% the A4 paper, but the drawings to the same height emphasise the relative
-% proportions of the various page parts.}
+% canonical circle. In this figure the important pieces of information are
+% the page proportions, not the drawing scale; matter of fact the letter
+% paper is 17.6~mm shorter than the A4 paper, but the drawings to the same
+% height emphasises the relative proportions of the various page parts.}
 % \label{fig:canoniclayout}
 % \end{figure}
 %
@@ -211,87 +186,91 @@
 % the grey rectangle represents the type block; the dotted page diagonal,
 % as it can be seen, passes through the diagonal vertices of the type
 % block; at the same time the circle is tangent to both the type block
-% and the page contour.
-%
+% and the page contour\footnote{Geometrically speaking this sentence is
+% meaningless, but the drawings in the picture show what we mean.}.
+%.
 % It must also be noticed, in the sketch on the left, that the page
 % rectangle is a golden one; therefore also the type block is a golden
 % rectangle; the inner to the outer margin ratio is the golden section
-% value so as this same ratio exists between the upper and the lower
-% margin. This canonical layout implies that the type block height is
-% equal to the page width.
+% value so as this same ratio exists between the top and the bottom margin.
 %
-% Therefore this canonical layout is not suited when the page width
-% is too small compared to the page height: with the golden
-% section\footnote{Here we denote $\phi=1,618\dots$
-% with the name of \emph{golden number}, and its reciprocal
-% $\varphi=0,618\dots$ with the name of \emph{golden section}.} this
-% ratio is 0.618, with the ISO paper shape, in the sketch on the center,
-% this ratio is 0,707, and so on.
+% This canonical layout implies that the type block height is equal to the
+% page width. Therefore this canonical layout is not suited when the page
+% width is small compared to the page height: with the golden
+% section\footnote{Here we denote $\phi=1,618\dots$ with the name of
+% \emph{golden number}, and its reciprocal $\varphi=0.618\dots$ with the
+% name of \emph{golden section}.} this ratio is 0.618.
 %
-% But it is equally unsuitable with squarish pages, such as the sketch
-% on the right where the page proportions conform with the USA letter
-% paper size: the type block leaves little space for the margins, as
-% it is evident from the properties of the canonical circle, which
-% is tangent to the page lateral sides and to the type block horizontal
-% sides; to the limit in a square page the type block is so large that
-% there is no room for the margins.
+% With the ISO paper shape, in the sketch on the center, this ratio is
+% 0.707, and so on.
 %
+% But it is also evident that this layout is unsuitable with squarish
+% pages, such as the sketch on the right where the page proportions are
+% those of the USA letter paper size: the type block leaves little space
+% for the margins, as it is evident from the properties of the canonical
+% circle, which is tangent to the page lateral sides and to the type block
+% horizontal sides; to the limit in a square trimmed page the type block
+% fills he whole page so that the margins vanish.
+%
 % \section{The mathematics of the canonical layout}
-% If one plays a little with the drawing of figure~\ref{fig:canoniclayout}
-% and applies what has been described in the Introduction, may easily
-% derive the following formulas:
+% With reference to the drawing on figure~\ref{fig:canoniclayout}
+% and what has been described in the Introduction, the following formulas 
+% may be easily derived:
 %\begin{align}
-%&\text{Page shape ratio:}       &    x&=b/h      \label{equ:1}  \\
-%&\text{Inner margin:}           &    I&=bx(1-x)/(1+x)           \\
-%&\text{External margin:}        &    E&=b(1-x)/(1+x)            \\
-%&\text{Top margin:}             &    T&=hx(1-x)/(1+x)           \\
-%&\text{Bottom margin:}          &    B&=h(1-x)/(1+x)            \\
-%&\text{Text width:}             &    W&=xb                      \\
-%&\text{Text height:}            &    H&=b                       \\
-%&\text{Circle center abscissa:} &  C_x&=0.5b                    \\
-%&\text{Circle center ordinate:} &  C_y&=h(1-x)/(1+x)+b/2        \\
-%&\text{Circle radius:}          &    R&=0.5b    \label{equ:10}
+%  &\text{Page shape ratio:}      & x  &=b/h \label{equ:1}   \\
+%  &\text{Inner margin:}          & I  &=bx(1-x)/(1+x)       \\
+%  &\text{External margin:}       & E  &=b(1-x)/(1+x)        \\
+%  &\text{Top margin:}            & T  &=hx(1-x)/(1+x)       \\
+%  &\text{Bottom margin:}         & B  &=h(1-x)/(1+x)        \\
+%  &\text{Text width:}            & W  &=xb                  \\
+%  &\text{Text height:}           & H  &=b                   \\
+%  &\text{Circle center abscissa:}& C_x&=b/2                \\
+%  &\text{Circle center ordinate:}& C_y&=h(1-x)/(1+x)+b/2    \\
+%  &\text{Circle radius:}         & R  &=b/2 \label{equ:10}
 %\end{align}
-% whose results are summarised in table~\ref{tab:canoniclayout} for
-% three common values of the shape factor and for the letter paper
-% shape ratio.
+% Notice that the circle center coordinates are referred to the lower
+% left corner of the trimmed page.
 %
-%\begin{table}[!b]\centering^^A\let~\enspace
-%^^A\hrule
-%\caption{Canonical layout ratios referred to the base
-% (or width, $b$) and the height ($h$) of the trimmed page.}
-%\label{tab:canoniclayout}
+% The results of the above formulas are summarised in
+% table~\ref{tab:canoniclayout} for four values of the shape factor 
+% including the USA letter paper, that is 8.5~inches wide and 11~inches
+% high.
+%
+%\begin{table}[!b]\centering\let~\enspace
+%\hrule
+%\caption{Canonical layout ratios referred to the the base (or width, $b$)
+% of the trimmed page and its height ($h$).
+% The circle coordinates are referred to the lower left corner of the
+% trimmed page.}\label{tab:canoniclayout}
 %\bigskip
 %\begin{tabular}{l@{\qquad}*4{>{$}c<{$}}}
 %\toprule
-%                            &\multicolumn4c{Canon}      \\
-%\multicolumn1c{Shape ratio} & \phi:1 & 3:2    & \sqrt2:1 & 11:8.5\\
+%						&\multicolumn4c{Page ratio $h/b$}			\\
+%\multicolumn1c{Quantity}& \phi:1	& 3:2	& \sqrt2:1	& 11:8.5\\
 %\midrule
-% Page shape ratio           &0,618~    &0,666~  &0,707~    &0,773~  \\
-% Inner margin               &0,146b    &0,133b  &0,121b    &0,099b  \\
-% External margin            &0,236b    &0,200b  &0,172b    &0,128b  \\
-% Upper margin               &0,146h    &0,133h  &0,121h    &0,099h  \\
-% Lower margin               &0,236h    &0,200h  &0,172h    &0,128h  \\
-% Text block width           &  0,618b  &0,666b  &0,707b    &0,773b  \\
-% Text block height          & b        & b      &   b      &b       \\
-% Circle center abscissa     & b/2      & b/2    & b/2      &b/2     \\
-% Circle center ordinate     & 0,545h   &0,533h  &0,526h    &0,515h  \\
-% Circle radius              & b/2      & b/2    & b/2      &b/2     \\
+% Base to height ratio 		&0.6180		&0.6666		&0.7071		&0.7727~\\
+% Inner margin 						&0.146b		&0.133b		&0.121b		&0.099b \\
+% External margin 				&0.236b		&0.200b		&0.172b		&0.128b	\\
+% Top margin 							&0.146h		&0.133h		&0.121h		&0.099h \\
+% Bottom margin 					&0.236h		&0.200h		&0.172h		&0.128h	\\
+% Text width  						&0.618b		&0.666b		&0.707b		&0.773b	\\
+% Text height 						& b				& b				& 	b			&b			\\
+% Circle center abscissa	& b/2			& b/2			& b/2			&b/2		\\
+% Circle center ordinate	& 0.545h	&0.533h		&0.526h		&0.515h	\\
+% Circle diameter					& b				& b				& b				& b		  \\
 %\bottomrule
 %\end{tabular}
 %\end{table}
 %
-% Actually the formulas~\ref{equ:1}–\ref{equ:10}, and their numerical
-% evaluations reported in table~\ref{tab:canoniclayout}, are just for
-% general information. The actual computations are performed by this
-% package, either by means of the \class{memoir} built-in facilities
-% or by explicit computations that exploit the \pack{xfp} functions.
-% But it can be easily seen that as the trimmed page becomes more
-% squarish, the page size ratio tends to one, ad the margins become
-% smaller and smaller. Therefore it seems that this layout is better
-% suited for intermediate page ratios, such as the ISO one or the
-% common European book size of 170\,mm $\times$ 240\,mm with a ratio
-% of 0,708.
+% Actually the formulas~\ref{equ:1}--\ref{equ:10}, and their numerical
+% values reported in table~\ref{tab:canoniclayout}, are just for general
+% information. The actual computations are performed by this package, by
+% means of the package built-in facilities. But it can be easily seen that
+% as the trimmed page becomes more squarish, the page size ratio tends to
+% one, and the margins become smaller and tend to vanish. Therefore it
+% seems that this layout is most suited for intermediate page ratios, such
+% as the ISO one or the common European book page size of 170\,mm
+% by~240\,mm with a ratio $b/h=0.708$.
 %
 % \section{Usage}
 % This package is invoked as usual with:
@@ -298,52 +277,49 @@
 %\begin{verbatim}
 %   \usepackahe{canoniclayout}
 %\end{verbatim}
-% No options are necessary; but it is necessary to invoke the package
-% only after the actual page dimensions are known, be they specified
-% by an option passed to the class, such as, for example, \texttt{a4paper},
-% or by means of a \texttt{page}\meta{size} specification, for example
-% \texttt{pagebv} for calling the ISO B5 size.
+% No options are required; but it is necessary to invoke the package only
+% after the page dimensions are known, be they specified by a class option,
+% such as, for example, \texttt{a4paper}, or by means of explicit
+% \verb|\paperwidth| and \verb|\paperheight| assignments.
 % 
-% At any convenient moment after calling this package, the trimming
-% margins with respect to the stock paper may be computed and the
-% layout rechecked and fixed for consistency.
+% At a convenient moment after calling this package, the trimming margins
+% with respect to the trimmed page may be computed and the layout
+% rechecked and fixed for consistency. The convenient moment is chosen by
+% the package to be at the \cs{begin}\Marg{document} statement execution,
+% because only at that moment all required packages are loaded and
+% possibly the user's macros are defined and settings are~set.
 %
 % \section{Font normal size}
-% At the same time if this page layout is chosen, the font normal size
-% should be selected on the actual text block width; it is possible
-% that the golden ratio type block, on a golden rectangle paper obtained
-% by trimming  an ISO A4 stock paper, might be suitable with a 10\,pt
-% normal font size (exactly 66 characters per line with 10pt Latin
-% Modern fonts), while a full ISO A4 paper yields a type block that
-% might be more suited for a 12pt normal font size (86 characters with
-% 10pt Latin Modern fonts is too much). The computations might be left
-% to the \class{memoir} class commands, but it's better the user
-% is aware of this particular point.
-% For his/her sake this package provides the command |\currentfontletters|
-% (to be used only after |\begin{document}|, because specific font
-% packages might be loaded after the page layout has been computed; in
-% any case the command is “text producing”, therefore it can't be used
-% while in the preamble!) that types out a sentence such as “The number
-% of characters in one text line with the current font is $nn$”, where
-% the $nn$ is the actual number printed out. If such number is much
-% larger than the ideal Bringhurst range of $66\pm6$, it's wiser to
-% chose a larger normal font size. 
-% In any case the alternative command |\charactersperpage| types out
-% the same information, the number of lines and the estimated number
-% of characters per page. These commands are supposed to be useful
-% while setting up the complete preliminary parameters for the page
+% At the same time, if this page layout is chosen, the font normal size
+% should be selected on the actual text block width; it is possible that
+% the golden ratio type block, on a golden rectangle paper obtained by
+% trimming  an ISO A4 stock paper, might be suitable with a 10pt normal
+% font size (exactly 66 characters per line with 10pt Latin Modern fonts),
+% while a full ISO A4 paper yields a type block that might be more suited
+% for a 12pt normal font size (about 86 characters with 10pt Latin Modern
+% fonts). The computations might be left, for example, to the used class
+% \class{memoir} commands or to the user specifications, but it is
+% important that the user is aware of this particular point.
+%
+% For the user's sake this package provides the command
+% |\currentfontletters| (to be used only after |\begin{document}|,
+% because this package computations are available only after the
+% \cs{begin}\Marg{document} delayed computations are done; in any case the
+% command  types out a sentence such as “The number of characters in one
+% text line with the current font is $n$'', where the $n$ is the actual
+% number printed out. If such number is much outside the ideal Bringhurst
+% range of $66\pm5$, it is wiser to chose a larger or smaller normal font
+% size. 
+%
+% In any case the alternative command |\charactersperpage| types out the
+% same above information, the number of lines and the estimated number of
+% characters per page. These commands are supposed to be useful while
+% setting up or revise the complete preliminary parameters for the page
 % layout. 
 %
-% Just to have a comparison, table~\ref{tab:sizes} displays the number
-% of characters in one text line for several fonts and for page sizes
-% A4, A5, and B5. As you see, although that Bringhurst range comes form
-% socio-psychological studies and therefore has a large standard deviation,
-% It appears that for the larger papers only those fonts with wider
-% lowercase letters are suitable for this canonical layout; with smaller
-% paper sizes, quite understandably, more font collections are suited.
-% This very document, typeset with this canonical layout on A4 paper
-% with a Latin Modern 10\,pt font size, has long text lines that stress
-% the readers eyes.
+% Just to have a comparison, table~\ref{tab:sizes} displays the number of
+% characters in one line of text for several fonts and for page sizes A4,
+% A5, and~B5.
 %
 %\begin{table}
 %\caption{Text line lengths measured in average number
@@ -354,113 +330,145 @@
 % \let\b\bfseries \let\i\itshape\tabcolsep=5pt
 % \makebox[\textwidth]{\small\begin{tabular}{l*9c}
 % \toprule
-% Font collection  & \multicolumn3c{A4 paper size}
-%                                & \multicolumn3c{A5 paper size}
-%                                &\multicolumn3c{B5 paper size}\\
-%  &10\,pt &11\,pt &12\,pt &10\,pt &11\,pt &12\,pt &10\,pt &11\,pt &12\,pt\\
+% Font collection	& \multicolumn3c{A4 paper size}
+%                        & \multicolumn3c{A5 paper size}
+%                              &\multicolumn3c{B5 paper size}\\
+% 				& 10\,pt	& 11\,pt	& 12\,pt	& 10\,pt	& 11\,pt	& 12\,pt	& 10\,pt	& 11\,pt	& 12\,pt	\\
 % \midrule
-% Times eXtended  
-%  & \i92  & \i84  & \i77  & \b64  & 59    & \i54  & \i77  & \b70  &  \b64\\
-% Latin Modern  
-%  & \i86  & \i79  &   73  & \b60  & \i55  & \i51  & \b72  & \b66  &  \b61\\
-% Kepler Project 
-%  & \i83  &   76  & \b69  &   58  & \i53  & \i48  & \b69  & \b63  &    58\\
-% Palatino eXtended
-%  & \i82  &   75  & \b69  &   58  & \i53  & \i48  & \b69  & \b63  &    57\\
+% Times eXtended	&	\i92	&	\i84	&	\i77	&	\b64	&	59	&	\i54	&	\i77	&	\b70	&	\b64	\\
+% Latin Modern	&	\i86	&	\i79	&	73	&	60	&	\i55	&	\i51	&	72	&	\b66	&	\b61	\\
+% Kepler Project	&	\i83	&	76	&	\b69	&	58	&	\i53	&	\i48	&	\b69	&	\b63	&	58	\\
+% Palatino eXtended&	\i82	&	75	&	\b69	&	58	&	\i53	&	\i48	&	\b69	&	\b63	&	57	\\
 % \bottomrule
 % \end{tabular}}
 %\end{table}
 %
-% It can be seen that the bold measures satisfy the Bringhurst rule
-% with a number of characters in the range $66\pm6$; the measures
-% typeset in medium series type are out of  the optimal Bringhurst
-% range, but may be considered acceptable; the measures typeset in
-% italics  are completely out of the interval $66\pm10$ and should
-% not be considered acceptable. This means that the large A4 paper
-% size may be best used with intrinsically large fonts such as the
-% Palatino eXtended (package \pack{newpxtext}) and the Kepler Project
-% (package  \pack{kpfonts}). With the smaller A5 paper size with 10\,pt
-% size fonts the best ones are the Times eXtended (package
-% \pack{newtxtext}), and the Latin Modern ones (package \pack{lmodern})
-% but substantially all the examined fonts are acceptable, while with
-% 12\,pt fonts none are acceptable.
+% It can be seen that the bold typeset numbers satisfy the Bringhurst rule
+% with such numbers falling within the range $66\pm5$; the computed numbers
+% typeset in normal series and shape are slightly out of the optimal
+% Bringhurst range, and may be considered acceptable; those typeset in
+% italics are completely out of the interval $66\pm10$ and should not be
+% accepted.
+% This means that the large A4 paper size may be best used with
+% intrinsically large fonts such as the Palatino eXtended (package
+% \pack{pxfonts} or \pack{newpxtext}) and the Kepler Project (package
+% \pack{kpfonts}).
 %
+% With the smaller A5 paper size with 10\,pt size fonts, the best ones are
+% the Times eXtended (package \pack{txfonts} or \pack{newtxtext}), but
+% substantially all the examined fonts are acceptable except those in
+% 12\,pt size.
+%
 % With an intermediate sized paper, such as a B5 ISO size, all the
-% considered fonts are acceptable inside or just outside the optimal Bringhurst interval.
+% considered fonts are acceptable inside or just outside the optimal
+% Bringhurst interval.
 %
-% Many books are trimmed to a size close the B5 paper size, therefore
-% the page layout produced with this package is most useful with medium
-% and smaller sizes (at least with ISO sizes).
+% Many books have trimmed pages sized close the B5 paper size, therefore
+% the page layout produced with this package is most useful with medium and
+% smaller paper sizes (at least with the ISO ones).
 
 % \section{Conclusion}
-% I don't think this package should set also the header and footer
+% We don't think this package should set also the header and footer
 % distances, for example, or should set any specification for the page
-% “decorations”, such as underlined headers, or over lined footers,
-% or the size, font family, series and shape of the header and footer
-% contents. These specifications are of course important, but have
-% nothing to do with the relationship between the paper size, the
-% page size and the type block size. 
+% “decorations”, such as underlined headers, or over lined footers, or
+% the font size, family, series and shape of the header and footer
+% contents. These specifications are of course important, but have nothing
+% to do with the relationship between the paper size, the page size and the
+% type block size. 
 %
-% As a final remark it's worth noting that a single pass of
-% \prog{pdflatex} on this \file{canoniclayout.dtx} file produces at the
-% same time both the \file{canoniclayout.sty} package file and the
-% documentation \file{canoniclayout.pdf} file, besides a \file{README.txt}
-% required for uploading to the \textsc{ctan} archives. After running
-% \prog{pdflatex} move \file{canoniclayout.sty} to a
-% \file{tex/latex/canoniclayout/} folder and \file{canoniclayout.pdf}
-% to a \file{doc/latex\discretionary{}{/}{/}canoniclayout/} one;
-% if such folders don't exist, create them on your personal \TeX\ 
-% tree. After moving these files and if you have a Mik\TeX\ installation,
-% remember to refresh the file name data base.
 %
+% \StopEventually{}^^A================================================== 
 %
-% \StopEventually{} 
+% \section{Documented code}
+% The package preliminaries are already in place. We are going to make some
+% computations in order to determine the page shape factor $x$; 
+% to this end we use the functionalities of the \LaTeX\,3 language, already 
+% contained in the \LaTeX\ kernel since 2020; even dimensions and skip
+% calculations are being  available since June 2022. But the first thing
+% to do is to verify if the package is being used with a sufficiently
+% recent version of the \LaTeX\ engine; we test if the kernel has
+% a date of at least 2022/06/01
 %
-% \section{Documented code}
-% The package preliminaries are already in place. We are going to make
-% some computations in order to determine the page shape factor $x$;
-% to this end we exploit the dimensional computing capabilities package
-% \pack{xft}, that are already available in the most recent \LaTeX\ 
-% kernel files; in facts, the \LaTeX\,3 (L3) language computing
-% facilities have been available for several years, but the simple
-% and efficient user interface package \pack{xfp} has been available
-% since the 2018 autumn. If these facilities are not available, either
-% because the \TeX\ distribution is a little too old, or because the
-% real \prog{tex} typesetting engine, not \prog{pdftex}, is being used,
-% then, this entire package contents is skipped and nothing is done,
-% except issuing a suitable warning.
+% We exploit also the \eTeX\ dimensional computing capabilities, that are
+% already embedded in the most recent implementations of the program
+% \prog{pdftex}; in fact it must be remarked that these facilities are
+% being embedded into the \LaTeX\ based typesetting engine since the
+% \TeX~Live distribution of the year 2005. If these facilities are not
+% available, either because the \TeX\ distribution is a little too old, or
+% because the real \prog{tex} typesetting interpreter, not \prog{pdftex},
+% or\prog{luatex}, or \prog{xetex}, is being used, then this entire
+% package contents is skipped and nothing is done, except issuing a
+% suitable warning.
 %\iffalse
 %<*package>
 %\fi
 %    \begin{macrocode}
-\IfFileExists{xfp.sty}{\RequirePackage{xfp}}{%
-	\PackageError{canoniclayout}{\MessageBreak%
-	The xfp package is not available\MessageBreak
-	and this package cannot work without\MessageBreak}{
-	Reading of this package is skipped\MessageBreak
-	Expect a different layout form the canonical one\Messagebreak
-	Update your TeX system installation!\expandafter\endinput}}
+\IfFormatAtLeastTF{2022/06/01}{}{%
+	\PackageWarning{canoniclayout}{%
+	The format file is not suited\MessageBreak
+	for working with this package.\MessageBreak
+	This package is being skipped and \MessageBreak
+	its functionalities are not available
+	\expandafter\endinput}
+\fi}
+
 %    \end{macrocode}
+% Then we test if the \class{memoir} class is being used; if that is the
+% case, we use its code (identical to the one of the  previous package
+% version), otherwise we set up the code for this package internal
+% computations..
 %
-% In order to have this layout work with the \class{memoir} class or
-% with any other class we have to test the fact that this package
-% has been loaded within the preamble of a \class{memoir} styled document;
-% according to the result of this test we can exploit
-% the \class{memoir} facilities for determining the page geometry,
-% or we have to carry out the complete computations ourselves.
+% We delay both codes to the \cs{begin}\Marg{document} statement execution,
+% so% we are sure that there are no interferences between the document
+% preamble settings and the \pack{canoniclayout}~ones.
+%
+% The user might start his main document \file{.tex} file according to the
+% following model:
+%  \begin{flushleft}\obeylines
+%  \cs{documentclass}\Oarg{...,a4paper,...}\marg{class}
+%  ...
+%  \cs{usepackage}\Marg{canoniclayout}
+%  ...
+%  \cs{begin}\Marg{document}
+%  \meta{main document body}
+%  \cs{end}\Marg{document}
+%  \end{flushleft}
+% It is very important that the paper size be established within the
+% options of the \cs{documentclass} statement, because this package
+% needs the dimensions of the page to deal with.
+% \subsection[Using the memoir class]{Using the \class{memoir} class}
 %    \begin{macrocode}
 \@ifclassloaded{memoir}{%
+\AtBeginDocument{%
 %    \end{macrocode}
-% Working with the \class{memoir} facilities, we can determine the page
-% shape factor and we save it into the control sequence |\CLshape|.
+% Now we can determine the page shape factor and we save it into the
+% control sequence \cs{CLshape}. The trick of multiplying by \cs{p@}, a
+% length of 1\,pt, is a simple trick for reducing the shape ratio to a
+% length whose numerical value is exactly the ratio we are interested in.
+% By stripping the `pt' part from this dimension value we remain with the
+% real number we want to keep in memory. Of course we need also the
+% reciprocal value so that we have to perform this calculation two times
+% with different factors. This “strange” way of computing real ratios
+% derives from the ability of the \eTeX\ engine to scale lengths with a
+% higher computational precision than “normal” \TeX\ can do with the
+% standard dimension and integer operations. In facts all the computational
+% operations are performed within the computer CPU and the intermediate
+% first result of the multiplication is kept into a double length register,
+% so that no bits are rounded or truncated; the division operation is
+% therefore performed with a double length numerator and a single length 
+% denominator, so that, again, almost no information is lost at the
+% inevitable end of the division algorithm with a non vanishing remainder.
 %    \begin{macrocode}
-\edef\CLshape{\fpeval{\paperwidth / \paperheight}}
-\edef\CLinvshape{\fpeval{1/\CLshape}}
+\dimen@=\dimexpr \p@ * \paperwidth / \paperheight\relax
+\edef\CLshape{\strip at pt\dimen@}
+\dimen@=\dimexpr \p@ * \p@ / \dimen@\relax
+\edef\CLinvshape{\strip at pt\dimen@}
 %    \end{macrocode}
 % We then assign the text height, thanks to the fact that the canonical
-% layout has the block height just as long as the page width, due to the
-% circle property mentioned in the Introduction; in any case the
-% formulas~\ref{equ:1}--\ref{equ:10} and table~\ref{tab:canoniclayout} confirm this property for any shape.
+% layout has the block height just as long as the page width, thanks to the
+% circle property mentioned in the Introduction; in any case 
+% formulas~\ref{equ:1}--\ref{equ:10} and  table~\ref{tab:canoniclayout}
+% confirm this property for any shape.
 %    \begin{macrocode}
 \textheight=\paperwidth
 %    \end{macrocode}
@@ -475,158 +483,292 @@
 
 %    \end{macrocode}
 %
-% We now use the |\checkandfixthelayout| so that it adjusts the type
-% block dimensions to an integer number of lines in the normal font and
-% eventually prints the page parameters to the \file{.log} file.
+% We now use the \cs{checkandfixthelayout} so that it prints the page
+% parameters to the \file{.log} file.
 %    \begin{macrocode}
 \checkandfixthelayout
+}}%              memoir class end code; start code for standard classes
 %    \end{macrocode}
 %
-% At this point we are finished with the computations if the
-% \class{memoir} class is the active one, but we need to perform
-% the complete calculations in case we are not working with the
-% \class{memoir} class.
+% \subsection{Using a standard class}
+% Now we define the code in case \class{memoir} is not being used; the
+% various computations require a longer code. We need the
+% \pack{pict2e} package in order to use the |picture| environment with the
+% upgrades foreseen by Leslie Lamport himself and available since 2003.
+% We need also package \pack{etoolbox} in order to have an easy access to
+% the recent \LaTeX\ kernel hooks. In particular we use the
+% \cs{AtEndPreamble} hook command so as to be sure that all settings
+% for the paper size and the user preamble settings are already fixed.
+%
 %    \begin{macrocode}
-}{%
+%
+{\RequirePackage{etoolbox,pict2e}%
+\AtEndPreamble{%
+%
 %    \end{macrocode}
-% We start by defining the lengths registers that hold the real inner,
-% outer and upper margins, without the one inch shift and without taking
-% into consideration the headings and their spacings, that must be
-% specified before calling this package.
+% If we use a standard class, we miss the powerful \class{memoir} commands;
+% we do not copy them into this package, but we make our own calculations;
+% by so doing we have full control also on the necessary parameters for
+% drawing the circles and the relevant diagonals. The necessary code is
+% going to be longer that that required for the \class{memoir} class,
+% also because we have to redefine the four standard page styles.
+%
+% We compute the relevant values by using equations from~\ref{equ:1}
+% to~\ref{equ:10}. Notice that we also create the service macros for
+% drawing the circle and the relevant page diagonal in case the user
+% wants them to appear in certain pages; see below for more details.
+% In any case we must check if the |\color| macro is available; in case
+% it is not, we load the \pack{xcolor} package without any options.
+%
+% Attention: if users want to use colors in their document, they should
+% load either package \pack{color} or package \pack{xcolor} with their
+% options \textcolor{red}{before} loading this package
+% \pack{canoniclayout}. If this is done, users are sure that the package
+% loaded within this module will not override their settings; notice that
+% \pack{xcolor} redefines some macros that have the same name as those of
+% \pack{color}; therefore \pack{color} might be loaded before
+% \pack{canoniclayout}, absolutely not \textcolor{red}{after}, otherwise
+% some \pack{xcolor} functionalities get corrupted; see the \pack{xcolor}
+% documentation. In a different wording: \textcolor{red}{avoid loading
+% package \pack{color}, because its functionalities are given
+% by \pack{xcolor} and \pack{color} is not required any more!}
 %    \begin{macrocode}
-\newlength\innermargin
-\newlength\outermargin
-\newlength\uppermargin
+\unless\ifcsname color\endcsname \RequirePackage{xcolor}\fi
+\newlength\CLinner \newlength\CLouter %             new length registers
+\newlength\CLtop \newlength\CLbottom  %              other new registers
+\edef\CLx{\fpeval{\paperwidth/\paperheight}}%                 equation 1
+\edef\CLxx{\fpeval{(1-\CLx)/(1+\CLx)}}%      for equations 2, 3, 4, 5, 9
+\CLinner=\fpeval{\paperwidth*\CLx*\CLxx}\p@%                  equation 2
+\CLouter=\fpeval{\paperwidth*\CLxx}\p@%                       equation 3
+\CLtop=\fpeval{\paperheight*\CLx*\CLxx}\p@%                   equation 4
+\CLbottom=\fpeval{\paperheight*\CLxx}\p@%                     equation 5
+\textwidth=\fpeval{\CLx*\paperwidth}\p@%                      equation 6
+\textheight=\paperwidth%                                      equation 7
+\edef\CLcirclecenterX{\fpeval{\paperwidth/2}}%                equation 8
+\edef\CLcirclecenterY{\fpeval{\CLxx*\paperheight+\paperwidth/2}}%  eq. 9
+\let\CLcircleradius\CLcirclecenterX%                         equation 10
+\edef\CLcirclediameter{\strip at pt\paperwidth}%
+\let\CLpageW\CLcirclediameter
+
 %    \end{macrocode}
-% Then we use some macros where to store some constant values; 
-% we compute them using  the rimmed page width and height; 
+% Then the text body height is proportional to the text body width trough
+% the above determined ratios.
+% We now set the other necessary page settings, even if by so doing, it
+% becomes impossible to modify them either in the preamble or after the
+% \cs{begin}\Marg{document} command. May be in the future this constraint
+% may be eliminated.
 %    \begin{macrocode}
-\edef\CLpageratio{\fpeval{\paperwidth/\paperheight}} % x
-\edef\CLlargeratio{\fpeval{(1-\CLpageratio)/(1+\CLpageratio)}} % y
-\edef\CLsmallratio{\fpeval{\CLpageratio*\CLlargeratio}} % z
+\normalsize
+\headheight=\baselineskip
+\headsep=\baselineskip
+\footskip=2\baselineskip
+\marginparsep=0.1\CLouter\relax
+\marginparwidth=0.8\CLouter\relax
+\topmargin=\dimexpr\CLtop-\headsep-\headheight-1in\relax
+\oddsidemargin=\dimexpr\CLinner-1in \relax
+\evensidemargin=\dimexpr\CLouter-1in \relax
+
 %    \end{macrocode}
-% We compute the type block dimensions:
+%
+% While \class{memoir} uses its computed results and applies them to all
+% pages; with the local calculations it is necessary to redesign the page
+% styles; we redefine also the |empty| and |plain| styles so as to have a
+% place holder in the otherwise empty headers, such that users can verify
+% the correct layout geometry by placing under the text being typeset,
+% a red drawing that shows the circle and the diagonal. Since the place
+% holder may contain some executable code, it is necessary to have handy
+% user macros to set it on or off.
+%
 %    \begin{macrocode}
-\textheight\paperwidth 
-\textwidth=\CLpageratio\textheight
+\edef\CLdiagX{\strip at pt\paperwidth}%       diagonal horizontal component
+\edef\CLdiagY{\strip at pt\paperheight}%        diagonal vertical component
+\let\@CLdrawing\relax%                 initially drawings are turned off
+%Coordinates of the lower left page corner relative to the header origin
+\edef\CLlly{-\expandafter\strip at pt%           both pages corner ordinate
+    \dimexpr\paperheight-\CLtop+\headsep}%
+\edef\CLllLx{-\strip at pt\CLouter}%   lower left left-page corner abscissa
+\edef\CLllRx{-\strip at pt\CLinner}%  lower left right-page corner abscissa
 %    \end{macrocode}
-% We then compute the real margins between the page sides and the type block:
+% The user commands for turning on and off the canonical layout drawings
+% are the following; sometimes it might be necessary to delay them
+% to the start of a new page; this may me easily done by using the
+% \pack{afterpage} package and its command \cs{afterpage}.
+% There are two commands, one for starting to insert drawings
+% in consecutive pages, and another to stop this functionality.
 %    \begin{macrocode}
-\innermargin=\CLsmallratio\paperwidth 
-\outermargin=\CLlargeratio\paperwidth 
-\uppermargin=\CLsmallratio\paperheight
+
+\newcommand*\CLstartdrawings{\let\@CLdrawing\CLdrawing}
+\newcommand*\CLstopdrawings{\let\@CLdrawing\relax}
+
+\newcommand*\CLdrawing{% 
+  \begin{picture}(0,0)\color{red}%
+  \unitlength=\p@
+  \if at twoside
+    \ifodd\value{page}%
+      \put(\CLllRx,\CLlly){%     right page: displaces the origin to the
+%                                                lower left paper corner
+        \put(\CLcirclecenterX,\CLcirclecenterY){\circle{\CLcirclediameter}}
+          \put(\CLpageW,0){\line(-\CLdiagX,\CLdiagY){\CLpageW}}
+      }
+    \else
+      \put(\CLllLx,\CLlly){%      left page: displaces the origin to the
+%                                                lower left paper corner
+        \put(\CLcirclecenterX,\CLcirclecenterY){\circle{\CLcirclediameter}}
+        \put(0,0){\line(\CLdiagX,\CLdiagY){\CLpageW}}
+      }
+    \fi
+  \else
+    \put(\CLllRx,\CLlly){%         one side: displaces the origin to the
+%                                                lower left paper corner
+      \put(\CLcirclecenterX,\CLcirclecenterY){\circle{\CLcirclediameter}}
+      \put(\CLcirclecenterX,\CLcirclecenterY){%
+        \put(0,0){\line(\CLdiagX,\CLdiagY){\CLcircleradius}}
+        \put(0,0){\line(-\CLdiagX,-\CLdiagY){\CLcircleradius}}
+      }
+    }
+  \fi
+  \end{picture}
+}
 %    \end{macrocode}
-% But the typesetting engine does not use the net margins, due to the
-% historical one inch shift of the original \TeX\ implementation and,
-% for the upper margin, due to the fact that by default this layout
-% implies the headings and the footers outside the type block. Since
-% we have the real outer margin dimension, we compute
-% the actual default marginal note measure:
+% Now we redefine the four standard page styles so as to set the place
+% holder in all the headers; when this place holder is activated by
+% \cs{CLstartdrawings}, it gets defined with an environment |picture|
+% code extended by the use of package \pack{pict2e}. The environment
+% |picture| initial command has zero dimensions, therefore it does not
+% occupy any space in the headers. Command \cs{CLstopdrawings} redefines
+% the place holder to \cs{relax} and stops all drawings relative
+% to the page design.
 %    \begin{macrocode}
-\marginparwidth=\fpeval{0.8\outermargin-\marginparsep}pt
-\evensidemargin=\fpeval{\outermargin -(1in)}pt
-\oddsidemargin=\fpeval{\innermargin-(1in)}pt
-\topmargin=\fpeval{\uppermargin-(1in)-\headheight-\headsep}pt
+\def\ps at empty{%
+  \let\@mkboth\@gobbletwo
+  \def\@oddhead{\makebox[\textwidth][l]{{\@CLdrawing}}}\let\@oddfoot\@empty
+  \def\@evenheadhead{\makebox[\textwidth][l]{{\@CLdrawing}}}
+  \let\@evenfoot\@empty}
 %    \end{macrocode}
-% When using different classes from the \class{memoir} one, we adjust
-% the type block dimensions so that the type block contains an integer
-% number of lines; we use the normal size |\baselineskip| value and 
-% compute the number of lines contained in the initial type block minus
-% the first line standard height equal to |\topskip|; notice that the
-% integer value expression is a rounded value,
-% not a truncated one, therefore the actual type block height might get
-% enlarged or reduced by a very little bit that will not be noticed with
-% naked eye when one examines a typeset page; eventually we recompute the
-% |\textheight| taking into account the height of the first line.
+% The above settings for an empty page may be useful to get the drawing
+% in a completely empty page, without any other object entering the page.
+%
+% The following redefinition of the |plain| page style is necessary in
+% order to get a chapter page overlaid on the red drawing.
 %    \begin{macrocode}
-\normalfont\textheight=%
-\fpeval{round((\textheight - \topskip)/\baselineskip, 0) * \baselineskip + \topskip}pt%
-\normalbaselineskip\baselineskip
+\def\ps at plain{\let\@mkboth\@gobbletwo
+     \def\@oddhead{\makebox[\textwidth][l]{{\@CLdrawing}}}
+     \def\@oddfoot{\reset at font\hfil\thepage\hfil}
+     \def\@evenheadhead{\makebox[\textwidth][l]{{\@CLdrawing}}}
+     \let\@evenfoot\@oddfoot}
 %    \end{macrocode}
-% and we eventually close the second action depending on the use of the
-% \class{memoir} class:
+% Th redefinition of the |headings| and |myhheadings| page styles are the
+% most useful ones because the typeset text is overlaid on the red drawing
+% and the user can see the effect of the  canonical layout in the style of
+% a typeset page.
 %    \begin{macrocode}
-}% end of test on the class being used
+\if at twoside
+  \def\ps at headings{%
+    \let\@oddfoot\@empty\let\@evenfoot\@empty
+    \def\@evenhead{\@CLdrawing\thepage\hfil{\slshape\leftmark}}%
+    \def\@oddhead{\@CLdrawing{\slshape\rightmark}\hfil\thepage}%
+    \let\@mkboth\markboth
+    \def\chaptermark##1{%
+      \markboth {\MakeUppercase{%
+        \ifnum \c at secnumdepth >\m at ne
+          \if at mainmatter
+            \@chapapp\ \thechapter. \ %
+          \fi
+        \fi
+        ##1}}{}}%
+    \def\sectionmark##1{%
+      \markright {\MakeUppercase{%
+        \ifnum \c at secnumdepth >\z@
+          \thesection. \ %
+        \fi
+        ##1}}}}
+\else
+  \def\ps at headings{%
+    \let\@oddfoot\@empty
+    \def\@oddhead{\@CLdrawing{\slshape\rightmark}\hfil\thepage}%
+    \let\@mkboth\markboth
+    \def\chaptermark##1{%
+      \markright {\MakeUppercase{%
+        \ifnum \c at secnumdepth >\m at ne
+          \if at mainmatter
+            \@chapapp\ \thechapter. \ %
+          \fi
+        \fi
+        ##1}}}}
+\fi
 %    \end{macrocode}
+% The |myheadings| page style is much simpler, at least this is the
+% definition based on the standard \LaTeX\ class \class{book} code:
+%    \begin{macrocode}
+\def\ps at myheadings{%
+    \let\@oddfoot\@empty\let\@evenfoot\@empty
+    \def\@evenhead{\@CLdrawing\thepage\hfil{\slshape\leftmark}}%
+    \def\@oddhead{\@CLdrawing{\slshape\rightmark}\hfil\thepage}%
+    \let\@mkboth\@gobbletwo
+    \let\chaptermark\@gobble
+    \let\sectionmark\@gobble
+    }
+
+%    \end{macrocode}
 %
-% Just for testing the number of characters in a line, the following
-% macros are provided. A couple of variables  will be used |\CLaux|
-% and |\CLabcwidth|; |\CLabcwidth| will hold the current lowercase
-% alphabet length, while |\CLaux| will hold several values in succession.
-% The scratch variable |\CLcharcount| will receive the final result to be
-% printed out.
+% At this point we may close the argument of the \cs{AtEndPreamble}
+% command and the test on the use of the \class{memoir}~class.
+%    \begin{macrocode}
+}}% 
+%    \end{macrocode}
+%\subsection{Service macros}
+% Just for testing the number of characters in a line the following macros
+% are provided. A couple of scratch dimension registers will be used
+% |dimen@| and |\abcwidth|; |\abcwidth| will hold the current lowercase
+% alphabet length, and |\dimen@| will hold several values in succession.
+% The scratch counters |\count254|, |\count252|, and |count250| will
+% receive the final result to be printed out.  \eTeX\ arithmetics will be
+% used throughout, and we know this is possible, since we already tested
+% it at the very beginning.
 %
 % Another service macro for the user's sake is |\charactersperpage|; this
-% macro typesets the average number of characters per line, the numbers of
-% lines per page, and eventually their product, a good estimate of the
-% number of characters per page.
-%
-% Many text editors have facilities for counting a “compuscript”
-% number of words and characters; with this further information the
-% user may easily estimate the number of pages of his/her document;
-% of course s/he must allow a certain allowance for the front and back
-% matter pages, so that s/he can evaluate the total amount of signatures
-% of the whole typeset document; of course, by typesetting it with
-% \prog{(pdf)latex} s/he knows exactly the number of pages of the final
-% document, but the typography shop generally wants to know a good
-% estimate before the source \TeX\ files are finished.
+% macro typesets the number of characters per line, the numbers of lines
+% per page, and eventually their product, a good estimate of the number of
+% characters per page. Many text editors have facilities for counting
+% a “compuscript” number o words and characters; with this further
+% information users may easily estimate the number of pages of their
+% document; of course they must make a certain allowance for the front
+% and back matter pages, so that they can evaluate the total
+% amount of signatures of the whole typeset document; of course, by
+% typesetting it with any engine based on \LaTeX\ they know exactly the
+% number of pages of the final document, but typographers like
+% to know a good estimate before the source \TeX\ files are finished.
 %    \begin{macrocode}
 \newlength\abc at width
-\settowidth\abc at width{abcdefghijklmnopqrstuvwxyz}%
-\edef\CLcharcount{\fpeval{round(\textwidth * 26 / \abc at width,0)}}
 \newcommand*\currentfontletters{%
+\settowidth\abc at width{abcdefghijklmnopqrstuvwxyz}\dimen0=26\p@
+\dimen0=\dimexpr \textwidth * \dimen0 / \abc at width \relax
+\count254=\numexpr \dimen0 / \p@ \relax
 \par The number of characters in one text line with the current font is
-    \CLcharcount.\par}
-%    
+    \the\count254.\par}
+    
 \newcommand*\charactersperpage{%
-\edef\CLlinesperpage{\fpeval{round(\textheight / \baselineskip,0)}}
-\edef\CLcharsperpage{%
-  \fpeval{\CLcharcount * \CLlinesperpage}}
-\begin{quote} The average number of characters in one text line
-    with the current font is \CLcharcount;
-    this text block contains \CLlinesperpage\ lines;
+\settowidth\abc at width{abcdefghijklmnopqrstuvwxyz}\dimen0=26\p@
+\dimen0=\dimexpr \textwidth * \dimen0 / \abc at width \relax
+\count254=\numexpr \dimen0 / \p@ \relax
+\count252=\numexpr \textheight / \baselineskip \relax
+\count250=\numexpr \count252 * \count254\relax
+\quote The number of characters in one text line with the current
+    font is \the\count254;\\
+    this text block contains \the\count252\ lines;\\
     a rough estimate of the number of characters per page is
-    \CLcharsperpage.\par
-    This information may be useful to evaluate the total number
-    of pages in a document.
-\end{quote}}
-
+    \the\count250.\par
+    This might be used to estimate the total number of pages of
+    a document.
+\endquote}
 %    \end{macrocode}
-% Using these macros, we can type out the information relative to this
-% specific documentation.
-% \charactersperpage
+%
+%{\centering\color{red} \LARGE Happy \LaTeX{ing} \par}
+% \Finale
 %\iffalse
 %</package>
-%<*txt>
 %\fi
-% 
-%    \begin{macrocode}
-Canoniclayout is a small extension package that allows to design 
-a canonic layout based on the great circle inscribed within the 
-page and tangent to the horizontal sides of the type block rectangle. 
-The margins reflect the trimmed page shape ratio, therefore the 
-type block principal diagonal coincides with the corresponding 
-page diagonal; this layout is especially good for ISO page shapes 
-but it can be used with many other traditional book page shapes.
-
-This new version is completely new, in the sense that its code 
-calculations are performed by means of the 2018 xfp package 
-facilities. For this reason it cannot be used with any TeX 
-distribution preceding the year 2018 and updated by the end of 
-that year; should this happen this very package aborts its own 
-input while advising the user by means of an Error Message. 
-
-This work is released under  the Latex Project Public Licence 
-v.1.3c. The LPPL is distributed with any TeX system distribution 
-and can be found also in any CTAN archive.
-
-Claudio Beccari 2020
-claudio dot beccari at gmail dot com
-%    \end{macrocode}
-%\iffalse
-%</txt>
-%\fi
-% \Finale
 % \endinput
 %
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 

Modified: trunk/Master/texmf-dist/tex/latex/canoniclayout/canoniclayout.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/canoniclayout/canoniclayout.sty	2022-11-01 19:51:20 UTC (rev 64888)
+++ trunk/Master/texmf-dist/tex/latex/canoniclayout/canoniclayout.sty	2022-11-01 19:51:57 UTC (rev 64889)
@@ -7,7 +7,7 @@
 %% canoniclayout.dtx  (with options: `package')
 %%   ______________________________________________________
 %%   The canoniclayout package for LaTeX
-%%   Copyright (C) 2010-2020 Claudio Beccari
+%%   Copyright (C) 2010 Claudio Beccari
 %%   All rights reserved
 %% 
 %%   License information appended
@@ -14,19 +14,23 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}[2009/01/01]
 \ProvidesPackage{canoniclayout}%
-   [2020-04-09 v.0.5 Canonic layout circumscribed to a circle]
+   [2022/11/01 v.1.0 Text block height equal to paper width]
 
+\IfFormatAtLeastTF{2022/06/01}{}{%
+\PackageWarning{canoniclayout}{%
+The format file is not suited\MessageBreak
+for working with this package.\MessageBreak
+This package is being skipped and \MessageBreak
+its functionalities are not available
+\expandafter\endinput}
+\fi}
 
-\IfFileExists{xfp.sty}{\RequirePackage{xfp}}{%
-\PackageError{canoniclayout}{\MessageBreak%
-The xfp package is not available\MessageBreak
-and this package cannot work without\MessageBreak}{
-Reading of this package is skipped\MessageBreak
-Expect a different layout form the canonical one\Messagebreak
-Update your TeX system installation!\expandafter\endinput}}
 \@ifclassloaded{memoir}{%
-\edef\CLshape{\fpeval{\paperwidth / \paperheight}}
-\edef\CLinvshape{\fpeval{1/\CLshape}}
+\AtBeginDocument{%
+\dimen@=\dimexpr \p@ * \paperwidth / \paperheight\relax
+\edef\CLshape{\strip at pt\dimen@}
+\dimen@=\dimexpr \p@ * \p@ / \dimen@\relax
+\edef\CLinvshape{\strip at pt\dimen@}
 \textheight=\paperwidth
 \settypeblocksize{\textheight}{*}{\CLshape}
 \setlrmargins{*}{*}{\CLinvshape}
@@ -34,54 +38,160 @@
 \setmarginnotes{7pt}{\dimexpr \foremargin-3\marginparsep}{\onelineskip}
 
 \checkandfixthelayout
-}{%
-\newlength\innermargin
-\newlength\outermargin
-\newlength\uppermargin
-\edef\CLpageratio{\fpeval{\paperwidth/\paperheight}} % x
-\edef\CLlargeratio{\fpeval{(1-\CLpageratio)/(1+\CLpageratio)}} % y
-\edef\CLsmallratio{\fpeval{\CLpageratio*\CLlargeratio}} % z
-\textheight\paperwidth
-\textwidth=\CLpageratio\textheight
-\innermargin=\CLsmallratio\paperwidth
-\outermargin=\CLlargeratio\paperwidth
-\uppermargin=\CLsmallratio\paperheight
-\marginparwidth=\fpeval{0.8\outermargin-\marginparsep}pt
-\evensidemargin=\fpeval{\outermargin -(1in)}pt
-\oddsidemargin=\fpeval{\innermargin-(1in)}pt
-\topmargin=\fpeval{\uppermargin-(1in)-\headheight-\headsep}pt
-\normalfont\textheight=%
-\fpeval{round((\textheight - \topskip)/\baselineskip, 0) * \baselineskip + \topskip}pt%
-\normalbaselineskip\baselineskip
-}% end of test on the class being used
+}}%              memoir class end code; start code for standard classes
+{\RequirePackage{etoolbox,pict2e}%
+\AtEndPreamble{%
+\unless\ifcsname color\endcsname \RequirePackage{xcolor}\fi
+\newlength\CLinner \newlength\CLouter %             new length registers
+\newlength\CLtop \newlength\CLbottom  %              other new registers
+\edef\CLx{\fpeval{\paperwidth/\paperheight}}%                 equation 1
+\edef\CLxx{\fpeval{(1-\CLx)/(1+\CLx)}}%      for equations 2, 3, 4, 5, 9
+\CLinner=\fpeval{\paperwidth*\CLx*\CLxx}\p@%                  equation 2
+\CLouter=\fpeval{\paperwidth*\CLxx}\p@%                       equation 3
+\CLtop=\fpeval{\paperheight*\CLx*\CLxx}\p@%                   equation 4
+\CLbottom=\fpeval{\paperheight*\CLxx}\p@%                     equation 5
+\textwidth=\fpeval{\CLx*\paperwidth}\p@%                      equation 6
+\textheight=\paperwidth%                                      equation 7
+\edef\CLcirclecenterX{\fpeval{\paperwidth/2}}%                equation 8
+\edef\CLcirclecenterY{\fpeval{\CLxx*\paperheight+\paperwidth/2}}%  eq. 9
+\let\CLcircleradius\CLcirclecenterX%                         equation 10
+\edef\CLcirclediameter{\strip at pt\paperwidth}%
+\let\CLpageW\CLcirclediameter
+
+\normalsize
+\headheight=\baselineskip
+\headsep=\baselineskip
+\footskip=2\baselineskip
+\marginparsep=0.1\CLouter\relax
+\marginparwidth=0.8\CLouter\relax
+\topmargin=\dimexpr\CLtop-\headsep-\headheight-1in\relax
+\oddsidemargin=\dimexpr\CLinner-1in \relax
+\evensidemargin=\dimexpr\CLouter-1in \relax
+
+\edef\CLdiagX{\strip at pt\paperwidth}%       diagonal horizontal component
+\edef\CLdiagY{\strip at pt\paperheight}%        diagonal vertical component
+\let\@CLdrawing\relax%                 initially drawings are turned off
+\edef\CLlly{-\expandafter\strip at pt%           both pages corner ordinate
+    \dimexpr\paperheight-\CLtop+\headsep}%
+\edef\CLllLx{-\strip at pt\CLouter}%   lower left left-page corner abscissa
+\edef\CLllRx{-\strip at pt\CLinner}%  lower left right-page corner abscissa
+
+\newcommand*\CLstartdrawings{\let\@CLdrawing\CLdrawing}
+\newcommand*\CLstopdrawings{\let\@CLdrawing\relax}
+
+\newcommand*\CLdrawing{%
+  \begin{picture}(0,0)\color{red}%
+  \unitlength=\p@
+  \if at twoside
+    \ifodd\value{page}%
+      \put(\CLllRx,\CLlly){%     right page: displaces the origin to the
+        \put(\CLcirclecenterX,\CLcirclecenterY){\circle{\CLcirclediameter}}
+          \put(\CLpageW,0){\line(-\CLdiagX,\CLdiagY){\CLpageW}}
+      }
+    \else
+      \put(\CLllLx,\CLlly){%      left page: displaces the origin to the
+        \put(\CLcirclecenterX,\CLcirclecenterY){\circle{\CLcirclediameter}}
+        \put(0,0){\line(\CLdiagX,\CLdiagY){\CLpageW}}
+      }
+    \fi
+  \else
+    \put(\CLllRx,\CLlly){%         one side: displaces the origin to the
+      \put(\CLcirclecenterX,\CLcirclecenterY){\circle{\CLcirclediameter}}
+      \put(\CLcirclecenterX,\CLcirclecenterY){%
+        \put(0,0){\line(\CLdiagX,\CLdiagY){\CLcircleradius}}
+        \put(0,0){\line(-\CLdiagX,-\CLdiagY){\CLcircleradius}}
+      }
+    }
+  \fi
+  \end{picture}
+}
+\def\ps at empty{%
+  \let\@mkboth\@gobbletwo
+  \def\@oddhead{\makebox[\textwidth][l]{{\@CLdrawing}}}\let\@oddfoot\@empty
+  \def\@evenheadhead{\makebox[\textwidth][l]{{\@CLdrawing}}}
+  \let\@evenfoot\@empty}
+\def\ps at plain{\let\@mkboth\@gobbletwo
+     \def\@oddhead{\makebox[\textwidth][l]{{\@CLdrawing}}}
+     \def\@oddfoot{\reset at font\hfil\thepage\hfil}
+     \def\@evenheadhead{\makebox[\textwidth][l]{{\@CLdrawing}}}
+     \let\@evenfoot\@oddfoot}
+\if at twoside
+  \def\ps at headings{%
+    \let\@oddfoot\@empty\let\@evenfoot\@empty
+    \def\@evenhead{\@CLdrawing\thepage\hfil{\slshape\leftmark}}%
+    \def\@oddhead{\@CLdrawing{\slshape\rightmark}\hfil\thepage}%
+    \let\@mkboth\markboth
+    \def\chaptermark##1{%
+      \markboth {\MakeUppercase{%
+        \ifnum \c at secnumdepth >\m at ne
+          \if at mainmatter
+            \@chapapp\ \thechapter. \ %
+          \fi
+        \fi
+        ##1}}{}}%
+    \def\sectionmark##1{%
+      \markright {\MakeUppercase{%
+        \ifnum \c at secnumdepth >\z@
+          \thesection. \ %
+        \fi
+        ##1}}}}
+\else
+  \def\ps at headings{%
+    \let\@oddfoot\@empty
+    \def\@oddhead{\@CLdrawing{\slshape\rightmark}\hfil\thepage}%
+    \let\@mkboth\markboth
+    \def\chaptermark##1{%
+      \markright {\MakeUppercase{%
+        \ifnum \c at secnumdepth >\m at ne
+          \if at mainmatter
+            \@chapapp\ \thechapter. \ %
+          \fi
+        \fi
+        ##1}}}}
+\fi
+\def\ps at myheadings{%
+    \let\@oddfoot\@empty\let\@evenfoot\@empty
+    \def\@evenhead{\@CLdrawing\thepage\hfil{\slshape\leftmark}}%
+    \def\@oddhead{\@CLdrawing{\slshape\rightmark}\hfil\thepage}%
+    \let\@mkboth\@gobbletwo
+    \let\chaptermark\@gobble
+    \let\sectionmark\@gobble
+    }
+
+}}%
 \newlength\abc at width
-\settowidth\abc at width{abcdefghijklmnopqrstuvwxyz}%
-\edef\CLcharcount{\fpeval{round(\textwidth * 26 / \abc at width,0)}}
 \newcommand*\currentfontletters{%
+\settowidth\abc at width{abcdefghijklmnopqrstuvwxyz}\dimen0=26\p@
+\dimen0=\dimexpr \textwidth * \dimen0 / \abc at width \relax
+\count254=\numexpr \dimen0 / \p@ \relax
 \par The number of characters in one text line with the current font is
-    \CLcharcount.\par}
+    \the\count254.\par}
+
 \newcommand*\charactersperpage{%
-\edef\CLlinesperpage{\fpeval{round(\textheight / \baselineskip,0)}}
-\edef\CLcharsperpage{%
-  \fpeval{\CLcharcount * \CLlinesperpage}}
-\begin{quote} The average number of characters in one text line
-    with the current font is \CLcharcount;
-    this text block contains \CLlinesperpage\ lines;
+\settowidth\abc at width{abcdefghijklmnopqrstuvwxyz}\dimen0=26\p@
+\dimen0=\dimexpr \textwidth * \dimen0 / \abc at width \relax
+\count254=\numexpr \dimen0 / \p@ \relax
+\count252=\numexpr \textheight / \baselineskip \relax
+\count250=\numexpr \count252 * \count254\relax
+\quote The number of characters in one text line with the current
+    font is \the\count254;\\
+    this text block contains \the\count252\ lines;\\
     a rough estimate of the number of characters per page is
-    \CLcharsperpage.\par
-    This information may be useful to evaluate the total number
-    of pages in a document.
-\end{quote}}
+    \the\count250.\par
+    This might be used to estimate the total number of pages of
+    a document.
+\endquote}
 
-
+%% Copyright 2010 Claudio Beccari
+%% 
 %% Distributable under the LaTeX Project Public License,
 %% version 1.3c or higher (your choice). The latest version of
 %% this license is at: http://www.latex-project.org/lppl.txt
 %% 
-%% This work consists of this file canoniclayout.dtx, a README.txt file
+%% This work is "author-maintained"
+%% 
+%% This work consists of this file canoniclayout.dtx, a README file
 %% and the derived files canoniclayout.sty and canoniclayout.pdf.
 %% 
-%% This work is "maintained"
-%% 
 %%
 %% End of file `canoniclayout.sty'.



More information about the tex-live-commits mailing list.