texlive[52448] Master/texmf-dist: curve2e (19oct19)

commits+karl at tug.org commits+karl at tug.org
Sat Oct 19 23:17:36 CEST 2019


Revision: 52448
          http://tug.org/svn/texlive?view=revision&revision=52448
Author:   karl
Date:     2019-10-19 23:17:35 +0200 (Sat, 19 Oct 2019)
Log Message:
-----------
curve2e (19oct19)

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

Modified: trunk/Master/texmf-dist/doc/latex/curve2e/README.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/curve2e/README.txt	2019-10-19 21:17:18 UTC (rev 52447)
+++ trunk/Master/texmf-dist/doc/latex/curve2e/README.txt	2019-10-19 21:17:35 UTC (rev 52448)
@@ -10,7 +10,7 @@
 %%   License information appended
 %% 
 File README.txt for package curve2e
-        [2019-03-29 v.2.0.1 Extension package for pict2e]
+        [2019-10-17 v.2.0.3 Extension package for pict2e]
 
 
 

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

Modified: trunk/Master/texmf-dist/source/latex/curve2e/curve2e.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/curve2e/curve2e.dtx	2019-10-19 21:17:18 UTC (rev 52447)
+++ trunk/Master/texmf-dist/source/latex/curve2e/curve2e.dtx	2019-10-19 21:17:35 UTC (rev 52448)
@@ -47,7 +47,7 @@
 %<+package>\ProvidesPackage{curve2e}%
 %<+readme>File README.txt for package curve2e
 %<*package|readme>
-        [2019-03-29 v.2.0.1 Extension package for pict2e]
+        [2019-10-17 v.2.0.3 Extension package for pict2e]
 %</package|readme>
 %<*driver>
 \documentclass{ltxdoc}\errorcontextlines=9
@@ -56,7 +56,7 @@
 \usepackage{lmodern,textcomp}
 \usepackage{mflogo}
 \usepackage{multicol,amsmath,fancyvrb,trace}
-\usepackage{curve2e}
+\usepackage{xcolor,curve2e}
 \GetFileInfo{curve2e.dtx}
 \title{The extension package \textsf{curve2e}}
 \author{Claudio Beccari\thanks{E-mail: \texttt{claudio dot beccari at gmai dot com}}}
@@ -93,7 +93,7 @@
 \linespread{#1}\fontsize{#2}{#2}\selectfont}
 
 
-\begin{document}%\OnlyDescription
+\begin{document}
 \maketitle
 \columnseprule=0.4pt
 \begin{multicols}{2}
@@ -104,7 +104,7 @@
 %</driver>
 % \fi
 %
-% \CheckSum{5560}
+% \CheckSum{5571}
 % \begin{abstract}
 % This file documents the |curve2e| extension package to  the |pict2e|
 % bundle implementation that has been described by Lamport
@@ -321,9 +321,9 @@
 % |\curveto|, |\closepath|, |\fillpath|, and |\strokepath|; of course these
 % macros can be used by the end user, and sometimes they perform better
 % than the macros defined in this package, because the user has a better
-% control on the position of the Bézier control points, while here the
-% control points are sort of rigid. It would be very useful to resort to
-% the |hobby| package, but its macros are conforming with those of the
+% control on the position of the Bézier splines  control points, while here
+% the control points are sort of rigid. It would be very useful to resort
+% to the |hobby| package, but its macros are conforming with those of the
 % |tikz| and |pgf| packages, not with |curve2e|; an interface should be
 % created in order to deal with the |hobby| package, but this has not been
 % done yet.
@@ -367,13 +367,13 @@
 % This package \texttt{curve2e} extends the power of \texttt{pict2e} with
 % the following modifications and the following new commands.
 % \begin{enumerate}
-% \item This package |curve2e| calls directly the \LaTeX\ packages |color|
-% and |pict2e| to which it passes any possible option that the latter can
-% receive; actually the only options that make sense are those concerning
-% the arrow tips, either \LaTeX\ or PostScript styled, because it is
-% assumed that if you use this package you are not interested in using the
-% original \LaTeX\ commands. See the |pict2e| documentation in order to see
-% the correct options |pict2e| can receive.
+% \item This package |curve2e| calls directly the \LaTeX\ packages
+% |color| and |pict2e| to which it passes any possible option that the
+% latter can receive; actually the only options that make sense are
+% those concerning the arrow tips, either \LaTeX\ or PostScript styled,
+% because it is assumed that if you use this package you are not
+% interested in using the original \LaTeX\ commands. See the |pict2e|
+% documentation in order to see the correct options |pict2e| can receive.
 %^^A
 % \item The user is offered new commands in order to control the line
 % terminators and the line joins; specifically:
@@ -1184,8 +1184,9 @@
 % is emphasised because it actually is an approximation with four
 % quarter-circle cubic splines that, in spite of being drawn with third
 % degree parametric polynomials, approximate very well a real circle; on
-% the opposite the quadratic spline circle is clearly a poor approximation
-% even if the maximum radial error amounts just to about 6\% of the radius.
+% the opposite the quadratic spline circle is clearly a poor
+% approximation even if the maximum radial error amounts just to about
+% 6\% of the radius.
 %
 %\begin{figure}[p]
 %\begin{minipage}{\linewidth}
@@ -1238,7 +1239,9 @@
 %\end{picture}
 %\end{minipage}
 %
-%\caption{\rule{0pt}{4ex}Several graphs drawn with quadratic Bézier splines. On the right a quadratic spline circle is compared with a cubic line circle.}
+%\caption{\rule{0pt}{4ex}Several graphs drawn with quadratic Bézier
+% splines. On the right a quadratic spline circle is compared with a
+% cubic line circle.}
 %\label{fig:quadratic-arcs}
 %\end{figure}
 %
@@ -1248,7 +1251,61 @@
 % therefore it is not actually identical to the previous version,
 % although the latter one performed correctly for everything else except
 % for color-filled quadratic paths.
-% 
+% ^^A
+% \item The new version of |\mulpiput| is backwards compatibile with
+% the original version contained in the \LaTeX\ kernel. The new part
+% consists into the handling of the coordinate increments from one
+% position to the next for the \meta{object} to include in the drawing.
+% On page~\pageref{pag:multiput} we show the code for the figure shown
+% there. The red grid is nothing new, except that id demonstrate the the
+% traditional |\multiput| used in tis code, shown in a previous example,
+% produces exactly the same result. But the for “graphs” on the grid,
+% display an alignment of black dots along the diagonal of the grid
+% (again traditional |\multiput| rendered with the new version);
+% a number of blue dots along a parabola; another number of magenta
+% dots alined along a half sine wave; a number of little green squares
+% aligned along a $-15~\circ$ line starting from the center of the grid.
+%
+%\noindent
+%\begin{minipage}{0.45\linewidth}
+%\begin{Verbatim}[fontsize=\setfontsize{8.25}]
+%\unitlength=0.01\linewidth
+%\begin{picture}(100,100)
+%\put(0,0){\GraphGrid(100,100)}
+%\multiput(0,0)(10,10){11}{\circle*{2}}
+%\color{blue!70!white}
+%\multiput(0,0)(10,0){11}{%
+%  \circle*{2}}%
+%  [\edef\X{\fpeval{\X+10}}%
+%  \edef\Y{\fpeval{((\X/10)**2)}}]
+%\color{magenta}
+%\multiput(0,0)(10,1){11}{%
+%\circle*{2}}%
+%  [\edef\X{\fpeval{\X+10}}%
+%  \edef\Y{\fpeval{sind(\X*1.8)*100}}]
+%\color{green!60!black}
+%\multiput(50,50)(-15:5){11}}{%
+%\polygon*(-1,-1)(1,-1)(1,1)(-1,1)}
+%\end{picture}
+%\end{Verbatim}
+%\end{minipage}
+%\hfill
+%\begin{minipage}{0.45\linewidth}
+%\unitlength=0.01\linewidth
+%\begin{picture}(100,100)
+%\put(0,0){\GraphGrid(100,100)}
+%\multiput(0,0)(10,10){11}{\circle*{2}}
+%\color{blue!70!white}
+%\multiput(0,0)(10,0){11}{\circle*{2}}%
+%[\edef\X{\fpeval{\X+10}}\edef\Y{\fpeval{((\X/10)**2)}}]
+%\color{magenta}
+%\multiput(0,0)(10,1){11}{\circle*{2}}%
+%[\edef\X{\fpeval{\X+10}}\edef\Y{\fpeval{sind(\X*1.8)*100}}]
+%\color{green!60!black}
+%\multiput(50,50)(-15:5){11}{\polygon*(-1,-1)(1,-1)(1,1)(-1,1)}
+%\end{picture}\label{pag:multiput}
+%\end{minipage}
+%
 % \end{enumerate}
 %
 %
@@ -1260,8 +1317,8 @@
 % was first released in 1994; in the |latexnews| news-letter of December
 % 2003; the first implementation was announced; the first version of this
 % package was issued in 2006. It was time to have a  better drawing
-% environment; this package is a simple attempt to follow the initial path
-% while extending the drawing facilities; but Till Tantau's |pgf|
+% environment; this package is a simple attempt to follow the initial
+% path while extending the drawing facilities; but Till Tantau's |pgf|
 % package has gone much farther.
 %
 %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1434,7 +1491,8 @@
 \@wholewidth#1\@halfwidth.5\@wholewidth\ignorespaces}%
 \newcommand\defaultlinethickness[1]{\defaultlinewidth=#1\relax
 \def\thicklines{\linethickness{\defaultlinewidth}}%
-\def\thinlines{\linethickness{.5\defaultlinewidth}}\thinlines \ignorespaces}%
+\def\thinlines{\linethickness{.5\defaultlinewidth}}\thinlines
+   \ignorespaces}%
 %    \end{macrocode}
 % The |\ignorespaces| at the end of these macros is for avoiding spurious
 % spaces to get into the picture that is being drawn, because
@@ -1562,8 +1620,9 @@
 % always referred to the origin of the coordinate axes; the end point $P_2$
 % coordinates with the first macro type are referred to the origin of the
 % axes, while with the second macro type they are referred to $P_1$; both
-% macro types have their usefulness and figures~\ref{fig:dashedlines}
-% and~\ref{fig:dottedlines} show how to use these macros.
+% macro types have their usefulness and figures~\ref{fig:dashedlines} on
+% page~\pageref{fig:dashedlines} and~\ref{fig:dottedlines} on
+% page~\pageref{fig:dottedlines} show how to use these macros.
 %
 % We distinguish these macros with an asterisk; the unstarred version is
 % the first macro type, while the starred one refers to the second macro
@@ -1580,31 +1639,31 @@
 % above distance by this number.
 %
 % Another vector $P_2-P_1$ is created by dividing it by this number;
-% then, when dashes are involved, it is multiplied by two in order to have
-% the increment from one dash to the next; finally the number of patterns
-% is obtained by integer division of this number by 2 and increasing it
-% by~1.
+% then, when dashes are involved, it is multiplied by two in order to
+% have the increment from one dash to the next; finally the number of
+% patterns is obtained by integer division of this number by 2 and
+% increasing it by~1.
 % A simple |\multiput| completes the job, but in order to use the various
 % vectors and numbers within a group and to throw the result outside the
 % group while restoring all the intermediate counters and registers, a
 % service macro is created with an expanded definition and then this
 % service macro is executed.
-% Figure~\ref{fig:dashedlines} shows the effect of the slight changing
-% of the dash length in order to maintain approximately the same dash-space
-% pattern along the line, irrespective of the line length.
-% The syntac is the following:
+% Figure~\ref{fig:dashedlines} on page~\pageref{fig:dashedlines} shows
+% the effect of the slight changing of the dash length in order to
+% maintain approximately the same dash-space pattern along the line,
+% irrespective of the line length. The syntax is the following:
 % \begin{flushleft}
 % \cs{Dashline}\meta{\texttt{*}}\parg{first point}\parg{second point}\marg{dash length}
 % \end{flushleft}
 % where \meta{first point} contains the coordinates of the starting point
 % and \meta{second point} those of the ending point; of course the
-% \meta{dash length}, which equals the dash gap, is mandatory. The asterisk
-% plays a specific role; in facts, if coordinates are specified in polar
-% form, without the optional asterisk the dashed line is misplaced, while
-% if the asterisk is specified, the whole object is pout in the proper
-% position. On the opposite, if the coordinates are in cartesian form the
-% \meta{first point} coordinates play the role they are supposed to do even
-% without the asterisk.
+% \meta{dash length}, which equals the dash gap, is mandatory. The
+% asterisk plays a specific role; in facts, if coordinates are specified
+% in polar form, without the optional asterisk the dashed line is
+% misplaced, while if the asterisk is specified, the whole object is put
+% in the proper position. On the opposite, if the coordinates are in
+% cartesian form the \meta{first point} coordinates play the role they
+% are supposed to do even without the asterisk.
 %    \begin{macrocode}
 \ifx\Dashline\undefined
   \def\Dashline{\@ifstar{\Dashline@@}{\Dashline@}}
@@ -1670,11 +1729,13 @@
 %
 % Notice that vectors as complex numbers in their cartesian and polar forms
 % always represent a point position referred to the origin of the axes;
-% this is why in figures~\ref{fig:dashedlines} and~\ref{fig:dottedlines}
-% the dashed and dotted line that depart from the lower right corner of
-% the graph grid, and that use polar coordinates, have to be put at the
-% proper position with the starred version of the commands that take care
-% of the relative specification made with the polar coordinates.
+% this is why in figures~\ref{fig:dashedlines} on
+% page~\pageref {fig:dashedlines} and~\ref{fig:dottedlines} on
+% page~\pageref{fig:dottedlines} the dashed and dotted line that depart
+% from the lower right corner of the graph grid, and that use polar
+% coordinates, have to be put at the proper position with the starred
+% version of the commands that take care of the relative specification
+% made with the polar coordinates.
 %
 %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % \subsection{Coordinate handling}
@@ -1699,11 +1760,11 @@
 \AtBeginDocument{\@ifpackageloaded{eso-pic}{%
 \renewcommand\LenToUnit[1]{\strip at pt\dimexpr#1*\p@/\unitlength}}{}}%
 %    \end{macrocode}
-% The above redefinition is delayed at |\AtBeginDocument| in order to have
-% the possibility to check the the |eso-pic| package had actually been
-% loaded. Nevertheless the code is defined here just because the origina
-%l |eso-pic| macro was interfering with the algorithms of coordinate
-% handling.
+% The above redefinition is delayed at |\AtBeginDocument| in order to
+% have the possibility to check the the |eso-pic| package had actually
+% been loaded. Nevertheless the code is defined here just because the
+% original |eso-pic| macro was interfering with the algorithms of
+% coordinate handling.
 %
 % But let us come to the real subject of this section. We define a
 % |\GettCoord| macro that passes control to the service macro with the
@@ -1718,9 +1779,9 @@
 %    \end{macrocode}
 % The macro that detects the form of the coordinates is |\isnot at polar|;
 % it examines the parameter syntax in order to see if it contains a
-% colon; if it does, the coordinates are in polar form, otherwise they are
-% in cartesian form. this macro uses delimited arguments, therefore low
-% level definition syntax must be used.
+% colon; if it does, the coordinates are in polar form, otherwise they
+% are in cartesian form. this macro uses delimited arguments, therefore
+% low level definition syntax must be used.
 %    \begin{macrocode}
 \def\isnot at polar#1:#2!!{\def\@tempOne{#2}\ifx\@tempOne\empty
 \expandafter\@firstoftwo\else
@@ -1731,21 +1792,71 @@
 \def\SplitPolar@@(#1:#2)#3#4{\DirFromAngle#1to\@DirA
 \ScaleVect\@DirA by#2to\@DirA
 \expandafter\SplitNod@@\expandafter(\@DirA)#3#4}
-
+%    \end{macrocoe}
+% In order to accept polar coordinates with |\put| and |\multiput| 
+% we  resort to using  |\GetCoord|; therefore the redefinition of
+% |\put| is very simple because it suffices to save the original
+% meaning of that macro and redefine the new one in terms of the
+% old one. 
+%    \begin{macrocode}
 \let\originalput\put
 \def\put(#1){\bgroup\GetCoord(#1)\@tX\@tY
 \edef\x{\noexpand\egroup\noexpand\originalput(\@tX,\@tY)}\x}
-
-\let\originalmultiput\multiput
-\let\original at multiput\@multiput
-
-\long\def\@multiput(#1)#2#3{\bgroup\GetCoord(#1)\@mptX\@mptY
-\edef\x{\noexpand\egroup\noexpand\original at multiput(\@mptX,\@mptY)}%
-\x{#2}{#3}\ignorespaces}
-
-\gdef\multiput(#1)#2{\bgroup\GetCoord(#1)\@mptX\@mptY
-\edef\x{\noexpand\egroup\noexpand\originalmultiput(\@mptX,\@mptY)}\x(}%)
 %    \end{macrocode}
+% For |\multiput| it is mor complicated, because the increments from one
+% position to the next cannot be done efficiently because the increments
+% in the original definition are executed within boxes, therefore any 
+% macro instruction inside these boxes is lost. It is a good occasion to
+% modify the |\multiput|  definition by means of the advanced macro
+% definitions provided by package |xparse|; we can add also some error
+% messages for avoiding doing anything when son mandatory parameters are
+% missing ore are empty, or do not contain anything different from an
+% ordered pair or a polar form. We ad also an optional argument to
+% handle the increments outside the boxes.
+% The new macro has the following syntax:\\[2ex]
+% \mbox{\cs{multiput}\texttt{(\meta{initial})}\texttt{(\meta{increment})}\marg{number}\marg{objext}\oarg{handler}}\\[2ex]
+% where \meta{initial} contains the cartesian or polar coordinates
+% of the initial point; \meta{increment} contains the cartesian or
+% polar increment for the coordinates to be used from the second
+% argument to the last; \meta{number} il the total number of points
+% to be drawn; \meta{object} is the object to be put in position at
+% each cycle repetition; the optional \meta{handler} may be used to
+% control the current values of the horizontal and vertical increments.
+% The new definition contains two |\put| commands where the second is
+% nested within a while loop which in turn is within the argument of
+% the first |\put| command. Basically it is the same idea that the
+% original macros, but now the increment are computed within the While
+% loop, bit outside the argument of the inner |\put| command. If the
+% optional \meta{handler} is specified the increments are computed
+% from the macros specified by the user. 
+%
+% The two increments components inside the optional argument may be set
+% by means of mathematical expressions operated upon by the |\fpeval|
+% function given by the |\xfp| package already loaded by |curve2e|. Of
+% course it the user responsibility to pay attention to the scales of
+% the two axes and to write meaningful expressions; the figure and code
+% shown in the first part of this documentation show some examples:
+% see page~\pageref{pag:multiput}.
+%    \begin{macrocode}
+\RenewDocumentCommand{\multiput}{ d() d() m m o }{%
+\IfNoValueTF{#1}{\PackageError{curve2e}{%
+  \string\multiput\space initial point coordinates missing}%
+  {Nothing done}}%
+  {\IfNoValueTF{#2}{\PackageError{curve2e}{%
+    \string\multiput\space Increment components missing}%
+    {Nothing done}%
+  }%
+  {\GetCoord(#2)\dX\dY
+    \put(#1){\def\X{0}\def\Y{0}\@multicnt=#3\relax
+      \@whilenum \@multicnt > \z@\do{%
+        \put(\X,\Y){#4}\IfValueTF{#5}{#5}{%
+          \edef\X{\fpeval{\X+\dX}}\edef\Y{\fpeval{\Y+\dY}}}%
+          \advance\@multicnt\m at ne
+       }%
+    }}
+  }%
+}
+%    \end{macrocode}
 %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % \subsection{Vectors}
 %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1895,7 +2006,7 @@
 % the macro draws only the arrow tip; this may work with macro |\vector|,
 % certainly not with |\Vector| and |\VECTOR|. This might be useful for
 % adding an arrow tip to a circular arc. See examples in
-% figure~\ref{fig:vectors}.
+% figure~\ref{fig:vectors} on page~\pageref{fig:vectors}.
 %
 %
 %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -2003,7 +2114,8 @@
       \ignorespaces}}
 %    \end{macrocode}
 % Now, for example, a filled polygon can be drawn using polar coordinates
-% for its vertices; see figure~\ref{fig:filled-polygon}
+% for its vertices; see figure~\ref{fig:filled-polygon} on
+% page~\pageref{fig:filled-polygon}.
 %
 % Remember; the polygon polar coordinates are relative to the origin of
 % the local axes; therefore in order to position a polygon in a different
@@ -2068,11 +2180,11 @@
 % words  the L3 library for floating point calculations accepts such
 % expressions as  \texttt{123.456}, \texttt{0.12345e3}, and
 % \texttt{12345e-3}, and any other equivalent expression. If the first
-% number is integer, it assumes that the decimal separator is to the right
-% of the rightmost digits of the digit string.
+% number is integer, it assumes that the decimal separator is to the
+% right of the rightmost digits of the digit string.
 %
-% Floating pint calculations may be done through the |\fpeval| L3 function
-% with a very simple syntax:
+% Floating pint calculations may be done through the |\fpeval| L3
+% function with a very simple syntax:
 %  \begin{flushleft}
 %  \cs{fpeval}\marg{mathematical expression}
 %  \end{flushleft}
@@ -2260,7 +2372,8 @@
 %    \end{macrocode}
 %
 % It is worth examining the following table, where the angles of nine
-% vectors $45^circ$ degrees from one another are computed from this macro.
+% vectors $45^\circ$ degrees apart from one another are computed from
+% this macro.
 % \begin{center}
 % \begin{tabular}{l*9r}
 % Vector &0,0 &1,0 &1,1 & 0,1 & -1,1& -1,0&-1,-1&0,-1&1,-1\\
@@ -2639,7 +2752,8 @@
 % control points lay on the perpendicular to the vectors that join the arc
 % center to the starting and end points respectively. 
 %
-% With reference to figure~\ref{fig:arcspline}, the points $P_1$ and $P_2$
+% With reference to figure~\ref{fig:arcspline} on
+% page~\pageref{fig:arcspline}, the points $P_1$ and $P_2$
 % are the arc end-points; $C_1$ and $C_2$ are the Bézier-spline
 % control-points; $P$ is the arc mid-point, that should be distant from
 % the center of the arc the same as $P_1$ and $P_2$.
@@ -3095,16 +3209,17 @@
 %    \end{macrocode}
 
 %
-% An example of use is shown in figure~\ref{fig:Cbezier}; notice that the
-% tangents at the end points are the same for the black curve drawn with
-% |\CurveBetween| and the five red curves drawn with |\CbezierBetween|; the
-% five red curves differ only for the distance of their control point $C_0$
-% from the starting  point; the differences are remarkable and the topmost
-% curve even presents a slight inflection close to the end point. These
-% effects cannot be obtained with the ``smarter'' macro |\CurveBetween|.
-% But certainly this simpler macro is more difficult to use because the
-% distances of the control points are difficult to estimate and require a
-% number of cut-and-try experiments.
+% An example of use is shown in figure~\ref{fig:Cbezier} on
+% page~\pageref{fig:Cbezier}; notice that the tangents at the end points
+% are the same for the black curve drawn with |\CurveBetween| and the five
+% red curves drawn with |\CbezierBetween|; the five red curves differ only
+% for the distance of their control point $C_0$ from the starting  point;
+% the differences are remarkable and the topmost curve even presents a
+% slight inflection close to the end point. These effects cannot be
+% obtained with the ``smarter'' macro |\CurveBetween|. But certainly this
+% simpler macro is more difficult to use because the distances of the
+% control points are difficult to estimate and require a number of
+% cut-and-try experiments.
 %
 %
 % The ``smarter'' curve macro comes next; it is supposed to determine the
@@ -3164,7 +3279,7 @@
 \def\strip at semicolon#1;{\def\@tempB{#1}}
 %    \end{macrocode}
 % By changing the tension values we can achieve different results: see
-% figure~\ref{fig:tensions}.
+% figure~\ref{fig:tensions} on page~\pageref{fig:tensions}.
 %
 % We use the formula we got for arcs~\eqref{equ:corda}, where the half
 % chord is indicated with $s$,  and we derive the necessary distances:
@@ -3328,19 +3443,19 @@
 % to use the general internal cubic Bézier splines in a more comfortable
 % way.
 %
-% As it can be seen in figure~\ref{fig:sinewave} the two diagrams should
-% approximately represent a sine wave. With Bézier curves, that resort on
-% polynomials, it is impossible to represent a transcendental function, but
-% it is  only possible to approximate it. It is evident that the
-% approximation obtained with full control on the control points requires
-% less arcs and it is more accurate than the approximation obtained with
-% the recursive |\Curve| macro; this macro requires almost two times as
-% many pieces of information in order to minimise the effects of the lack
-% of control on the control points, and even with this added information
-% the macro approaches the sine wave with less accuracy. At the same time
-% for many applications the |\Curve| recursive macro proves to be much
-% easier to use than with single arcs drawn with the |\CbezierBetween|
-% macro.
+% As it can be seen in figure~\ref{fig:sinewave} on
+% page~\pageref{fig:sinewave} the two diagrams should approximately
+% represent a sine wave. With Bézier curves, that resort on polynomials,
+% it is impossible to represent a transcendental function, but it is only
+% possible to approximate it. It is evident that the approximation obtained 
+% with full control on the control points requires less arcs and it is more
+% accurate than the approximation obtained with the recursive |\Curve|
+% macro; this macro requires almost two times as many pieces of information
+% in order to minimise the effects of the lack of control on the control
+% points, and even with this added information the macro approaches the
+% sine wave with less accuracy. At the same time for many applications the
+% |\Curve| recursive macro proves to be much easier to use than with single 
+% arcs drawn with the |\CbezierBetween| macro.
 %
 %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % \subsection{Quadratic splines}
@@ -3562,13 +3677,14 @@
 % specified position' \cs{Zbox} puts a symbol in math mode a little
 % displaced in the proper direction relative to a specified position.
 % They are just handy to label certain objects in a \texttt{picture}
-% diagram, but they are not part of the \texttt{curve2e} package.}.
-% created with the code shown within figure~\ref{fig:quadratic-arcs}.
+% diagram, but they are not part of the \texttt{curve2e} package.} on
+% page~\pageref{fig:quadratic-arcs} created with the code shown in the
+% same page.
 %
 % Notice also that the inflexed line is made with two arcs that meet at
 % the inflection point; the same is true for the line that resembles
 % a sine wave. The cusps of the inner border of the green area are
-% obtained with the usual optional argument already used also with the
+% obtained with the usual optional star already used also with the
 % |\Curve| recursive macro.
 %
 % The ``circle'' inside the square frame is visibly different from a real
@@ -3577,10 +3693,11 @@
 % obtained with a single parabola is definitely a poor approximation of a
 % real quarter circle; possibly by splitting each quarter circle in three
 % or four partial arcs the approximation of a real quarter circle would be
-% much better. On the right of figure~\ref{fig:quadratic-arcs} it is
-% possible to compare a “circle” obtained with quadratic arcs with the the
-% internal circle obtained with cubic arcs; the difference is easily seen
-% even without using measuring instruments.
+% much better. On the right of figure~\ref{fig:quadratic-arcs} on
+% page~\pageref{fig:quadratic-arcs} it is possible to compare a “circle”
+% obtained with quadratic arcs with the the internal circle obtained with
+% cubic arcs; the difference is easily seen even without using measuring
+% instruments.
 %
 % With quadratic arcs we decided to avoid defining specific macros similar
 % to |\CurveBetween| and |\CbezierBetween|; the first macro would not save

Modified: trunk/Master/texmf-dist/tex/latex/curve2e/curve2e.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/curve2e/curve2e.sty	2019-10-19 21:17:18 UTC (rev 52447)
+++ trunk/Master/texmf-dist/tex/latex/curve2e/curve2e.sty	2019-10-19 21:17:35 UTC (rev 52448)
@@ -11,7 +11,7 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}[2016/01/01]
 \ProvidesPackage{curve2e}%
-        [2019-03-29 v.2.0.1 Extension package for pict2e]
+        [2019-10-17 v.2.0.3 Extension package for pict2e]
 
 
 
@@ -48,7 +48,8 @@
 \@wholewidth#1\@halfwidth.5\@wholewidth\ignorespaces}%
 \newcommand\defaultlinethickness[1]{\defaultlinewidth=#1\relax
 \def\thicklines{\linethickness{\defaultlinewidth}}%
-\def\thinlines{\linethickness{.5\defaultlinewidth}}\thinlines \ignorespaces}%
+\def\thinlines{\linethickness{.5\defaultlinewidth}}\thinlines
+   \ignorespaces}%
 \def\LIne(#1){{\GetCoord(#1)\@tX\@tY
   \moveto(0,0)
   \pIIe at lineto{\@tX\unitlength}{\@tY\unitlength}\strokepath}\ignorespaces
@@ -129,20 +130,27 @@
 \def\SplitPolar@@(#1:#2)#3#4{\DirFromAngle#1to\@DirA
 \ScaleVect\@DirA by#2to\@DirA
 \expandafter\SplitNod@@\expandafter(\@DirA)#3#4}
-
 \let\originalput\put
 \def\put(#1){\bgroup\GetCoord(#1)\@tX\@tY
 \edef\x{\noexpand\egroup\noexpand\originalput(\@tX,\@tY)}\x}
-
-\let\originalmultiput\multiput
-\let\original at multiput\@multiput
-
-\long\def\@multiput(#1)#2#3{\bgroup\GetCoord(#1)\@mptX\@mptY
-\edef\x{\noexpand\egroup\noexpand\original at multiput(\@mptX,\@mptY)}%
-\x{#2}{#3}\ignorespaces}
-
-\gdef\multiput(#1)#2{\bgroup\GetCoord(#1)\@mptX\@mptY
-\edef\x{\noexpand\egroup\noexpand\originalmultiput(\@mptX,\@mptY)}\x(}%)
+\RenewDocumentCommand{\multiput}{ d() d() m m o }{%
+\IfNoValueTF{#1}{\PackageError{curve2e}{%
+  \string\multiput\space initial point coordinates missing}%
+  {Nothing done}}%
+  {\IfNoValueTF{#2}{\PackageError{curve2e}{%
+    \string\multiput\space Increment components missing}%
+    {Nothing done}%
+  }%
+  {\GetCoord(#2)\dX\dY
+    \put(#1){\def\X{0}\def\Y{0}\@multicnt=#3\relax
+      \@whilenum \@multicnt > \z@\do{%
+        \put(\X,\Y){#4}\IfValueTF{#5}{#5}{%
+          \edef\X{\fpeval{\X+\dX}}\edef\Y{\fpeval{\Y+\dY}}}%
+          \advance\@multicnt\m at ne
+       }%
+    }}
+  }%
+}
   \def\vector(#1)#2{%
     \begingroup
       \GetCoord(#1)\d at mX\d at mY



More information about the tex-live-commits mailing list