summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Master/texmf-dist/doc/latex/curve2e/README.txt2
-rw-r--r--Master/texmf-dist/doc/latex/curve2e/curve2e.pdfbin513014 -> 670168 bytes
-rw-r--r--Master/texmf-dist/source/latex/curve2e/curve2e.dtx319
-rw-r--r--Master/texmf-dist/tex/latex/curve2e/curve2e.sty34
4 files changed, 240 insertions, 115 deletions
diff --git a/Master/texmf-dist/doc/latex/curve2e/README.txt b/Master/texmf-dist/doc/latex/curve2e/README.txt
index 63631d80e63..d7d991872d5 100644
--- a/Master/texmf-dist/doc/latex/curve2e/README.txt
+++ b/Master/texmf-dist/doc/latex/curve2e/README.txt
@@ -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]
diff --git a/Master/texmf-dist/doc/latex/curve2e/curve2e.pdf b/Master/texmf-dist/doc/latex/curve2e/curve2e.pdf
index 519ee316798..59094e6a2da 100644
--- a/Master/texmf-dist/doc/latex/curve2e/curve2e.pdf
+++ b/Master/texmf-dist/doc/latex/curve2e/curve2e.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/curve2e/curve2e.dtx b/Master/texmf-dist/source/latex/curve2e/curve2e.dtx
index 902cd4e1a6c..015b659d79c 100644
--- a/Master/texmf-dist/source/latex/curve2e/curve2e.dtx
+++ b/Master/texmf-dist/source/latex/curve2e/curve2e.dtx
@@ -47,7 +47,7 @@ README.txt and manifest.txt.
%<+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 @@ README.txt and manifest.txt.
\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 @@ README.txt and manifest.txt.
\linespread{#1}\fontsize{#2}{#2}\selectfont}
-\begin{document}%\OnlyDescription
+\begin{document}
\maketitle
\columnseprule=0.4pt
\begin{multicols}{2}
@@ -104,7 +104,7 @@ README.txt and manifest.txt.
%</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 @@ README.txt and manifest.txt.
% |\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 @@ README.txt and manifest.txt.
% 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 @@ README.txt and manifest.txt.
% 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 @@ README.txt and manifest.txt.
%\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 @@ README.txt and manifest.txt.
% 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 @@ README.txt and manifest.txt.
% 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 @@ README.txt and manifest.txt.
\@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 @@ README.txt and manifest.txt.
% 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 @@ README.txt and manifest.txt.
% 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 @@ README.txt and manifest.txt.
%
% 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 @@ README.txt and manifest.txt.
\AtBeginDocument{\@ifpackageloaded{eso-pic}{%
\renewcommand\LenToUnit[1]{\strip@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 @@ README.txt and manifest.txt.
% \end{macrocode}
% The macro that detects the form of the coordinates is |\isnot@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@polar#1:#2!!{\def\@tempOne{#2}\ifx\@tempOne\empty
\expandafter\@firstoftwo\else
@@ -1731,20 +1792,70 @@ README.txt and manifest.txt.
\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@multiput\@multiput
-
-\long\def\@multiput(#1)#2#3{\bgroup\GetCoord(#1)\@mptX\@mptY
-\edef\x{\noexpand\egroup\noexpand\original@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@ne
+ }%
+ }}
+ }%
+}
% \end{macrocode}
%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \subsection{Vectors}
@@ -1895,7 +2006,7 @@ README.txt and manifest.txt.
% 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 @@ README.txt and manifest.txt.
\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 @@ README.txt and manifest.txt.
% 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 @@ README.txt and manifest.txt.
% \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 @@ README.txt and manifest.txt.
% 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 @@ README.txt and manifest.txt.
% \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 @@ README.txt and manifest.txt.
\def\strip@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 @@ README.txt and manifest.txt.
% 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 @@ README.txt and manifest.txt.
% 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 @@ README.txt and manifest.txt.
% 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
diff --git a/Master/texmf-dist/tex/latex/curve2e/curve2e.sty b/Master/texmf-dist/tex/latex/curve2e/curve2e.sty
index 3edfbecf539..052cc398b0f 100644
--- a/Master/texmf-dist/tex/latex/curve2e/curve2e.sty
+++ b/Master/texmf-dist/tex/latex/curve2e/curve2e.sty
@@ -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@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@multiput\@multiput
-
-\long\def\@multiput(#1)#2#3{\bgroup\GetCoord(#1)\@mptX\@mptY
-\edef\x{\noexpand\egroup\noexpand\original@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@ne
+ }%
+ }}
+ }%
+}
\def\vector(#1)#2{%
\begingroup
\GetCoord(#1)\d@mX\d@mY