texlive[54785] Master/texmf-dist: pst-eucl (18apr20)

commits+karl at tug.org commits+karl at tug.org
Sat Apr 18 22:56:01 CEST 2020


Revision: 54785
          http://tug.org/svn/texlive?view=revision&revision=54785
Author:   karl
Date:     2020-04-18 22:56:01 +0200 (Sat, 18 Apr 2020)
Log Message:
-----------
pst-eucl (18apr20)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/generic/pst-eucl/Changes
    trunk/Master/texmf-dist/doc/generic/pst-eucl/pst-eucl-doc.pdf
    trunk/Master/texmf-dist/doc/generic/pst-eucl/pst-eucl-doc.tex
    trunk/Master/texmf-dist/tex/generic/pst-eucl/pst-eucl.tex

Modified: trunk/Master/texmf-dist/doc/generic/pst-eucl/Changes
===================================================================
--- trunk/Master/texmf-dist/doc/generic/pst-eucl/Changes	2020-04-18 20:55:45 UTC (rev 54784)
+++ trunk/Master/texmf-dist/doc/generic/pst-eucl/Changes	2020-04-18 20:56:01 UTC (rev 54785)
@@ -6,8 +6,10 @@
 
 
 pst-eucl.tex --------
+1.72  2020/04/18 - revert the change of \pstTriangle in v1.69, we should use \pst at object to clear \pst at par.
+                 - add macro to draw the Lemonie Point of the given triangle, \pstTriangleLC.
 1.71  2020/02/26 - add macro to wrap the native macro \pspolygon just group the parameters as local, \pstPolygon.
-                 - update macro \pstCircleOA and \pstCircleAB to clear \pst at par like as \pst at object clear it. This change update the issue that some rendering options used at last will be taken, e.g. if you call \pspolygon with fillcolor, and then call \pstCircleOA, the circle will be filled with same color.
+                 - revert the change of \pstCircleOA and \pstCircleAB in v1.66, we should use \pst at object to clear \pst at par.
                  - add macro to draw the nine point circle and its center, \pstTriangleNC.
                  - add macro to draw the general ellipse by its focus and one node on it, \pstGeneralEllipseFFN.
                  - add macro to draw the general hyperbola by its focus and one node on it, \pstGeneralHyperbolaFFN.

Modified: trunk/Master/texmf-dist/doc/generic/pst-eucl/pst-eucl-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/pst-eucl/pst-eucl-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/generic/pst-eucl/pst-eucl-doc.tex	2020-04-18 20:55:45 UTC (rev 54784)
+++ trunk/Master/texmf-dist/doc/generic/pst-eucl/pst-eucl-doc.tex	2020-04-18 20:56:01 UTC (rev 54785)
@@ -9,7 +9,6 @@
 \usepackage[mathscr]{eucal}
 \def\eV{e.\kern-1pt{}V\kern-1pt}
 
-
 \lstset{pos=l,wide=false,basicstyle=\footnotesize\ttfamily,explpreset={language=[PSTricks]{TeX}}}
 %
 \def\Argsans#1{$\langle$#1$\rangle$}
@@ -488,16 +487,22 @@
 \pstTriangleOC[PosAngle=90,PointSymbol=*,PointName=X]{A}{B}{C}[X]
 \end{lstlisting}
 
-The macros \Lcs{pstTriangleGC}, \Lcs{pstTriangleHC} and \Lcs{pstTriangleEC} are used to draw the barycenter $G$, the orthocentre $H$ and the escenter $E$ of the triangle $ABC$.
+The macros \Lcs{pstTriangleGC}, \Lcs{pstTriangleHC}, \Lcs{pstTriangleEC}, \Lcs{pstTriangleNC}, \Lcs{pstTriangleLC}
+are used to draw the barycenter $G$, the orthocentre $H$, the escenter $E$, the nine points circle center 
+and the Lemonie point (or symmedian point) of the triangle $ABC$.
 
 \begin{BDef}
 \Lcs{pstTriangleGC}\OptArgs\Largb{A}\Largb{B}\Largb{C}\Largb{G}\OptArg{$M_1$}\OptArg{$M_2$}\\
 \Lcs{pstTriangleHC}\OptArgs\Largb{A}\Largb{B}\Largb{C}\Largb{H}\OptArg{$H_1$}\OptArg{$H_2$}\\
-\Lcs{pstTriangleEC}\OptArgs\Largb{A}\Largb{B}\Largb{C}\Largb{E}\OptArg{$T_1$}
+\Lcs{pstTriangleEC}\OptArgs\Largb{A}\Largb{B}\Largb{C}\Largb{E}\OptArg{$T_1$}\\
+\Lcs{pstTriangleNC}\OptArgs\Largb{A}\Largb{B}\Largb{C}\Largb{N}\OptArg{$M_1$}\OptArg{$M_2$}\OptArg{$M_3$}\\
+\Lcs{pstTriangleLC}\OptArgs\Largb{A}\Largb{B}\Largb{C}\Largb{L}\OptArg{$S_1$}\OptArg{$S_2$}\OptArg{$S_3$}
 \end{BDef}
 
-You can use the options of node like as \verb|PointName=...|, \verb|PosAngle=...|, \verb|PointSymbol=...| to control the output nodes $G,H,E$. But if you give the optional output parameters $M_1,M_2$, or $H_1,H_2$ or $T_1$, then you should pass the option value in list like as \verb|PointName={...}|, \verb|PosAngle={...}|, \verb|PointSymbol={...}|.
-For example,
+You can use the options of node like as \verb|PointName=...|, \verb|PosAngle=...|, \verb|PointSymbol=...|
+to control the output nodes $G,H,E$. But if you give the optional output parameters $M_1,M_2$, or $H_1,H_2$
+or $T_1$, then you should pass the option value in list like as \verb|PointName={...}|,
+\verb|PosAngle={...}|, \verb|PointSymbol={...}|. For example,
 
 \begin{LTXexample}[width=6cm,pos=l]
 \begin{pspicture}[showgrid=true](-3,-3)(3,2)
@@ -505,11 +510,13 @@
 \pstGeonode[PosAngle=90](0,1){A}
 \pstGeonode[PosAngle=-90](-1,-0.6){B}
 \pstGeonode[PosAngle=-90](1.5,-0.6){C}
-\pstTriangleGC[PointSymbol={*,none,*},PosAngle={150,-80,30}]{A}{B}{C}{G}[M_1][M_2]
-\pstTriangleHC[PointSymbol={*,*,none},PosAngle={-30,-100,30}]{A}{B}{C}{H}[H_1][H_2]
-\pstTriangleEC[PointSymbol={*,none},PosAngle={90,30}]{A}{B}{C}{E_1}[T_1]
+\pstTriangleGC[PointSymbol={*,none,*},PosAngle={-30,-80,30},PointNameSep=0.22cm]{A}{B}{C}{G}[M_1][M_2]
+\pstTriangleHC[PointSymbol={*,*,none},PosAngle={160,-120,30},PointNameSep=0.22cm]{A}{B}{C}{H}[H_1][H_2]
+\pstTriangleEC[PointSymbol={*,*},PosAngle={90,-40}]{A}{B}{C}{E_1}[T_1]
 \pstTriangleEC[PointSymbol=*,PosAngle=0]{B}{C}{A}{E_2}
 \pstTriangleEC[PointSymbol=*,PosAngle=180]{C}{A}{B}{E_3}
+\pstTriangleNC[PointSymbol=*,PosAngle=40,linestyle=dashed,linecolor=cyan!60]{A}{B}{C}{N}
+\pstTriangleLC[PointSymbol=*,PosAngle=200,linecolor=green!80,PointNameSep=0.22cm]{A}{B}{C}{L}
 \pstLineAB{A}{B}\pstLineAB{B}{C}\pstLineAB{C}{A}
 \pstCircleOA[linestyle=dashed,linecolor=gray!40]{E_1}{T_1}[30][150]
 \pstLineAB[linestyle=dashed,linecolor=blue!40]{A}{M_1}
@@ -533,8 +540,9 @@
 
 
 \begin{sloppypar}
-Valid optional arguments are \Lkeyword{RightAngleType}, \Lkeyword{RightAngleSize}, 
-        \Lkeyword{RightAngleSize}, and \Lkeyword{RightAngleDotDistance}
+The valid optional arguments controlling this command, excepting the ones which
+controlled the line, are \Lkeyword{RightAngleType}, \Lkeyword{RightAngleSize},
+\Lkeyword{RightAngleSize}, and \Lkeyword{RightAngleDotDistance}.
 \end{sloppypar}
 
 The symbol is controlled by the parameter \Lkeyword{RightAngleType}
@@ -546,19 +554,13 @@
 \item \Lkeyval{suisseromand} : swiss romand symbol (given P. Schnewlin).
 \end{compactitem}
 
-\begin{sloppypar}
-The only parameters controlling this command, excepting the ones which
-controlled the line, is \Lkeyword{RightAngleSize} which defines the size
-of the symbol \DefaultVal{0.28 unit} and \Lkeyword{RightAngleDotDistance}. For a 
-right angle style \Lkeyval{german} or \Lkeyval{swissromand} the distance of the dot
+The optional argument \Lkeyword{RightAngleSize} defines the size of the symbol \DefaultVal{0.28 unit}.
+
+For a right angle style \Lkeyval{german} or \Lkeyval{swissromand} the distance of the dot
 is preset to 0.5 (\Lkeyval{german}) or 0.45 (\Lkeyval{swissromand}), relative to the radius.
-It can be controlled by the optional argument \Lkeyword{RightAngleDotDistance} which is
+However, it can be controlled by the optional argument \Lkeyword{RightAngleDotDistance} which is
 preset to 1. A greater value moves the dot away from the reference point.
-\end{sloppypar}
 
-
-
-
 For other angles, there is the command:
 
 \begin{BDef}
@@ -568,8 +570,7 @@
 
 \begin{sloppypar}
 Valid optional arguments are \Lkeyword{MarkAngleRadius}, \Lkeyword{LabelAngleOffset},
-  \Lkeyword{MarkAngleType} and
-  \Lkeyword{Mark}
+\Lkeyword{MarkAngleType} and \Lkeyword{Mark}.
 %
 The \Lkeyword{label} can be any valid \TeX\ box, it is put at \Lkeyword{LabelSep}
 \DefaultVal{1 unit} of the node in the direction of the bisector of the angle
@@ -1172,13 +1173,13 @@
 \begin{lstlisting}
 \pstCircleOA[DistCoef=1 3 div,Radius=\pstDistAB{A}{B}]{O}{}
 \pstCircleOA[DistCoef=1 3 div,Radius=\pstDistAB{A}{B}]{A}{B}{O}{}{I}{J}
-\pstInterCC[DistCoef=1 3 div,RadiusA=\pstDistAB{A}{B},DistCoef=none,RadiusA=\pstDistAB{C}{D}]{O1}{}{O2}{}{I}{J}
+\pstInterCC[DistCoef=1 3 div,RadiusA=\pstDistAB{A}{B},DistCoef=none,RadiusB=\pstDistAB{C}{D}]{O1}{}{O2}{}{I}{J}
 \end{lstlisting}
 could be simplified to
 \begin{lstlisting}
 \pstCircleOA[Radius=\pstDistMul{A}{B}{1 3 div}]{O}{}
 \pstInterLC[Radius=\pstDistMul{A}{B}{1 3 div}]{A}{B}{O}{}{I}{J}
-\pstInterCC[RadiusA=\pstDistMul{A}{B}{1 3 div},RadiusA=\pstDistAB{C}{D}]{O1}{}{O2}{}{I}{J}
+\pstInterCC[RadiusA=\pstDistMul{A}{B}{1 3 div},RadiusB=\pstDistAB{C}{D}]{O1}{}{O2}{}{I}{J}
 \end{lstlisting}
 
 \vspace{10pt}\noindent{}{\Large{\textbf{Important}}}!
@@ -1366,7 +1367,7 @@
 The direction to find node $X$ is anti-clockwise by default.
 The parameter \Lkeyword{CurvAbsNeg}\DefaultVal{false} can change this behavior.
 
-At last, the chord length $L$ chouldn't large than the diameter of the circle,
+At last, the chord length $L$ shouldn't large than the diameter of the circle,
 else we will put the node $X$ at origin.
 
 \begin{LTXexample}[width=6cm,pos=l]
@@ -2003,6 +2004,34 @@
 
 \vspace{10pt}
 
+The Macro \Lcs{pstGeneralEllipseFFN} is used to define a General Ellipse by the given focus nodes $F_1$, $F_2$, and one node $N$ on it.
+It just calculate the center $O$, major radius $a$, minor radius $b$ and the rotation angle $\theta$ of the major axis,
+then you can pass them into macro \Lcs{pstGeneralEllipse} to draw this ellipse.
+
+\begin{BDef}
+\Lcs{pstGeneralEllipseFFN}\OptArgs\Largb{$F_1$}\Largb{$F_2$}\Largb{O}\Largb{Rab}\Largb{$\theta$}
+\end{BDef}
+
+The output parameter \texttt{O}, the output parameter \texttt{Rab} and the output parameter \texttt{$\theta$}
+are same with \Lcs{pstGeneralEllipseFle}.
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,0)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\pstGeonode[PosAngle=-90](1,1){F_1}
+\pstGeonode[PosAngle=-90](3,3){F_2}
+\pstGeonode[PosAngle=-90](1,3){F_3}
+\pstGeonode[PosAngle=-90](3,1){F_4}
+\pstGeonode[PosAngle=90](2,3){N}
+\pstGeneralEllipseFFN[linecolor=red!30,CodeFig=true]{F_1}{F_2}{N}{O}{R1}{angle1}
+\pstGeneralEllipse[linecolor=red!30](O)(R1)[angle1]
+\pstGeneralEllipseFFN[linecolor=blue!30,CodeFig=true]{F_3}{F_4}{N}{O}{R2}{angle2}
+\pstGeneralEllipse[linecolor=blue!30](O)(R2)[angle2]
+\end{pspicture}
+\end{LTXexample}
+
+\vspace{10pt}
+
 The Macro \Lcs{pstGeneralEllipseCoef} is used to define a General Ellipse by the quadratic curve equation $ax^2+bxy+cy^2+dx+ey+f=0$,
 it just calculate the center $O$, major radius $a$, minor radius $b$ and the rotation angle $\theta$ of the major axis,
 then you can pass them into macro \Lcs{pstGeneralEllipse} to draw this ellipse.
@@ -3443,6 +3472,34 @@
 
 \vspace{10pt}
 
+The Macro \Lcs{pstGeneralHyperbolaFFN} is used to define a General Hyperbola by the given focus nodes $F_1$, $F_2$, and one node $N$ on it.
+It just calculate the center $O$, major radius $a$, minor radius $b$ and the rotation angle $\theta$ of the major axis,
+then you can pass them into macro \Lcs{pstGeneralHyperbola} to draw this hyperbola.
+
+\begin{BDef}
+\Lcs{pstGeneralHyperbolaFFN}\OptArgs\Largb{$F_1$}\Largb{$F_2$}\Largb{O}\Largb{Rab}\Largb{$\theta$}
+\end{BDef}
+
+The output parameter \texttt{O}, the output parameter \texttt{Rab} and the output parameter \texttt{$\theta$}
+are same with \Lcs{pstGeneralHyperbolaFle}.
+
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid=true](0,0)(4,4)
+\psset{dotscale=0.5}\psset{PointSymbol=*}\footnotesize
+\pstGeonode[PosAngle=-90](1,1){F_1}
+\pstGeonode[PosAngle=-90](3,3){F_2}
+\pstGeonode[PosAngle=-90](1,3){F_3}
+\pstGeonode[PosAngle=-90](3,1){F_4}
+\pstGeonode[PosAngle=90](2,3){N}
+\pstGeneralHyperbolaFFN[linecolor=red!30,CodeFig=true]{F_1}{F_2}{N}{O}{R1}{angle1}
+\pstGeneralHyperbola[linecolor=red!30](O)(R1)[angle1][65]
+\pstGeneralHyperbolaFFN[linecolor=blue!30,CodeFig=true]{F_3}{F_4}{N}{O}{R2}{angle2}
+\pstGeneralHyperbola[linecolor=blue!30](O)(R2)[angle2][65]
+\end{pspicture}
+\end{LTXexample}
+
+\vspace{10pt}
+
 The Macro \Lcs{pstGeneralHyperbolaCoef} is used to define a General Hyperbola by the quadratic curve equation $ax^2+bxy+cy^2+dx+ey+f=0$,
 it just calculate the center $O$, real radius $a$ and imaginary radius $b$ and the rotation angle $\theta$ of the real axis,
 then you can pass them into macro \Lcs{pstGeneralHyperbola} to draw this hyperbola.

Modified: trunk/Master/texmf-dist/tex/generic/pst-eucl/pst-eucl.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/pst-eucl/pst-eucl.tex	2020-04-18 20:55:45 UTC (rev 54784)
+++ trunk/Master/texmf-dist/tex/generic/pst-eucl/pst-eucl.tex	2020-04-18 20:56:01 UTC (rev 54785)
@@ -20,8 +20,8 @@
 \csname PSTEuclideLoaded\endcsname
 \let\PSTEuclideLoaded\endinput
 %
-\def\fileversion{1.71}
-\def\filedate{2020/02/26}
+\def\fileversion{1.72}
+\def\filedate{2020/04/18}
 %%
 \message{`PST-Euclide v\fileversion, \filedate\space (dr,hv)}%
 %% prologue for postcript
@@ -560,12 +560,8 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %% #2 #4 #6 -> coordinates for nodes
 %% #3 #5 #7 -> nodes name
-\def\pstTriangle{\@ifnextchar[\Pst at Triangle{\Pst at Triangle[]}}
-\def\Pst at Triangle[#1]{%
-  \begingroup
-    \psset{#1}%
-    \@ifnextchar(\pstTriangle at ii{\pstTriangle at ii(0,0)}%
-}
+\def\pstTriangle{\pst at object{pstTriangle}}%
+\def\pstTriangle at i{\@ifnextchar(\pstTriangle at ii{\pstTriangle at ii(0,0)}}%
 \def\pstTriangle at ii(#1)#2(#3)#4(#5)#6{%
   \pst at killglue
   %%begin modif alaindelplanque 11/2003
@@ -628,7 +624,7 @@
   \Pst at Geonode@i[](#5){#6}%%NEW DR 15112001
   \pst at TraceTriangle{#2}{#4}{#6}%
   \egroup
-\endgroup}%
+}%
 %
 \def\pst at TraceTriangle#1#2#3{\pspolygon(#1)(#2)(#3)}%
 %
@@ -2361,6 +2357,55 @@
   \endgroup
 }%
 %
+%% \pstTriangleLC[Options]{A}{B}{C}{L}[S1][S2][S3]
+%% Draw the Lemonie of triangle ABC
+%% Parameters:
+%% #1 -> options
+%% #2 -> [input] the node A
+%% #3 -> [input] the node B
+%% #4 -> [input] the node C
+%% #5 -> [output] the output Lemoine Point L 
+%% #6 -> [output] the optional output point on BC
+%% #7 -> [output] the optional output point on CA
+%% #8 -> [output] the optional output point on AB
+\def\pstTriangleLC{\@ifnextchar[\Pst at TriangleLC{\Pst at TriangleLC[]}}
+\def\Pst at TriangleLC[#1]#2#3#4#5{%
+  \begingroup
+    \@InitListMng %
+    \psset{#1}%
+    \def\pst at triangle@node at A{#2}
+    \def\pst at triangle@node at B{#3}
+    \def\pst at triangle@node at C{#4}
+    \def\pst at triangle@node at L{#5}
+    \@ifnextchar[\Pst at TriangleLC@i{\Pst at TriangleLC@j[BC_L][CA_L][AB_L]}}
+\def\Pst at TriangleLC@i[#1][#2][#3]{%
+    \pstMiddleAB[PointName=none,PointSymbol=none]{\pst at triangle@node at B}{\pst at triangle@node at C}{BC_M}
+    \pstMiddleAB[PointName=none,PointSymbol=none]{\pst at triangle@node at C}{\pst at triangle@node at A}{CA_M}
+    \pstBisectorAOB[PointName=none,PointSymbol=none]{\pst at triangle@node at B}{\pst at triangle@node at A}{\pst at triangle@node at C}{A_T}{A_S}
+    \pstBisectorAOB[PointName=none,PointSymbol=none]{\pst at triangle@node at C}{\pst at triangle@node at B}{\pst at triangle@node at A}{B_T}{B_S}
+    \pstOrtSym[PointName=none,PointSymbol=none]{\pst at triangle@node at A}{A_T}{BC_M}[BC_LL]
+    \pstOrtSym[PointName=none,PointSymbol=none]{\pst at triangle@node at B}{B_T}{CA_M}[CA_LL]
+    \pstInterLL[PointName=none,PointSymbol=none]{\pst at triangle@node at A}{BC_LL}{\pst at triangle@node at B}{CA_LL}{\pst at triangle@node at L}
+    \pstInterLL[PointName=none,PointSymbol=none]{\pst at triangle@node at A}{\pst at triangle@node at L}{\pst at triangle@node at B}{\pst at triangle@node at C}{#1}
+    \pstInterLL[PointName=none,PointSymbol=none]{\pst at triangle@node at B}{\pst at triangle@node at L}{\pst at triangle@node at C}{\pst at triangle@node at A}{#2}
+    \pstInterLL[PointName=none,PointSymbol=none]{\pst at triangle@node at C}{\pst at triangle@node at L}{\pst at triangle@node at A}{\pst at triangle@node at B}{#3}
+    \Pst at ManageParamList{\pst at triangle@node at L}%
+    \Pst at ManageParamList{#1}%
+    \Pst at ManageParamList{#2}%
+    \Pst at ManageParamList{#3}%
+  \endgroup
+}%
+\def\Pst at TriangleLC@j[#1][#2][#3]{%
+    \pstMiddleAB[PointName=none,PointSymbol=none]{\pst at triangle@node at B}{\pst at triangle@node at C}{BC_M}
+    \pstMiddleAB[PointName=none,PointSymbol=none]{\pst at triangle@node at C}{\pst at triangle@node at A}{CA_M}
+    \pstBisectorAOB[PointName=none,PointSymbol=none]{\pst at triangle@node at B}{\pst at triangle@node at A}{\pst at triangle@node at C}{A_T}{A_S}
+    \pstBisectorAOB[PointName=none,PointSymbol=none]{\pst at triangle@node at C}{\pst at triangle@node at B}{\pst at triangle@node at A}{B_T}{B_S}
+    \pstOrtSym[PointName=none,PointSymbol=none]{\pst at triangle@node at A}{A_T}{BC_M}[BC_LL]
+    \pstOrtSym[PointName=none,PointSymbol=none]{\pst at triangle@node at B}{B_T}{CA_M}[CA_LL]
+    \pstInterLL{\pst at triangle@node at A}{BC_LL}{\pst at triangle@node at B}{CA_LL}{\pst at triangle@node at L}
+  \endgroup
+}%
+%
 %% Distance between two points
 \def\pstDist#1#2{%
   tx at EcldDict begin /N@#1 GetNode /N@#2 GetNode ABDist end



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