diff options
author | Karl Berry <karl@freefriends.org> | 2020-02-28 22:28:56 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-02-28 22:28:56 +0000 |
commit | 0942c703448ff24cd9f07df9b9023b7d1369567e (patch) | |
tree | 01c8cbcde8ea5c10d71f035de3b90f9006992e35 /Master/texmf-dist/source/latex/curve2e | |
parent | 6ec2f6e46845654e2cc02c1e4e9b9fc8b6cae860 (diff) |
curve2e (28feb20)
git-svn-id: svn://tug.org/texlive/trunk@53960 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/curve2e')
-rw-r--r-- | Master/texmf-dist/source/latex/curve2e/curve2e.dtx | 544 |
1 files changed, 287 insertions, 257 deletions
diff --git a/Master/texmf-dist/source/latex/curve2e/curve2e.dtx b/Master/texmf-dist/source/latex/curve2e/curve2e.dtx index 0b35ef2c19b..2c4d727bda7 100644 --- a/Master/texmf-dist/source/latex/curve2e/curve2e.dtx +++ b/Master/texmf-dist/source/latex/curve2e/curve2e.dtx @@ -46,7 +46,7 @@ README.txt and curve2e-v161.sty. %<+package>\ProvidesPackage{curve2e}% %<+readme>File README.txt for package curve2e %<*package|readme> - [2020-02-24 v.2.2.2 Extension package for pict2e] + [2020-02-28 v.2.2.3 Extension package for pict2e] %</package|readme> %<*driver> \documentclass{ltxdoc}\errorcontextlines=9 @@ -77,6 +77,8 @@ README.txt and curve2e-v161.sty. \renewcommand\parg[1]{\texttt{(\meta{#1})}} \providecommand\Parg{} \renewcommand\Parg[1]{\texttt{(#1)}} +\providecommand\eTeX{} +\renewcommand\eTeX{\lower0.5ex\hbox{$\varepsilon\!$}\TeX} \providecommand\Pbox{} \RenewDocumentCommand\Pbox{D(){0,0} O{cc} m O{0.5ex}}{% @@ -179,7 +181,7 @@ README.txt and curve2e-v161.sty. %</driver> % \fi % -% \CheckSum{5582} +% \CheckSum{5581} % \begin{abstract} % This file documents the |curve2e| extension package to the |pict2e| % bundle implementation; the latter was described by Lamport @@ -205,7 +207,7 @@ README.txt and curve2e-v161.sty. %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Package \texttt{pict2e} was announced in issue 15 of \texttt{latexnews} -% around December 2003; it was declared that the new package would +% around December 2003; it was specified that the new package would % replace the dummy one that has been accompanying every release of % \LaTeXe\ since its beginnings in 1994. The dummy package was just % issuing an info message that simply announced the temporary @@ -246,9 +248,9 @@ README.txt and curve2e-v161.sty. % \begin{enumerate} % \item Line and vector slopes are virtually unlimited; the only % remaining limitation is that the direction coefficients must be -% three-digit integer numbers; they need not be relatively prime; with -% the 2009 upgrade even this limitation was removed and now slope -% coefficients can be any fractional number whose magnitude does not +% three-digit integer numbers (but see below); they need not be relatively +% prime; with the 2009 upgrade even this limitation was removed and now +% slope coefficients can be any fractional number whose magnitude does not % exceed 16\,384, the maximum dimension in points that \TeX\ can handle. %^^A % \item Filled and unfilled circles can be of any size. @@ -290,7 +292,7 @@ README.txt and curve2e-v161.sty. % current origin of the axes is displaced — this is obvious and the % purpose of nesting |\put| commands is exactly that. But if a segment % is specified so that its ending point is at a specific distance and in -% specific direction form its starting point, polar coordinates appear to +% specific direction from its starting point, polar coordinates appear to % be the most convenient to use; in this case, though, the origin of the % axes become the stating point of the segment, therefore the segment % might be drawn in a strange way. Attention has been @@ -307,8 +309,8 @@ README.txt and curve2e-v161.sty. % roto-amplification operators. %^^A % \item Commands for setting the line terminations were introduced; the -% user can chose between square or rounded caps; the default is set to -% rounded caps; now this feature is directly available with |pict2e|. +% user can chose between square or round caps; the default is set to +% round caps; now this feature is directly available with |pict2e|. %^^A % \item Commands for specifying the way two lines or curves join to one % another. @@ -317,9 +319,10 @@ README.txt and curve2e-v161.sty. % (up to three digits) integer direction coefficients, but maintaining % the same syntax as in the original \texttt{picture} environment; now % |pict2e| removes the integer number limitations and allows fractional -% values, initially implemented by |curve2e|. +% values, initially implemented by |curve2e|, and then introduced directly +% in |pict2e|. % ^^A -% \item A new macro |\Line| was originally by |curve2e| defined so as to +% \item A new macro |\Line| was originally defined by |curve2e| so as to % avoid the need to specify the horizontal projection of inclined lines; % now this functionality is available directly with |pict2e|; but this % |curve2e| macro name now conflicts with |pict2e| 2009 version; @@ -336,7 +339,7 @@ README.txt and curve2e-v161.sty. % \item A new macro |\DashLine| (alias: |\Dline|) is defined in order to % draw dashed lines joining any two given points; the dash length and % gap (equal to one another) get specified through one of the macro -% arguments.The stating point mai be specified in cartesiano or polar +% arguments. The starting point may be specified in cartesian or polar % form; the end point in cartesian format specifies the desired end % point; while if the second point is in polar form it is meant % \emph{relative to the starting point}, not as an absolute end point. @@ -345,7 +348,7 @@ README.txt and curve2e-v161.sty. % \item A similar new macro |\Dotline| is defined in order to draw dotted % straight lines as a sequence of equally spaced dots, where the gap can % be specified by the user; such straight line may have any inclination, -% as well as the above dashed lines.Polar coordinates for the second +% as well as the above dashed lines. Polar coordinates for the second % point have the same relative meaning as specified for the |\Dashline| % macro. % ^^A @@ -360,13 +363,13 @@ README.txt and curve2e-v161.sty. % number of them (available now also in |pict2e|); here it is redefined % so as to allow an optional specification of the way segments for the % polyline are joined to one another. Vertices may be specified with -% polar coordinates and are always relative to the preceding point. +% polar coordinates. %^^A % \item The |pict2e| |polygon| macro to draw closed polylines (in % practice general polygons) has been redefined in such a way that it -% can accept the various vertices specified with (relative) polar -% coordinates. The |polygon*| macro produces a color filled polygon; the -% default color is black, but a different color may be specified with the +% can accept the various vertices specified with polar coordinates. +% The |polygon*| macro produces a color filled polygon; the default +% color is black, but a different color may be specified with the % usual |\color| command given within the same group where |\polygon*| is % enclosed. %^^A @@ -376,7 +379,7 @@ README.txt and curve2e-v161.sty. % similar functionality is now achieved with the |\arc| macro of % |pict2e|, which provides also the starred version |\arc*| that fills % up the interior of the generated circular arc with the current color. -% It must be noticed that the syntax is slightly different, so that it's +% It must be noticed that the syntax is slightly different, so that it is % reasonable that these commands, in spite of producing identical arcs, % might be more comfortable with this or that syntax. %^^A @@ -389,9 +392,9 @@ README.txt and curve2e-v161.sty. % node. The starred version fills up the interior of the curve with the % current color. %^^A -% \item the above |\Curve| macro is a recursive macro that can draw an +% \item The above |\Curve| macro is recursive and it can draw an % unlimited (reasonably limited) number of connected Bézier spline arcs -% with% continuous tangents except for cusps; these arcs require only the +% with continuous tangents except for cusps; these arcs require only the % specification of the tangent direction at the interpolation nodes. % It is possible to use a lower level macro |\CbezierTo| that does the % same but lets the user specify the control points of each arc; it is @@ -412,7 +415,7 @@ README.txt and curve2e-v161.sty. % |\lineto|, |\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 eack Bézier-spline +% user has a better control on the position of each Bézier-spline % 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 compatible with those of the |tikz| and |pgf| packages, not with @@ -426,7 +429,7 @@ README.txt and curve2e-v161.sty. % coordinates, directions (unit vectors, also known as `versors'), % rotations and the like. In the first versions of this package the % trigonometric functions were also defined in a way that the author -% believed to be more efficient than those defined by the \texttt{trig} +% believed to be more efficient than those defined by the |trig| % package; in any case the macro names were sufficiently different to % accommodate both definition sets in the same \LaTeX\ run. With the % progress of the \LaTeX\,3 language, the |xfp| has recently become @@ -434,8 +437,8 @@ README.txt and curve2e-v161.sty. % point decimal numbers; therefore the most common algebraic, irrational % and transcendental functions can be computed in the background with the % stable internal floating point facilities. We maintain some computation -% with complex number algebra, but use the |xfp| functionalities for -% other computations. +% with complex number algebra, but use the |xfp| functionalities to +% implement them and to make other calculations. % % Many aspects of this extension could be fine tuned for better % performance; many new commands could be defined in order to further @@ -466,8 +469,8 @@ README.txt and curve2e-v161.sty. % a better real long division so as to get correctly the quotient % fractional part and to avoid as much as possible any numeric overflow; % many Josef's ideas are incorporated in the macro that was implemented -% in the previous version of this package, although the macro used by -% Josef was slightly different. Both versions aim/aimed at a better +% in the previous versions of this package, although the macro used by +% Josef was slightly different. Both versions aim/aimed at a better % accuracy and at widening the operand ranges. In this version we % abandoned our long division macro, and substituted it with the % floating point division provided by the |xfp| package. @@ -480,7 +483,7 @@ README.txt and curve2e-v161.sty. % crucial modification in order to have \texttt{curve2e} work smoothly % also with XeTeX (XeLaTeX). Actually if |pict2e|, version 0.2x or later, % dated 2009/08/05 or later, is being used, such modification is not -% necessary any more, but it's true that it becomes imperative when older +% necessary any more, but it's true that it became imperative when older % versions were used. % % \StopEventually{% @@ -547,7 +550,7 @@ README.txt and curve2e-v161.sty. % in our preamble, we add, if not already defined by the package, the two % new commands that allow to make floating point tests, and to implement % a “while” cycle\footnote{Thanks to Brian Dunn who spotted a bug in -% the previous version definitions.} +% the previous 2.0.x version definitions.} % \begin{macrocode} % \ExplSyntaxOn @@ -599,7 +602,10 @@ README.txt and curve2e-v161.sty. % hide the space after the closed brace when you enter something such as % |\linethickness{1mm}| followed by a space or a new % line.\footnote{Thanks to Daniele -% Degiorgi \texttt{degiorgi@inf.ethz.ch}).} +% Degiorgi \texttt{degiorgi@inf.ethz.ch}). +% This feature should have been eliminated +% from the \LaTeXe\ <2020.0202> patch level 4 +% update.} % \begin{macrocode} \gdef\linethickness#1{% \@wholewidth#1\@halfwidth.5\@wholewidth\ignorespaces}% @@ -611,7 +617,7 @@ README.txt and curve2e-v161.sty. % The |\ignorespaces| at the end of these macros is for avoiding spurious % spaces to get into the picture that is being drawn, because % these spaces introduce picture deformities often difficult to spot and -% eliminate. +% to eliminate. % %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \subsection{Improved line and vector macros} @@ -648,9 +654,9 @@ README.txt and curve2e-v161.sty. % Notice that since |\polyline| accepts also the vertex coordinates in % polar form, also|\segment| accepts the polar form. Please remember that % the decimal separator is the decimal \emph{point}, while the -% \emph{comma} acts as coordinate separator. This recommendation is -% particularly important for non-English speaking users, since in all -% other languages the comma is or must be used as the decimal separator. +% \emph{comma} acts as cartesian coordinate separator. This recommendation +% is particularly important for non-English speaking users, since in all +% other languages the decimal separator is or must by a comma. % % The |\line| macro is redefined by making use of a division routine % performed in floating point arithmetics; for this reason the \LaTeX\ @@ -661,8 +667,8 @@ README.txt and curve2e-v161.sty. % Notice that this command |\line| should follow the same syntax as the % original pre~1994 \LaTeX\ version; but the new definition accepts the % direction coefficients in polar mode; that is, instead of specifying a -% slope of $30^\circ$ with the actual sine and cosine (or values -% proportional to such functions), for example |(0.5,0.866025)|, you may +% slope of $30^\circ$ with its actual sine and cosine values (or values +% proportional to such functions), for example, |(0.5,0.866025)|, you may % specify it as |(30:1)|, i.e. as a unit vector with the required slope % of $30^\circ$. % @@ -772,12 +778,12 @@ README.txt and curve2e-v161.sty. % patterns is obtained by integer division of this number by 2 and % increasing it by~1. Since the whole dashed or dotted line is put in % position by an internal |\put| command, is is not necessary to enclose -% the definitions within groups, because they remain interna to the +% the definitions within groups, because they remain internal to the % |\put| argument box. % -% Figure~\ref{fig:dashedlines} on page~\pageref{fig:dashedlines} shows +% Figure~6 of the |curve2e-manual.pdf| user manual shows % the effect of the slight changing of the dash length in order to -% maintain approximately the same dash-space pattern along the line, +% maintain \emph{approximately} the same dash-space pattern along the line, % irrespective of the line length. The syntax is the following: % \begin{flushleft} % \cs{Dashline}\parg{first point}\parg{second point}\marg{dash length} @@ -785,9 +791,8 @@ README.txt and curve2e-v161.sty. % where \meta{first point} contains the coordinates of the starting point % and \meta{second point} the absolute (cartesian) or relative (polar) % coordinates of the ending point; of course the \meta{dash length}, -% which equals the dash gap, is mandatory. An optional asterisk used to -% play a specific role with previous implementations; -% it is maintained for backwards compatibility, but its use is now +% which equals the dash gap, is mandatory. An optional asterisk is used to +% be back compatible with previous implementations but its use is now % superfluous; with the previous implementation of the code, in facts, % if coordinates were specified in polar form, without the optional % asterisk the dashed line was misplaced, while if the asterisk was @@ -837,7 +842,7 @@ README.txt and curve2e-v161.sty. \fi % \end{macrocode} % -% A simpler |\Dotline| macro can draw a dotted line between two given +% A simpler |\Dotline| macro draws a dotted line between two given % points; the dots are rather small, therefore the inter dot distance is % computed in such a way as to have the first and the last dot at the % exact position of the dotted-line end-points; again the specified dot @@ -845,13 +850,13 @@ README.txt and curve2e-v161.sty. % that the first and last dots coincide with the line end points. % Again if the second point coordinates are in polar form they are % considered as relative to the first point.Since the dots must emerge -% from the background of the drawing they should not be too small; they -% must be seen; therefore their diameter cannot be tied to the unit +% from the background of the drawing they should not be too small: they +% must be seen; therefore their diameter cannot be tied to the unit % length of the particular drawing, but must have at visible size; by % default it is set to $0.5\,\mathrm{mm}$ (about 20 mills, in US units) % but through an optional argument to the macro, it may be set to any % desired size; remember that 1\,pt is about one third of a millimeter; -% sometimes it might be too small; 1\,mm is a vary black dot, therefore +% sometimes it might be too small; 1\,mm is a very black dot, therefore % the user must pay attention when s/he specifies the dot diameter, % so as not to exaggerate in either direction. % The syntax is as follows: @@ -876,11 +881,10 @@ README.txt and curve2e-v161.sty. % % Notice that vectors as complex numbers in their cartesian and polar % forms always represent a point position referred to a local origin -% of the axes; 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 lines that start +% of the axes; this is why in figures~6 and~7 of the user manual +% the dashed and dotted lines that start % from the lower right corner of the graph grid, and that use polar -% coordinates, are correctly put in their correct position thanks to the +% coordinates, are put in their correct position thanks to the % different behaviour obtained with the |\IsPolar| macro. % %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -895,7 +899,7 @@ README.txt and curve2e-v161.sty. % |\SplitNod@| and its subsidiaries. % % Notice that package |eso-pic| uses |picture| macros in its definitions, -% but its original macro |\LenToUnit| is incompatible with this +% but its original macro |\LenToUnit| is incompatible with this % |\GetCoord| macro; its function is to translate real lengths into % coefficients to be used as multipliers of the current |\unitlength|; in % case that the |eso-pic| had been loaded, at the |\begin{document}| @@ -907,7 +911,7 @@ README.txt and curve2e-v161.sty. \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 +% have the possibility to check if 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. @@ -917,7 +921,7 @@ README.txt and curve2e-v161.sty. % expanded arguments; expanding arguments allows to use macros to named % points, instead of explicit coordinates; with this version of |curve2e| % this facility is not fully exploited, but a creative user can use this -% feature. Notice the usual trick to pass through a dummy macro that is +% feature. Notice the usual trick to use a dummy macro that is % defined within a group with expanded arguments, but where the group is % closed by the macro itself, so that no traces remain behind after its % expansion. @@ -961,8 +965,8 @@ README.txt and curve2e-v161.sty. % ordered pair or a polar form. We add also an optional argument to % handle the increments outside the boxes. % The new macro has the following syntax:\\[2ex] -% \mbox{\cs{multiput}\oarg{displacement}\parg{initial}\texttt{(\meta{increment})}\marg{number}\marg{object}\oarg{handler}}\\[2ex] -% where the optional \meta{displacement} is used to displace to whole +% \mbox{\small\cs{multiput}\oarg{shift}\parg{initial}\texttt{(\meta{increment})}\marg{number}\marg{object}\oarg{handler}}\\[2ex] +% where the optional \meta{shift} is used to displace to whole % set of \meta{object}s from their original position; % \meta{initial} contains the cartesian or polar coordinates % of the initial point; \meta{increment} contains the cartesian or @@ -973,7 +977,7 @@ README.txt and curve2e-v161.sty. % 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 +% 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 increments are computed within the while % loop, but outside the argument of the inner |\put| command. If the @@ -985,7 +989,7 @@ README.txt and curve2e-v161.sty. % function given by the |\xfp| package already loaded by |curve2e|. Of % course it is 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: +% shown in the user manual of this package display some examples: % see the documentation |curve2e-manual.pdf| file. % \begin{macrocode} \RenewDocumentCommand{\multiput}{O{0,0} d() d() m m o }{% @@ -1012,13 +1016,13 @@ README.txt and curve2e-v161.sty. } % \end{macrocode} % And here it is the new |\xmultiput| command; remember: the internal -% cycling \TeX\ counter |\@multicn| is now accessible as it was a -% \LaTeX\ counter, in particular the user can access its contents -% with a command such as |\value{multicnt}|. Such counter is stepped -% up by one at each cycle, instead of being stepped down as in the -% original |\multiput| command. The code is not so different from -% the one used for the new version of |\multiput|, but it appears more -% efficient and its code logically more readable. +% cycling \TeX\ counter |\@multicnt| is now accessible with the name +% |multicnt| as if it was a \LaTeX\ counter, in particular the user can +% access its contents with a command such as |\value{multicnt}|. Such +% counter is \emph{stepped up} at each cycle, instead of being +% \emph{stepped down} as in the original |\multiput| command. The code is +% not so different from the one used for the new version of |\multiput|, +% but it appears more efficient and its code more easily readable. % \begin{macrocode} \NewDocumentCommand{\xmultiput}{O{0,0} d() d() m m o }{% \IfNoValueTF{#2}{\PackageError{curve2e}{% @@ -1045,17 +1049,18 @@ README.txt and curve2e-v161.sty. % \end{macrocode} % Notice that the internal macros |\R| and |\D|, (respectively the % current point coordinates, in form of a complex number, where to put -% the\meta{object}, and the current displacement to find the next point) +% the \meta{object}, and the current displacement to find the next point) % are accessible to the user both in the \meta{object} argument field and % the \meta{handler} argument field. The code used in -% page~\pageref{pag:orologio} shows how to create the hour marks of a +% figure~18 if the user manual shows how to create the hour marks of a % clock together with the rotated hour roman numerals. +% %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \subsection{Vectors} %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % The redefinitions and the new definitions for vectors are a little more % complicated than with segments, because each vector is drawn as a -% filled contour; the original \texttt{pict2e} 2004 macro checks if the +% filled contour; the original \texttt{pict2e} 2004 macro checked if the % slopes are corresponding to the limitations specified by Lamport % (integer three digit signed numbers) and sets up a transformation in % order to make it possible to draw each vector as an horizontal @@ -1066,7 +1071,7 @@ README.txt and curve2e-v161.sty. % contours that are eventually filled by the principal macro; each % contour macro draws the vector with a \LaTeX\ or a PostScript styled % arrow tip whose parameters are specified by default or may be taken -% from the parameters taken from the|PSTricks| package if this one is +% from the parameters taken from the |PSTricks| package if this one is % loaded before |pict2e|; in any case we did not change the contour % drawing macros because if they are modified the same modification is % passed on to the arrows drawn with the |curve2e| package redefinitions. @@ -1103,7 +1108,7 @@ README.txt and curve2e-v161.sty. \DirOfVect\@Vect to\Dir@Vect % \end{macrocode} % In order to be compatible with the original \texttt{pict2e} we need to -% transform the components of the vector direction in lengths with the +% transform the components of the vector direction into lengths with the % specific names |\@xdim| and |\@ydim|^^A--------! Really necessary? % \begin{macrocode} \YpartOfVect\Dir@Vect to\@ynum \@ydim=\@ynum\p@ @@ -1114,9 +1119,9 @@ README.txt and curve2e-v161.sty. % of the vector inclination which is the real part of the vector % direction. % We use the floating point division function; since it yields a -% ``factor'' -% We directly use it to scale the length of the vector. We finally -% memorise the true vector length in the internal dimension |@tdB| +% “factor” that we directly use to scale the length of the vector. +% We finally memorise the true vector length in the internal dimension +% |@tdB| % \begin{macrocode} \ifdim\d@mX\p@=\z@ \else\ifdim\d@mY\p@=\z@ @@ -1127,7 +1132,7 @@ README.txt and curve2e-v161.sty. \fi \@tdB=\@linelen % \end{macrocode} -% The remaining code is definitely similar to that of \texttt{pict2e}; +% The remaining code is definitely similar to that of |pict2e|; % the real difference consists in the fact that the arrow is designed by % itself without the stem; but it is placed at the vector end; therefore % the first statement is just the transformation matrix used by the @@ -1142,7 +1147,7 @@ README.txt and curve2e-v161.sty. % \end{macrocode} % Now we can restore the stem length that must be shortened by the % dimension of the arrow; by examining the documentation of -% \texttt{pict2e} we discover that we have to shorten it by an +% |pict2e| we discover that we have to shorten it by an % approximate amount of $AL$ (with the notations of \texttt{pict2e}, % figs~10 and~11); the arrow tip parameters are stored in certain % variables with which we can determine the amount of the stem @@ -1199,7 +1204,7 @@ README.txt and curve2e-v161.sty. \VECTOR(\@tempb)(#2)\VECTOR(\@tempb)(#1)}\ignorespaces} % \end{macrocode} % -% The \texttt{pict2e} documentation says that if the vector length is +% The |pict2e| documentation says that if the vector length is % zero 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 the documentation @@ -1210,9 +1215,9 @@ README.txt and curve2e-v161.sty. % \subsection{Polylines and polygons} %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % We now define the polygonal line macro; its syntax is very simple: -% \begin{flushleft} -% \cs{polygonal}\oarg{join}\parg{$P_0$}\parg{$P_1$}\parg{$P_2$}% -% \texttt{\dots}\parg{$P_n$} +% \begin{flushleft}\ttfamily +% \cs{polygonal}\oarg{join}\parg{$P_0$}\parg{$P_1$}\parg{$P_2$}...^^A +%\parg{$P_n$} % \end{flushleft} % Remember: |\polyline| has been incorporated into |pict2e| 2009, but we % redefine it so as to allow an optional argument to specify the line @@ -1225,7 +1230,7 @@ README.txt and curve2e-v161.sty. % \begin{macrocode} \let\lp@r( \let\rp@r) % \end{macrocode} -% The first call to |\polyline|, besides setting the line joints, +% The first call to |\polyline|, besides setting the line joins, % examines the first point coordinates and moves the drawing position to % this point; afterwards it looks for the second point coordinates; they % start with a left parenthesis; if this is found the coordinates should @@ -1326,12 +1331,12 @@ README.txt and curve2e-v161.sty. % The next command is handy for debugging while editing one's % drawing; it draws a red grid with square meshes that are ten drawing % units apart; there is no graduation along the grid, since it is -% supposed to be a debugging aid and the user should know what he/she is +% supposed to be a debugging aid and the user should know what s/he is % doing; nevertheless it is advisable to displace the grid by means of a % |\put| command so that its grid lines coincide with graph -% coordinates that are multiples of 10. Missing to do so the readings +% coordinates that are multiples of~10. Missing to do so the readings % become cumbersome. The |\RoundUp| macro provides to increase the -% grid dimensions to integer multiples of ten. +% grid dimensions to integer multiples of~ten. % Actually the new definition of this command does not need a |put| % command (although it is not prohibited to use it) because its syntax % now is the following one @@ -1342,7 +1347,7 @@ README.txt and curve2e-v161.sty. % left corner is put at the origin of the canvas coordinates. Of course % also the lower left corner offset is recommended to be specified with % coordinates that are integer multiples of~10; this is particularly -% important when the |picture| environment offset is specified wit non +% important when the |picture| environment offset is specified with non % integer multiple of~10 values. % Actually, since both arguments are delimited with round parentheses, % a single argument is assumed to contain the grid dimensions, while @@ -1359,7 +1364,7 @@ README.txt and curve2e-v161.sty. % and there is no need to repeat them to draw the grid. The new % argument-less macro is named |\AutoGrid|, while the complete % macro is |\GraphGrid| that requires its arguments as specified -% before. The advantage of the availability of both commands, +% above. The advantage of the availability of both commands, % consists in the fact that |\AutoGrid| covers the whole canvas, % while |\GraphGrid| may compose a grid that covers either the whole % canvas or just a part of it. In both cases, though, it is necessary @@ -1372,9 +1377,10 @@ README.txt and curve2e-v161.sty. % The actual |\AutoGrid| command definition accepts two parenthesis % delimited arguments, that are not being used in the macro expansion; % in this way it is easier to replace |\GraphGrid| with |\AutoGrid| if -% it is desired to do so. The opposite action, of corse is not so simple +% it is desired to do so. The opposite action, of course is not so simple % if the |\AutoGrid| command is not followed by one or two arguments -% as |\GraphGrid| requires. +% as |\GraphGrid| requires. Approximately |\AutoGrid| may be viewed as +% a |\GraphGrid| version were both arguments are optional. % \begin{macrocode} \def\@picture(#1,#2)(#3,#4){% \edef\pict@urcorner{#1,#2}% New statement @@ -1404,10 +1410,9 @@ README.txt and curve2e-v161.sty. % \end{macrocode} % Rounding up is useful because also the grid margins fall on coordinates -% multiples of 10. +% multiples of~10. % \begin{macrocode} -\def\RoundUp#1modulo#2to#3{ -\edef#3{\fpeval{(ceil(#1/#2,0))*#2}}}% +\def\RoundUp#1modulo#2to#3{\edef#3{\fpeval{(ceil(#1/#2,0))*#2}}}% % % \end{macrocode} % The |\Integer| macro takes a possibly fractional number whose decimal @@ -1417,7 +1422,10 @@ README.txt and curve2e-v161.sty. % macro with a further point; if the argument is truly integer this point % works as the delimiter of the integer part; if the argument being % passed is fractional this extra point gets discarded as well as the -% fractional part of the number. +% fractional part of the number. This maro used to be used within the +% definition of |\RoundUp|; with the |xfp| facilities the latter macro +% does not need it any more, but it continues to be used in several other +% macros. % \begin{macrocode} \def\Integer#1.#2??{#1}% % \end{macrocode} @@ -1426,41 +1434,41 @@ README.txt and curve2e-v161.sty. % \section{Math operations on fractional operands} %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % This is not the place to complain about the fact that all programs of -% the \TeX\ system used only integer arithmetics; now, with the 2018 +% the \TeX\ system use only integer arithmetics; now, with the 2018 % distribution of the modern \TeX\ system, package |xfp| is available: -% this package resorts in the background to language \LaTeX\,3; this -% language now can compute fractional number -% operations coded in decimal, not in binary, and accepts also numbers -% written in the usual way in computer science, that is as a fractional, +% this package resorts in the background to language \LaTeX\,3; with this +% language now it is possible to compute fractional number operations; the +% numbers are coded in decimal, not in binary, and it is possible also to +% use numbers written as in computer science, that is as a fractional, % possibly signed, number followed by an expression that contains the -% exponent to 10 necessary to (ideally) move the fractional separator -% in one or the other direction according to the sign of the exponent of -% 10; in other words the L3 library for floating point calculations +% exponent of~10 necessary to (ideally) move the fractional separator +% in one or the other direction according to the sign of the exponent +% of~ 10; in other 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 digit of the digit string. +% right of the rightmost digit of the numerical string. % % Floating point calculations may be done through the |\fpeval| L3 % function with a very simple syntax: % \begin{flushleft} % \cs{fpeval}\marg{mathematical expression} % \end{flushleft} -% where \meta{mathematical exression} can contain the usual algebraic -% operation sings, |= - * / ** ^| and the function names of the most +% where \meta{mathematical expression} can contain the usual algebraic +% operation sings, |`+' - * / ** ^| and the function names of the most % common algebraic, trigonometric, and transcendental functions; for % direct and inverse trigonometric functions it accepts arguments in % radians and in sexagesimal degrees; it accepts the group of % rounding/truncating operators; it can perform several kinds of % comparisons; as to now (Nov. 2019) the todo list includes the direct % and inverse hyperbolic functions. The mantissa length of the floating -% point operands amounts to 16 decimal digits. Further details may be +% point operands amounts to~16 decimal digits. Further details may be % read in the documentations of the |xfp| and |interface3| packages, just % by typing into a command line window the command \texttt{texdoc % \meta{document}}, where \meta{document} is just the name of the above % named files without extension. % -% Furthermore we added a couple of more interface macros with the +% Furthermore we added a couple of interface macros with the % internal L3 floating point functions; |\fptest| and |\fpdowhile|. % They have the following syntax: %\begin{flushleft}\ttfamily\obeylines @@ -1472,14 +1480,14 @@ README.txt and curve2e-v161.sty. % be negated with the “not’ operator \texttt{!}; furthermore the logical % results of these comparisons may be acted upon with the “and” operator % \texttt{\&\&} and the “or” operator \texttt{||}. The \meta{true -% code}, and \meta{code} are executed if or while the \meta{logical -% expression} is true, while the \meta{false code} is executed if the -% \meta{logical expression} is false +% code}, and \meta{code} are executed if or while the +% \meta{logical expression} is true, while the \meta{false code} is +% executed if the \meta{logical expression} is false % % Before the availability of the |xfp| package, it was necessary to fake % fractional number computations by means of the native e-\TeX\ commands % |\dimexpr|, i.e. to multiply each fractional number by the unit |\p@| -% (1\,pt) so as to get a length; operate un such lengths, and then +% (1\,pt) so as to get a length; operate on such lengths, and then % stripping off the `pt' component from the result; very error prone and % with less precision as the one that the modern decimal floating point % calculations can do. Of course it is not so important to use fractional @@ -1489,10 +1497,10 @@ README.txt and curve2e-v161.sty. % new floating point functionality, even if this maintains the |curve2e| % functionality, but renders this package unusable with older \LaTeX\ % kernel installations. It has already been explained that the input of -% this up to date version of |curve2e| is aborted if the |xfp| package is -% not available, but the previous version 1.61 version is loaded; very -% little functionality is lost, but, evidently, this new version performs -% in a better way. +% this up-to-date version of |curve2e| is aborted if the |xfp| package is +% not available, but the previous version 1.61 version is loaded in its +% place; very little functionality is lost, but, evidently, this new +% version performs in a better way. % % %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1507,7 +1515,7 @@ README.txt and curve2e-v161.sty. \def\DividE#1by#2to#3{\edef#3{\fpeval{#1 / #2}}} % \end{macrocode} % In order to avoid problems with divisions by zero, or with numbers that -% yield results to large to be used as multipliers of lengths, it would +% yield results too large to be used as multipliers of lengths, it would % be preferable that the above code be preceded or followed by some tests % and possible messages. Actually we decided to avoid such tests and % messages, because the internal L3 functions already provide some. This @@ -1543,8 +1551,11 @@ README.txt and curve2e-v161.sty. % % The next macro uses the |\fpeval| macro to get % the numerical value of a measure in points. One has to call |\Numero| -% with a control sequence and a dimension; the dimension value in points -% is assigned to the control sequence. +% with a control sequence and a dimension, with the following syntax; +% the dimension value in points is assigned to the control sequence. +%\begin{flushleft} +%\cs{Numero}\meta{control sequence}\meta{dimension} +%\end{flushleft} % \begin{macrocode} \unless\ifdefined\Numero \def\Numero#1#2{\edef#1{\fpeval{round(#2,6)}}\ignorespaces}% @@ -1566,11 +1577,11 @@ README.txt and curve2e-v161.sty. %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % We now start with trigonometric functions. In previous versions of % this package we defined the macros |\SinOf|, |\CosOf| and |\TanOf| -% (|\CotOf| does not appear so essential) by means of the parametric +% (|\CotOf| did not appear so essential) by means of the parametric % formulas that require the knowledge of the tangent of the half angle. % We wanted, and still want, to specify the angles in sexagesimal % degrees, not in radians, so that accurate reductions to the main -% quadrants are possible. The formulas are +% quadrants are possible. The bisection formulas are % \begin{eqnarray*} % \sin\theta &=& \frac{2}{\cot x + \tan x}\\ % \cos\theta &=& \frac{\cot x - \tan x}{\cot x + \tan x}\\ @@ -1589,7 +1600,7 @@ README.txt and curve2e-v161.sty. % Matter of facts, we compared the results (with 6 fractional digits) the % computations executed with the \texttt{sind} function name, in order to % use the angles in degrees, and a table of trigonometric functions with -% the same number of fractional digits, and we di not find any +% the same number of fractional digits, and we did not find any % difference, not even one unit on the sixth decimal digit. Probably the % |\fpeval| computations, without rounding before the sixteenth % significant digit, are much more accurate, but it is useless to have a @@ -1608,8 +1619,7 @@ README.txt and curve2e-v161.sty. % \end{macrocode} % % -% As of today the anomaly (angle) of a complex number may not be -% necessary, but it might become useful in the future; therefore with +% Sometimes tie argument of a complex number is necessary; therefore with % macro \verb|\ArgOfVect| we calculate the four quadrant arctangent (in % degrees) of the given vector taking into account the sings of the % vector components. We use the |xfp| |atand| with two arguments, so @@ -1620,23 +1630,22 @@ README.txt and curve2e-v161.sty. %\mbox{if\quad } x + \mathrm{i}y = M\mathrm{e}^{\mathrm{i}\varphi}\mbox{\quad then\quad } %\varphi = \mathtt{\string\fpeval\{atand(\mbox{$y$},\mbox{$x$})\}} %\] -% The |\ArgOfVect| macro receives on input a vector; -% from the signs of the horizontal and vertical components it determines -% the ratio and from this ratio the arctangent; but before doing this it -% tests the components in order to determine the quadrant of the vector -% tip; depending on signs it possibly adds what is necessary to determine -% the angle in the range $-180^\circ < \varphi \le +180^\circ$. If both -% components are zero, the angle is undefined, but for what concerns -% |curve2e| it is assigned the angle $0^circ$. +% The |\ArgOfVect| macro receives on input a vector and determines its +% four quadrant argument; it only checks if both vector components are +% zero, because in this case nothing is done, and the argument is +% assigned the value zero. % \begin{macrocode} \def\ArgOfVect#1to#2{\GetCoord(#1){\t@X}{\t@Y}% -\fptest{\t@X=\z@ && \t@Y=\z@}{\edef#2{0}}{% +\fptest{\t@X=\z@ && \t@Y=\z@}{\edef#2{0}% +\PackageWarning{curve2e}{Null vector}{Check your data\Messagebreak +Computations go on, but the results may be meaningless}}{% \edef#2{\fpeval{round(atand(\t@Y,\t@X),6)}}}\ignorespaces} % \end{macrocode} -% The anomaly of a null vector is meaningless, but we set it to zero in -% case that input data are wrong. Computations go on anyway, but the -% results my be worthless; such strange results are an indications that -% some controls on the code should be done. +% Since the argument of a null vector is meaningless, we +% set it to zero in case that input data refer to such a null vector. +% Computations go on anyway, but the results may be meaningless; such +% strange results are an indications that some controls on the code +% should be done by the user. % % It is worth examining the following table, where the angles of nine % vectors $45^\circ$ degrees apart from one another are computed from @@ -1687,7 +1696,7 @@ README.txt and curve2e-v161.sty. % The difference between the |pict2e| |\arc| definition consists in a % very different syntax: %\begin{flushleft} -%\cs{arc}\texttt{[}\meta{start angle}\texttt{,}\meta{end angle}\texttt{]}\marg{radius} +%\cs{arc}\Oarg{\meta{start angle}\texttt{,}\meta{end angle}}\marg{radius} %\end{flushleft} % and the center is assumed to be at the coordinate established with a % required |\put| command; moreover the difference in specifying angles @@ -1727,7 +1736,7 @@ README.txt and curve2e-v161.sty. %\] % Even the imaginary unit is indicated with $\mathrm{i}$ by the % mathematicians and with $\mathrm{j}$ by the engineers. In spite of -% these differences, these objects, the \emph{complex numbers}, are used +% these differences, such objects, the \emph{complex numbers}, are used % without any problem by both mathematicians and engineers. % % The important point is that these objects can be summed, subtracted, @@ -1746,8 +1755,8 @@ README.txt and curve2e-v161.sty. % \mathrm{e}^{\mathrm{j}\phi} = \cos\phi+\mathrm{j}\sin\phi % \] % -% The magnitude of a vector is determined by taking the square root of -% a function of the real and the imaginary parts; see further on. +% The magnitude of a vector is determined by taking the positive square +% root of the sum of the squared real and the imaginary parts (often called \emph{Pitagorean sum}); see further on. % % It's better to represent each complex number with one control sequence; % this implies frequent assembling and disassembling the pair of real @@ -1782,6 +1791,7 @@ README.txt and curve2e-v161.sty. % quadratic convergence, five iterations were more than sufficient. When % one of the components was zero, the Newton iterative process was % skipped. +% % With the availability of the |xfp| package and its floating point % algorithms it is much easier to compute the magnitude of a complex % number; since these algorithms allow to use very large numbers, it is @@ -1850,8 +1860,8 @@ README.txt and curve2e-v161.sty. \MakeVectorFrom\t@X\t@Y to#2\ignorespaces}% % \end{macrocode} % -% Sometimes it is necessary to scale a vector by an arbitrary real -% factor; this implies scaling both the real and imaginary part of the +% Sometimes it is necessary to scale (multiply) a vector by an arbitrary +% real factor; this implies scaling both the real and imaginary part of the % input given vector. % \begin{macrocode} \def\ScaleVect#1by#2to#3{\GetCoord(#1)\t@X\t@Y @@ -1893,7 +1903,7 @@ README.txt and curve2e-v161.sty. % conjugate of the second operand; it would be nice if we could use the % usual postfixed asterisk notation for the complex conjugate, but in the % previous versions of this package we could not find a simple means for -% doing so. Therefore the previous version contained e definition of the +% doing so. Therefore the previous version contained a definition of the % |\MultVect| macro that followed a simple syntax with an optional % asterisk \emph{prefixed} to the second operand. Its syntax, therefore, % allowed the following two forms: @@ -1903,7 +1913,7 @@ README.txt and curve2e-v161.sty. %\end{flushleft} % % With the availability of the |xparse| package and its special argument -% descriptors for the arguments, we were able to define a different +% descriptors for the arguments, we were able to define a different % macro, |\Multvect|, with both optional positions for the asterisk: % \emph{after} and \emph{before}; its syntax allows the following four % forms: @@ -1922,12 +1932,12 @@ README.txt and curve2e-v161.sty. % % First we define the new macro: it receives the three arguments, the % first two as balanced texts; the last one must always be a macro, -% therefore a single (complex) token and doe not require braces, even +% therefore a single (complex) token that does not require braces, even % if it is not forbidden to use them. Asterisks are optional. -% The input arguments are transformed into couples of anomaly and +% The input arguments are transformed into couples of argument and % modulus; this makes multiplication much simpler as the output modulus -% is just the product of the input moduli, while the output anomaly is -% just the sum of input anomalies; eventually it is necessary to +% is just the product of the input moduli, while the output argument is +% just the sum of input arguments; eventually it is necessary to % transform this polar version of the result into an ordered couple of % cartesian values to be assigned to the output macro. % In order to maintain the single macros pretty simple we need a couple @@ -1938,7 +1948,7 @@ README.txt and curve2e-v161.sty. %\cs{ModAndAngleOfVect}\meta{input vector} to \meta{output modulus} and \meta{output angle in degrees} %\end{flushleft} % The output quantities are always macros, so they do not need balanced -% bracing; angles in degrees are always preferred because, on case of +% bracing; angles in degrees are always preferred because, in case of % necessity, they are easy to reduce to the range $-180^\circ < \alpha \leq +180^\circ$. % \begin{macrocode} \def\ModAndAngleOfVect#1to#2and#3{\ModOfVect#1to#2\relax @@ -1947,14 +1957,13 @@ README.txt and curve2e-v161.sty. % We name a counter in the upper range accessible with all the modern % three typesetting engines, |pdfLaTeX|, |LuaLaTeX| and |XeLaTeX|. % \begin{macrocode} -\countdef\MV@C=2560\relax +\newcount\MV@C % \end{macrocode} -% The user is warned; The counter register number is sort of casual, -% but it is not excluded that its name or number get in conflict with -% other macros from other packages. I would be grateful is such an event -% takes place. +% This \TeX\ counter definition uses the property of modern typesetting +% engines that use the \eTeX\ extensions, that can define a very large +% number of counters. % -% Nov comes the real macro\footnote{A warm thank-you to Enrico Gregorio, +% Now comes the real macro\footnote{A warm thank-you to Enrico Gregorio, % who kindly attracted my attention on the necessity of braces when using % this kind of macro; being used to the syntax with delimited arguments % I had taken the bad habit of avoiding braces. Braces are very @@ -1986,9 +1995,9 @@ README.txt and curve2e-v161.sty. \unless\ifx\MV@c\empty\Multvect{#1}{#2}*{#3}\else \Multvect{#1}{#2}{#3}\fi} % \end{macrocode} -% Testing of both the new and the old macros show that they behave as +% Testing of both the new and the old macros shows that they behave as % expected, although, using real numbers for trigonometric functions, -% some small rounding unit on the sixth decimal digit still remain; +% some small rounding unit on the sixth decimal digit still remains; % nothing to worry about with a package used for drawing. % % @@ -2014,7 +2023,7 @@ README.txt and curve2e-v161.sty. % possibly slightly more robust. They match the corresponding macros for % multiplying two vectors. % -%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%>>>>>>>>>>> +%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \subsection{Arcs and curved vectors} %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % We are now in the position of really doing graphic work. @@ -2076,13 +2085,12 @@ README.txt and curve2e-v161.sty. \@@Arc\strokepath\ignorespaces}% % \end{macrocode} % And the new macro |\@@Arc| starts with moving the drawing point to the -% first% point and does everything needed for drawing the requested arc, -% except stroking it; we leave the \texttt{stroke} command to the +% first point and does everything needed for drawing the requested arc, +% except stroking it; we leave the |\strokepath| command to the % completion of the calling macro and nobody forbids to use the |\@@Arc| % macro for other purposes. % \begin{macrocode} -\def\@@Arc{% -\pIIe@moveto{\@pPunX\unitlength}{\@pPunY\unitlength}% +\def\@@Arc{\pIIe@moveto{\@pPunX\unitlength}{\@pPunY\unitlength}% % \end{macrocode} % If the aperture is larger than $180^\circ$ it traces a semicircle in % the right direction and correspondingly reduces the overall aperture. @@ -2111,7 +2119,7 @@ README.txt and curve2e-v161.sty. % 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~11 of the documentation |curve2e-manual.pdf| +% With reference to figure~11 of the user manual |curve2e-manual.pdf| % file, 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 @@ -2188,7 +2196,7 @@ README.txt and curve2e-v161.sty. % specific option to the \texttt{pict2e} package. % % But the arc drawing done here shortens it so as not to overlap on the -% arrow(s); the only arrow (or both ones) are also lightly tilted in +% arrow tip(s); the only arrow tip (or both tips) are also lightly tilted in % order to avoid the impression of a corner where the arc enters the % arrow tip. % @@ -2197,7 +2205,7 @@ README.txt and curve2e-v161.sty. % anything else but: (a) determining the end point and its direction; % (b) determining the arrow length as an angular quantity, i.e. the arc % amplitude that must be subtracted from the total arc to be drawn; -% (c) the direction of the arrow should be corresponding to the tangent +% (c) the direction of the arrow should correspond to the tangent % to the arc at the point where the arrow tip is attached; (d) tilting % the arrow tip by half its angular amplitude; (e) determining the % resulting position and direction of the arrow tip so as to draw a zero @@ -2223,7 +2231,7 @@ README.txt and curve2e-v161.sty. \endgroup\ignorespaces}% % \end{macrocode} % -% The single arrowed arc is defined with the following long macro where +% The single arrow tiped arc is defined with the following long macro where % all the described operations are performed more or less in the % described succession; probably the macro requires a little cleaning, % but since it works fine we did not try to optimise it for time or @@ -2278,7 +2286,7 @@ README.txt and curve2e-v161.sty. % \end{macrocode} % % The macro for the arc terminated with arrow tips at both ends is again -% very similar, except it is necessary to repeat the arrow tip +% very similar, but it is necessary to repeat the arrow tip % positioning also at the starting point. The |\@@Arc| macro draws the % curved stem. % \begin{macrocode} @@ -2335,7 +2343,7 @@ README.txt and curve2e-v161.sty. % \end{macrocode} % % It must be understood that the curved vectors, the above circular arcs -% terminated with an arrow tip at one or both ends, have a nice +% terminated with an arrow tips at one or both ends, have a nice % appearance only if the arc radius is not too small, or, said in a % different way, if the arrow tip angular width does not exceed a % maximum of a dozen degrees (and this is probably already too much); the @@ -2347,18 +2355,18 @@ README.txt and curve2e-v161.sty. % \subsection{General curves} %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % The most used method to draw curved lines with computer programs is to -% connect several simple curved lines, general ``arcs'', one to another +% connect several simple curved lines, general “arcs”, one to another % generally maintaining the same tangent at the junction. If the % direction changes we are dealing with a cusp. % % The simple general arcs that are directly implemented in every program -% that display typeset documents, are those drawn with the parametric +% that displays typeset documents, are those drawn with the parametric % curves called \emph{Béźier splines}; given a sequence of points in the % $x,y$ plane, say $P_0, P_1, P_2, p_3, \dots$ (represented as coordinate % pairs, i.e. by complex numbers), the most common Bézier splines are the % following ones: % \begin{align} -% \mathcal{B}_1 &= P_0(1-t) + P_1t \label{equ:B-1} \\ +% \mathcal{B}_1 &= P_0(1-t) + P_1t \label{equ:B-1} \\ % \mathcal{B}_2 &= P_0(1-t)^2 + P_1 2(1-t)t + P_2t^2 \label{equ:B-2} \\ % \mathcal{B}_3 &= P_0(1-t)^3 + P_1 3(1-t)^2t +P_2 3(1-t)t^2 +P_3t^3 % \label{equ:B-3} @@ -2383,7 +2391,8 @@ README.txt and curve2e-v161.sty. % cubic splines as well as a set of quadratic splines (fonts are a good % example: Adobe Type~1 fonts have their contours described by cubic % splines, while TrueType fonts have their contours described with -% quadratic splines; at naked eye it is impossible to notice the difference). +% quadratic splines; at naked eye it is impossible to notice the +% difference). % % Each program that processes the file to be displayed is capable of % drawing first order Bézier splines (segments) and third order Bézier @@ -2396,7 +2405,7 @@ README.txt and curve2e-v161.sty. % arcs. At least with |pdftex|, quadratic arcs must be simulated with a % clever use of third order Bézier splines. % -% Notice that \LaTeXe\ environment |picture| by itself is capable of +% Notice that the \LaTeXe\ environment |picture| by itself is capable of % drawing both cubic and quadratic Bézier splines as single arcs; but it % resorts to ``poor man'' solutions. The |pict2e| package removes all the % old limitations and implements the interface macros for sending the @@ -2428,13 +2437,13 @@ README.txt and curve2e-v161.sty. % Actually the above macro is a special case of concatenation of the % triplet formed by macros |\StartCurve|, |\CurveTo| and|\CurveFinish|; % the second macro can be repeated an arbitrary number of times. -% In any case the directions specified with the direction arguments, both -% here and with the more general macro|\Curve|, the angle between the -% indicated tangent and the arc chord may give raise to some little -% problems when they are very close to 90° in absolute value. Some -% control is exercised on these values, but some tests might fail if the -% angle derives from computations; this is a good place to use polar -% forms for the direction vectors. +% In any case the directions specified with the direction arguments +% the angle between the indicated tangent and the arc chord may give +% raise to some little problems when they are very close to 90° in +% absolute value. Some control is exercised on these values, but some +% tests might fail if the angle derives from other calculations; this +% is a good place to use polar forms for the direction vectors. The +% same comments apply also to the more general macro |\Curve|, % % The first macro initialises the drawing and the third one strokes it; % the real work is done by the second macro. The first macro initialises @@ -2448,8 +2457,8 @@ README.txt and curve2e-v161.sty. % better than stroking the curve before the cusp and then starting % another curve, because the curve joining point at the cusp is not % stroked with the same command, therefore we get two superimposed curve -% terminations. We therefore need another small macro |\ChangeDir| to -% perform this task. +% terminations. To avoid this imperfection, we need another small macro +% |\ChangeDir| to perform this task. % % It is necessary to recall that the direction vectors point to the % control points, but they do not define the control points themselves; @@ -2535,14 +2544,14 @@ README.txt and curve2e-v161.sty. % since the macro provides to normalise it to unity; \meta{$K_0$} and % \meta{$K_1$} are the distances of the control points from their % respective node points; they must be positive integers or fractional -% numbers. If \meta{$K_1$} is a number must be enclosed in curly braces, +% numbers. If \meta{$K_1$} is a number, it must be enclosed in curly braces, % while if it is a macro name (containing the desired fractional or % integer value) there is no need for braces. % -% This macro uses the input information to use the internal |pict2e| -% macro |\pIIe@curveto| with the proper arguments, and to save the final -% direction into the same |\@Dzero| macro for successive use of other -% arc-drawing macros. +% This macro uses the input information in order to activate the internal +% |pict2e| macro |\pIIe@curveto| with the proper arguments, and to save +% the final direction into the same |\@Dzero| macro for successive use +% of other arc-drawing macros. % \begin{macrocode} \def\CbezierTo#1WithDir#2AndDists#3And#4{% \GetCoord(#1)\@tX\@tY \MakeVectorFrom\@tX\@tY to\@Puno @@ -2572,8 +2581,8 @@ README.txt and curve2e-v161.sty. % \end{macrocode} % -% An example of use is shown in figure~13 of the |curve2e-manual.pdf| file; -% notice that the tangents at the end points +% An example of use is shown in figure~13 of the user manual +% |curve2e-manual.pdf| file; 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 @@ -2584,11 +2593,11 @@ README.txt and curve2e-v161.sty. % 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 % control points for joining the previous point (initial node) with the -% specified direction to the next point with another specified direction -% (final node). +% specified direction to the next point (final node) with another +% specified direction. + % Since the control points are along the specified directions, it is % necessary to determine the distances from the adjacent curve nodes. % This must work correctly even if nodes and directions imply an @@ -2642,7 +2651,7 @@ README.txt and curve2e-v161.sty. \def\strip@semicolon#1;{\def\@tempB{#1}} % \end{macrocode} % By changing the tension values we can achieve different results: see -% figure~\ref{fig:tensions} on page~\pageref{fig:tensions}. +% figure~14 in the user manual |curve2e-manual.pdf|. % % 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: @@ -2750,9 +2759,9 @@ README.txt and curve2e-v161.sty. {\@XCPuno\unitlength}{\@YCPuno\unitlength}% {\@XPuno\unitlength}{\@YPuno\unitlength}\egroup % \end{macrocode} -% It does not have to stroke the curve because other Bézier splines +% It does not have to stroke the curve because other Bézier splines % might still be added to the path. On the opposite it memorises the -% final point as the initial point of the next spline +% final point to be used as the initial point of the next spline % \begin{macrocode} \CopyVect\@Puno to\@Pzero \CopyVect\@Duno to\@Dzero @@ -2764,7 +2773,7 @@ README.txt and curve2e-v161.sty. % starred and unstarred; the former fills the curve path with the locally % selected color, while the latter just strokes the path. Both % recursively examine an arbitrary list of nodes and directions; node -% coordinates are grouped within regular parentheses while direction +% coordinates are grouped within round parentheses while direction % components are grouped within angle brackets. The first call of the % macro initialises the drawing process and checks for the next node and % direction; if a second node is missing, it issues a warning message and @@ -2820,14 +2829,14 @@ README.txt and curve2e-v161.sty. % 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. +% use than single arcs drawn with the |\CbezierBetween| macro. % %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \subsection{Quadratic splines} %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % We want to create a recursive macro with the same properties as the % above described |\Curve| macro, but that uses quadratic splines; we -% call it |\Qurve| so that the initial macro name letter reminds us of +% call it |\Qurve| so that the macro name initial letter reminds us of % the nature of the splines being used. For the rest they have an almost % identical syntax; with quadratic splines it is not possible to specify % the distance of the control points from the extrema, since quadratic @@ -2867,12 +2876,12 @@ README.txt and curve2e-v161.sty. % Notice that in case of long paths it might be better to use the single % macros |\StartCurveAt|, |\QurveTo|, |\ChangeDir| and |\CurveFinish| % (or |\FillCurve|), with their respective syntax, in such a way that a -% long list % of node-direction specifications passed to |\Qurve| may be +% long list of node-direction specifications passed to |\Qurve| may be % split into shorter input lines in order to edit the input data in a % more comfortable way. % % -% The macro that does everything is |\QurveTo|. it starts with reading +% The macro that does everything is |\QurveTo|. It starts by reading % its arguments received through the calling macro |\@Qurve| % \begin{macrocode} \def\QurveTo#1WithDir#2{% @@ -2911,10 +2920,9 @@ README.txt and curve2e-v161.sty. % \end{macrocode} % We check if the two directions point to the same half plane; this % implies that these rotated directions point to different sides of the -% chord vector; all this is equivalent that the two direction Y -% components have opposite signs, so that their product is strictly -% negative, while the two -% X components product is not negative. +% chord vector; all this is equivalent to the fact that the two direction +% Y components have opposite signs, so that their product is strictly +% negative, while the two X components product is not negative. % \begin{macrocode} \MultiplyFN\@DXpzero by\@DXpuno to\@XXD \MultiplyFN\@DYpzero by\@DYpuno to\@YYD @@ -2948,7 +2956,7 @@ README.txt and curve2e-v161.sty. % lines. %\begin{subequations} %\begin{align} -% t \cos\phi_0 - s \cos\phi_1 &= c\\ +% t \cos\phi_0 - s \cos\phi_1 &= c\\ % t \sin\phi_0 - s \sin\phi_1 &= 0 %\end{align} %\end{subequations} @@ -2977,7 +2985,7 @@ README.txt and curve2e-v161.sty. \MultiplyFN\@tempC by\@SDzero to \@YC \ModOfVect\@XC,\@YC to\@KC % \end{macrocode} -% Now we have the coordinates and the module of the intersection point +% Now we have the coordinates and the module of the intersection point % vector taking into account the rotation of the real axis; getting back % to the original coordinates before rotation, we get: % \begin{macrocode} @@ -2987,14 +2995,14 @@ README.txt and curve2e-v161.sty. \GetCoord(\@Puno)\@XPuno\@YPuno \GetCoord(\@CP)\@XCP\@YCP % \end{macrocode} -% We have now the coordinates of the two extrema point of the quadratic -% arc and of the control point. Keeping in mind that the symbols $P_0$, -% $P_1$ and $C$ denote geometrical points but also their coordinates as -% ordered pairs of real numbers (i.e. they are complex numbers) we have +% We have now the coordinates of the two end points of the quadratic +% arc and of the single control point. Keeping in mind that the symbols +% $P_0$, $P_1$ and $C$ denote geometrical points but also their coordinates +% as ordered pairs of real numbers (i.e. they are complex numbers) we have % to determine the parameters of a cubic spline that with suitable -% values get simplifications in its parametric equation so that it +% values gets simplifications in its parametric equation so that it % becomes a second degree function instead of a third degree one. It is -% possible, in spite of the fact the it appears impossible that e cubic +% possible, even if it appears impossible that e cubic % form becomes a quadratic one; we should determine the values of $P_a$ % and $P_b$ such that: %\[ @@ -3027,7 +3035,7 @@ README.txt and curve2e-v161.sty. % the conditional statements with which we started these calculations; % eventually we close the group we opened at the beginning and we copy % the terminal node information (position and direction) into the -% 0-labelled macros that indicate the starting point of the next arc. +% zero-labelled macros that indicate the starting point of the next arc. % \begin{macrocode} \pIIe@curveto\@ovro\@ovri\@clnwd\@clnht\@xdim\@ydim \fi\fi\egroup @@ -3045,26 +3053,25 @@ README.txt and curve2e-v161.sty. % 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.} in -% figure~16 created with the code shown in the same page as the figure. +% diagram, but they are not part of the \texttt{curve2e} package.} +% created with the code shown in the same page as the figure. % % 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 star already used also with the +% obtained with the usual optional argument already used also with the % |\Curve| recursive macro. % -% The ``circle'' inside the square frame is visibly different from a real +% The “circle” inside the square frame is visibly different from a real % circle, in spite of the fact that the maximum deviation from the true % circle is just about 6\% relative to the radius; a quarter circle % 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} 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. +% much better. On the right of figure~16 of the user manual 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 @@ -3080,11 +3087,15 @@ README.txt and curve2e-v161.sty. % really help the user to draw his/her diagrams with more agility; it % will be the accumulated experience to decide if this is true. % -% As a personal experience we found very comfortable to draw ellipses and +% As a personal experience I found very comfortable to draw ellipses and % to define macros to draw not only such shapes or filled elliptical % areas, but also to create “legends” with coloured backgrounds and -% borders. But this is an application of the functionality implemented in -% this package. +% borders. But this is just an application of the functionality +% implemented in this package. In 2020 I added to CTAN another +% specialized package, |euclideangeometry.sty| with its manual +% |euclideangeometry-man.pdf| that uses the facilities of |curve2e| +% to draw complex diagrams that plot curves and others that solve some +% geometrical problems dealing with ellipses. % %\iffalse %</package> @@ -3104,54 +3115,73 @@ README.txt and curve2e-v161.sty. The package bundle curve2e is composed of the following files curve2e.dtx -curve2e.pdf -README.txt curve2e-manual.tex + +The derived files are + +curve2e.sty +curve2e-v161.sty +curve2e.pdf curve2e-manual.pdf +README.txt -curve2e.dtx is the documented TeX source file of file curve2e.sty; you -get curve2e.sty, curve2e.pdf, and curve2e-v161.sty by running pdflatex -on curve2e.dtx. The curve2e-manual files contain the user manual; in -this way the long preliminary descriptive part has been transferred to -a shorter dedicated file, and the “normal” user should have enough -information to use the package. Th curve2e.pdf file, extracted from -the .dtx one, contains the code documentation and is intended for the developers, or for the curious advanced users. +Compile curve2e.dtx and curve2e-manual.tex two or three times until +all labels and citation keys are completely resolved. -README.txt, this file, contains general information. +Move curve2e.dtx and curve2e-manual.tex to ROOT/source/latex/curve2e/ +Move curve2e.pdf and curve2e-manual.pdf to ROOT/doc/latex/curve2e/ +Move curve2e.sty and curve2e-v161.sty to ROOT/tex/latex/curve2e/ +Move README.txt to ROOT/doc/latex/curve2e/ + +curve2e.dtx is the documented TeX source file of the derived files +curve2e.sty, curve2e-v161.sty and README.txt. + +You get curve2e.sty, curve2e.pdf, curve2e-v161.sty, and README.txt +by running pdflatex on curve2e.dtx. -This bundle contains also package curve2e-v161.sty that is a previous -version of this package; see below why the older version might become -necessary to the end user. +The curve2e-manual files contains the user manual; in +this way the long preliminary descriptive part has been transferred to +a shorter dedicated file, and the “normal” user should have enough +information to use the package. Th curve2e.pdf file, extracted from +the .dtx one, contains the code documentation and is intended for the +developers, or for the curious advanced users. For what concerns +curve2e-v161.sty is a previous version of this package; see below why +the older version might become necessary to the end user. + +README.txt, this file, contains general information. +This bundle contains also package curve2e-v161.sty, a roll-back +version needed in certain rare cases. Curve2e.sty is an extension of the package pict2e.sty which extends the standard picture LaTeX environment according to what Leslie Lamport specified in the second edition of his LaTeX manual (1994). -This further extension curve2e.sty allows to draw lines and vectors -with any non integer slope parameters, to draw dashed lines of any -slope, to draw arcs and curved vectors, to draw curves where just -the interpolating nodes are specified together with the slopes at -such nodes; closed paths of any shape can be filled with color; all -coordinates are treated as ordered pairs, i.e. 'complex numbers'; -coordinates may be expressed also in polar form. Coordinates may be -specified with macros, so that editing any drawing is rendered much -simpler: any point specified with a macro is modified only once in +This further extension curve2e.sty to pict2e.sty allows to draw lines +and vectorsith any non integer slope parameters, to draw dashed and dotted +lines of any slope, to draw arcs and curved vectors, to draw curves where +just the interpolating nodes are specified together with the slopes at +such nodes; closed paths of any shape can be filled with color; all +coordinates are treated as ordered pairs, i.e. 'complex numbers'; +coordinates may be expressed also in polar form. Coordinates may be +specified with macros, so that editing any drawing is rendered much +simpler: any point specified with a macro is modified only once in its macro definition. -Some of these features have been incorporated in the 2011 version of +Some of these features have been incorporated in the 2009 version of pict2e; therefore this package avoids any modification to the original -pict2e commands. +pict2e commands. In any case the version of curve2e is compatible with +later versions of pict2e; see below. Curve2e now accepts polar coordinates in addition to the usual cartesian ones; several macros have been upgraded; a new macro for tracing cubic Bezier splines with their control nodes specified in polar form is available. The same applies to quadratic Bezier splines. The multiput command has been completely modified in a backwards compatible way; the -new version allows to manipulate the increment components in a configurable -way. A new xmultiput command has been defined that is more configurable -than the original one; both \multiput and \xmultiput are backwards +new version allows to manipulate the increment components in a configurable +way. A new xmultiput command has been defined that is more configurable +than the original one; both commands multiput and xmultiput are backwards compatible with the original picture environment definition. -This version solves a conflict with package eso-pic. +Curve2e solves a conflict with package eso-pic. This version of curve2e is almost fully compatible with pict2e dated 2014/01/12 version 0.2z and later. @@ -3162,18 +3192,18 @@ If you specify the package pict2e is automatically invoked with the specified options. -The -almost fully compatible- phrase is necessary to explain that this -version of curve2e uses some `functions' of the LaTeX3 language that were +The -almost fully compatible- phrase is necessary to explain that this +version of curve2e uses some `functions' of the LaTeX3 language that were made available to the LaTeX developers by mid October 2018. Should the user have an older or a basic/incomplete installation of the TeX system, such L3 functions might not be available. This is why this package checks the presence of the developer interface; in case such interface is not available it rolls back to the previous version -renamed curve2e-v161.sty, which is part of this bundle; this other -package name must not be modified in any way. The compatibility mentioned -above implies that the user macros remain the same, but their -implementation requires the L3 interface. Some macros and environments -rely totally on the xfp package functionalities, but legacy documents +renamed curve2e-v161.sty, which is part of this bundle; this roll-back +file name must not be modified in any way. The compatibility mentioned +above implies that the user macros remain the same, but their +implementation requires the L3 interface. Some macros and environments +rely totally on the xfp package functionalities, but legacy documents source files should compile correctly. The package has the LPPL status of maintained. @@ -3184,7 +3214,7 @@ as long as you fulfil the few conditions set forth by the Licence. Nevertheless this package is an extension to the standard LaTeX pict2e (2014) package. Therefore any change must be controlled on the parent package pict2e, so as to avoid redefining or interfering with -what is already contained in the official package. +what is already contained in that package. If you prefer sending me your modifications, as long as I will maintain this package, I will possibly include every (documented) suggestion or @@ -3201,7 +3231,7 @@ claudio dot beccari at gmail dot com %\iffalse %<*v161> %\fi -% \section{The fall-back package version \texttt{curve2e-v161}} +% \section{The roll-back package version \texttt{curve2e-v161}} % this is the fall-back version of |curve2e-v161.sty| to which the main % file |curve2e.sty| falls back in case the interface package |xfp| is % not available. |