summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-08-26 03:00:52 +0000
committerNorbert Preining <norbert@preining.info>2022-08-26 03:00:52 +0000
commit5e668640feb9f07a14456b8e7e413db0b1ec9561 (patch)
tree9b32a658597039087b1cafad8dcac574b403102d /macros
parent38aaa5ab119dae8bf21971e84c7742b2bfc591a5 (diff)
CTAN sync 202208260300
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/README.md117
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-drawing.tex64
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-main.tex4
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-pointsSpc.tex2
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-tools.tex52
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/doc/tkz-euclide.pdfbin1104426 -> 1109613 bytes
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-euclide.cfg6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-euclide.sty8
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-lib-eu-marks.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-lib-eu-shape.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-axesmin.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-circles-by.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-circles.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-compass.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-angles.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-circles.tex30
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-lines.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-points.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-polygons.tex33
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-triangles.tex26
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-grids.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-lines.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-by.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-rnd.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-spc.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-with.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-polygons.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-protractor.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-sectors.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-show.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-triangles.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-BB.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-angles.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-base.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-colors.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-intersections.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-math.tex24
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-modules.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-text.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-utilities.tex6
-rw-r--r--macros/luatex/latex/luaquotes/README14
-rw-r--r--macros/luatex/latex/luaquotes/luaquotes-documentation.pdfbin0 -> 106000 bytes
-rw-r--r--macros/luatex/latex/luaquotes/luaquotes-documentation.tex1388
-rw-r--r--macros/luatex/latex/luaquotes/luaquotes.sty310
-rw-r--r--macros/unicodetex/latex/swungdash/README14
-rw-r--r--macros/unicodetex/latex/swungdash/swungdash-documentation.pdfbin0 -> 63795 bytes
-rw-r--r--macros/unicodetex/latex/swungdash/swungdash-documentation.tex121
-rw-r--r--macros/unicodetex/latex/swungdash/swungdash.sty34
49 files changed, 2153 insertions, 268 deletions
diff --git a/macros/latex/contrib/tkz/tkz-euclide/README.md b/macros/latex/contrib/tkz/tkz-euclide/README.md
index 55940008e7..cbb72b3cb6 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/README.md
+++ b/macros/latex/contrib/tkz/tkz-euclide/README.md
@@ -1,6 +1,6 @@
# tkz-euclide — for euclidean geometry
-Release 4.22c 2022/07/28
+Release 4.23c 2022/08/2
## Description
@@ -44,9 +44,7 @@ your LaTeX document:
\usepackage{tkz-euclide}
\begin{document}
\begin{tikzpicture}
-```
-your code
-```
+ your code
\end{tikzpicture}
```
@@ -69,63 +67,66 @@ Other examples, in French, are on my site.
## History
-
-- 4.22c. Correction of a bug in the macro \tkzMarkAngle;
- Correction of the documentation:
- Remove options R,diameter of the macro \tkzDrawCircle. To draw a circle you must use two points: the center and a point of the circle.
-
- \tkzDefPointOnCircle :
+- 4.23c. Correction of a bug in the macro `\tkzDrawSemiCircle`,
+ Modification of `\tkzDefRadicalAxis`,
+ Remove old codes,
+ Correction of the documentation;
+- 4.22c. Correction of a bug in the macro `\tkzMarkAngle`;
+ Correction of the documentation:
+ Remove options R, diameter of the macro `\tkzDrawCircle`. To draw a circle you must use two points: the center and a point of the circle.
+ `\tkzDefPointOnCircle` :
forgotten "in rad" in the documentation
-Complément dans la documentation pour la macro \tkzDefCircle[R](....). On peut utiliser soit \tkzGetPoints{o}{x} ou soit \tkzGetPoints{x}.
+Complement in the documentation for the macro `\tkzDefCircle[R](....)`. You can use either `\tkzGetPoints{o}{x}` or either `\tkzGetPoints{x}`.
+
- 4.21c the package archive was corrupted, all the "|" disappeared ...
- 4.2c.
- Now \tkzDefCircle gives two points as results: the center of the circle and a point of the circle. When a point of the circle is known, it is enough to use \tkzGetPoint or \tkzGetFirstPoint
- to get the center, otherwise \tkzGetPoints will give you the center and a point of the circle. You can always get the length of the radius with \tkzGetLength . I wanted to favor working with nodes and banish the appearance of numbers in the code.
+ Now `\tkzDefCircle` gives two points as results: the center of the circle and a point of the circle. When a point of the circle is known, it is enough to use `\tkzGetPoint` or `\tkzGetFirstPoint`
+ to get the center, otherwise `\tkzGetPoints` will give you the center and a point of the circle. You can always get the length of the radius with `\tkzGetLength` . I wanted to favor working with nodes and banish the appearance of numbers in the code.
- In order to isolate the definitions, I deleted or modified certain macros which are: \tkzDrawLine , \tkzDrawTriangle , \tkzDrawCircle , \tkzDrawSemiCircle and \tkzDrawRectangle ;
+ In order to isolate the definitions, I deleted or modified certain macros which are: `\tkzDrawLine` , `\tkzDrawTriangle` , `\tkzDrawCircle` , `\tkzDrawSemiCircle` and `\tkzDrawRectangle` ;
- Thus \tkzDrawSquare(A,B) becomes \tkzDefSquare(A,B) \tkzGetPoints{C}{D} then
+ Thus `\tkzDrawSquare(A,B)` becomes `\tkzDefSquare(A,B)` `\tkzGetPoints{C}{D}` then
- \tkzDrawPolygon(A,B,C,D) ;
+ `\tkzDrawPolygon(A,B,C,D)` ;
If you want to draw a circle, you can't do so \tkzDrawCircle[R](A,1) . First you have to define the point through which the circle passes, so you have to do
- \tkzDefCircle[R](A,1) \tkzGetPoint{a} and finally \tkzDrawCircle(A,a) . Another possibilty is to define a point on the circle \tkzDefShiftPoint[A](1,O){a} ;
+ `\tkzDefCircle[R](A,1)` `\tkzGetPoint{a}` and finally `\tkzDrawCircle(A,a)` . Another possibilty is to define a point on the circle `\tkzDefShiftPoint[A](1,O){a}` ;
- The following macros tkzDefCircleBy[orthogonal through] and \tkzDefCircleBy[orthogonal from] become tkzDefCircle[orthogonal through] and \tkzDefCircle[orthogonal from] ;
+ The following macros `\tkzDefCircleBy[orthogonal through]` and `\tkzDefCircleBy[orthogonal from]` become `\tkzDefCircle[orthogonal through]` and `\tkzDefCircle[orthogonal from]` ;
- \tkzDefLine[euler](A,B,C) is a macro that allows you to obtain the line of \tkzname{Euler} when possible. \tkzDefLine[altitude](A,B,C) is possible again, as well as \tkzDefLine[tangent at=A](O) and \tkzDefLine[tangent from=P](O,A) which did not works;
+ `\tkzDefLine[euler](A,B,C)` is a macro that allows you to obtain the line of `Euler` when possible. `\tkzDefLine[altitude](A,B,C)` is possible again, as well as `\tkzDefLine[tangent at=A](O)` and `\tkzDefLine[tangent from=P](O,A)` which did not works;
- \tkzDefTangent is replaced by \tkzDelLine[tangent from = ...] or \tkzDelLine[tangent at = ...]
+ `\tkzDefTangent` is replaced by \tkzDelLine[tangent from = ...] or \tkzDelLine[tangent at = ...]
- I added the macro \tkzPicAngle[tikz options](A,B,C) for those who prefer to use \TIKZ\ .
+ I added the macro `\tkzPicAngle[tikz options](A,B,C)` for those who prefer to use TIKZ.
- The order of the arguments of the macro \tkzcname{tkzDefPointOnCircle} has changed: now it is center, angle and point or radius.
- I have added two options for working with radians which are \tkzname{through in rad} and \tkzname{R in rad}.
+ The order of the arguments of the macro `\tkzDefPointOnCircle` has changed: now it is center, angle and point or radius.
+ I have added two options for working with radians which are `through in rad` and `R in rad`.
- I added the option \tkzname{reverse} to the arcs paths. This allows to reverse the path and to reverse if necessary the arrows that would be present.
+ I added the option `reverse` to the arcs paths. This allows to reverse the path and to reverse if necessary the arrows that would be present.
- I have unified the styles for the labels. There is now only \tkzname{label style} left which is valid for points, segments, lines, circles and angles. I have deleted \tkzname{label seg style} \tkzname{label line style} and \tkzname{label angle style}
+ I have unified the styles for the labels. There is now only `label style` left which is valid for points, segments, lines, circles and angles. I have deleted `label seg style``{label line style` and `label angle style`
- I added the macro tkzFillAngles to use several angles.
+ I added the macro `\tkzFillAngles` to use several angles.
- Correction option \tkzname{return} witk \tkzcname{tkzProtractor}
+ Correction option `return` with `tkzProtractor`
As a reminder, the following changes have been made previously:
- \tkzDrawMedian , \tkzDrawBisector , \tkzDrawAltitude , \tkzDrawMedians , \tkzDrawBisectors et \tkzDrawAltitudes do not exist anymore. The creation and drawing separation is not respected so it is preferable to first create the coordinates of these points with \tkzDefSpcTriangle[median] and then to choose the ones you are going to draw with \tkzDrawSegments or \tkzDrawLines ;
+ `\tkzDrawMedian` , `\tkzDrawBisector` , `\tkzDrawAltitude` , `\tkzDrawMedians` , \tkzDrawBisectors et \tkzDrawAltitudes do not exist anymore. The creation and drawing separation is not respected so it is preferable to first create the coordinates of these points with \tkzDefSpcTriangle[median] and then to choose the ones you are going to draw with \tkzDrawSegments or \tkzDrawLines ;
- \tkzDrawTriangle has been deleted. \tkzDrawTriangle[equilateral] was handy but it is better to get the third point with \tkzDefTriangle[equilateral] and then draw with \tkzDrawPolygon ; idem for \tkzDrawSquare and \tkzDrawGoldRectangle ;
+ `\tkzDrawTriangle` has been deleted. `\tkzDrawTriangle[equilateral]` was handy but it is better to get the third point with `\tkzDefTriangle[equilateral]` and then draw with `\tkzDrawPolygon` ; idem for `\tkzDrawSquare` and `\tkzDrawGoldRectangle` ;
The circle inversion was badly defined so I rewrote the macro. The input arguments are always the center and a point of the circle, the output arguments are the center of the image circle and a point of the image circle or two points of the image line if the antecedent circle passes through the pole of the inversion. If the circle passes the inversion center, the image is a straight line, the validity of the procedure depends on the choice of the point on the antecedent circle;
@@ -139,66 +140,66 @@ Complément dans la documentation pour la macro \tkzDefCircle[R](....). On peut
Correction option isoceles right;
- \tkzDefMidArc(O,A,B) gives the middle of the arc center $O$ from $A$ to $B$;
+ `\tkzDefMidArc(O,A,B)` gives the middle of the arc center $O$ from $A$ to $B$;
Good news : Some useful tools have been added. They are present on an experimental basis and will undoubtedly need to be improved;
- The options "orthogonal from and through" depend now of \tkzcname{tkzDefCircleBy}
+ The options "orthogonal from and through" depend now of `tkzDefCircleBy`
- \tkzDotProduct(A,B,C) computes the scalar product in an orthogonal reference system of the vectors $\overrightarrow{A,B}$ and $\overrightarrow{A,C}$.
+ `\tkzDotProduct(A,B,C)` computes the scalar product in an orthogonal reference system of the vectors $\overrightarrow{A,B}$ and $\overrightarrow{A,C}$.
- \tkzDotProduct(A,B,C)=aa'+bb' if vec{AB} =(a,b) and vec{AC} =(a',b')
+ `\tkzDotProduct(A,B,C)=aa'+bb' if vec{AB} =(a,b) and vec{AC} =(a',b')`
- \tkzPowerCircle(A)(B,C) power of point $A$ with respect to the circle of center $B$ passing through $C$;
+ `\tkzPowerCircle(A)(B,C)` power of point $A$ with respect to the circle of center $B$ passing through $C$;
- \tkzDefRadicalAxis(A,B)(C,D) Radical axis of two circles of center $A$ and $C$;
+ `\tkzDefRadicalAxis(A,B)(C,D)` Radical axis of two circles of center $A$ and $C$;
- Some tests : \tkzIsOrtho(A,B,C) and \tkzIsLinear(A,B,C) The first indicates whether the lines $(A,B)$ and $(A,C)$ are orthogonal. The second indicates whether the points $A$, $B$ and $C$ are aligned;
+ Some tests : `\tkzIsOrtho(A,B,C)` and `\tkzIsLinear(A,B,C)` The first indicates whether the lines AB and AC are orthogonal. The second indicates whether the points $A$, $B$ and $C$ are aligned;
- \tkzIsLinear(A,B,C) if $A$,$B$,$C$ are aligned then \tkzLineartrue
- you can use \iftkzLinear (idem for \tkzIsOrtho );
+ `\tkzIsLinear(A,B,C)` if A, B, C are aligned then \tkzLineartrue
+ you can use `\iftkzLinear` (idem for `\tkzIsOrtho` );
A style for vectors has been added that you can of course modify
- tikzset{vector style/.style={>=Latex,->}} ;
+ `\tikzset{vector style/.style={>=Latex,->}}` ;
Now it's possible to add an arrow on a line or a circle with the option tkz arrow .
- 4.05b
- \tkzInterLC new option near new method to choice the points
- \tkzInterCC new method to choice the points
- \tkzDefTangent add method to choice the points
- \tkzTestInterLC and \iftkzFlagLC
- \tkzTestInterLC and \iftkzFlagCC
+ `\tkzInterLC` new option near new method to choice the points
+ `\tkzInterCC` new method to choice the points
+ `\tkzDefTangent` add method to choice the points
+ `\tkzTestInterLC` and `\iftkzFlagLC`
+ `\tkzTestInterLC` and `\iftkzFlagCC`
- \tkzDefHarmonic option ext int both then node or R
- \tkzDefGoldenRatio new macro
- \tkzSwapPoints Exchange two points
- \tkzPermute Permutation of two points of a triangle
- \tkzDefPointsBy option rotation with nodes no need to know the angle
- \tkzMarkArc and \tkzLabelArc
+ `\tkzDefHarmonic` option ext int both then node or R
+ ` \tkzDefGoldenRatio` new macro
+ `\tkzSwapPoints` Exchange two points
+ `\tkzPermute ` Permutation of two points of a triangle
+ `\tkzDefPointsBy` option rotation with nodes no need to know the angle
+ ` \tkzMarkArc` and `\tkzLabelArc`
- \tkzDefPointOnCircle[angle=30,center=K1,radius=\rAp] becomes
- \tkzDefPointOnCircle[R= angle 30 center K1 radius \rAp]
- Added \tkzDefPointOnCircle[through= angle 30 center K1 point \rAp]
+ `\tkzDefPointOnCircle[angle=30,center=K1,radius=\rAp]` becomes
+ `\tkzDefPointOnCircle[R= angle 30 center K1 radius \rAp]`
+ Added `\tkzDefPointOnCircle[through= angle 30 center K1 point \rAp]`
Added some styles to place arrow "tkz arrow" and "tkz arrows"
Added " line cap =round" and "line join =round" to all the constructions
Added information about angles in the documentation
- 4.03 Adaptation of the code and documentation to the changes of the macros for the intersections.
- 4.02
- Major changes for the macros concerning the intersection of a line and a circle or two circles. If one point of the intersection is known then you can use the "common" option and indicate what the common point is. The second point is given in tkzFirstPointResult.
- In other cases, for the intersection of two circles the determined points form angles with the centers of the circles. One of the angles measures less than 180 degrees and the other more than 180. The smaller one determines tkzFirstPointResult.
+ Major changes for the macros concerning the intersection of a line and a circle or two circles. If one point of the intersection is known then you can use the "common" option and indicate what the common point is. The second point is given in `tkzFirstPointResult`.
+ In other cases, for the intersection of two circles the determined points form angles with the centers of the circles. One of the angles measures less than 180 degrees and the other more than 180. The smaller one determines `tkzFirstPointResult`.
For the intersection of a line and a circle, the method is the same except that the angle is formed by a point on the line and the center of the circle.
- 4.01
- \tkzDefOrthogonalCircle was defined twice so I deleted the version in tkz-obj-eu-circles-by
+ `\tkzDefOrthogonalCircle` was defined twice so I deleted the version in tkz-obj-eu-circles-by
In the tkz-obj-eu-draw-lines.tex new code for add dim from muzimuzhi Z.
The code comes from an answer on the site tex.stackexchange.com
@@ -210,9 +211,9 @@ Complément dans la documentation pour la macro \tkzDefCircle[R](....). On peut
Added option "swap" useful with golden, gold, school, half, pythagoras
- In the file tkz-obj-eu-circles correction of bug in \tkzDefOrthoThroughCircle : \tkz@@CalcLength has been replaced by \tkz@@CalcLengthcm
+ In the file tkz-obj-eu-circles correction of bug in `\tkzDefOrthoThroughCircle` : `\tkz@@CalcLength` has been replaced by `\tkz@@CalcLengthcm `
- Addition of the macro \tkzDefGoldenRatio in tkz-obj-eu-points-spc. It allows to split a segment with a ratio equal to the golden ratio
+ Addition of the macro `\tkzDefGoldenRatio` in tkz-obj-eu-points-spc. It allows to split a segment with a ratio equal to the golden ratio
Minor corrections of the documentation. New examples about option "dim"
diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-drawing.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-drawing.tex
index 917ea41008..656625cd4e 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-drawing.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-drawing.tex
@@ -621,24 +621,18 @@ Based on an idea by O. Reboux made with pst-eucl (Pstricks module) by D. Rodrigu
\newpage
\subsection{Drawing semicircle}
-\begin{NewMacroBox}{tkzDrawSemiCircle}{\oarg{local options}\parg{A,B}}%
+\begin{NewMacroBox}{tkzDrawSemiCircle}{\oarg{local options}\parg{O,A}}%
\medskip
\begin{tabular}{lll}%
\toprule
arguments & example & explanation \\
\midrule
-\TAline{\parg{pt1,pt2}}{\parg{O,A}} {radius}
+\TAline{\parg{pt1,pt2}}{\parg{O,A}} {OA= radius}
\bottomrule
\end{tabular}
-\medskip
-\begin{tabular}{lll}%
-\toprule
-options & default & definition \\
-\midrule
-\TOline{through} {through}{circle characterized by two points defining a radius}
-\end{tabular}
+$O$ center $A$ extremity of the semicircle
\end{NewMacroBox}
\subsubsection{Use of \tkzcname{tkzDrawSemiCircle}}
@@ -646,21 +640,12 @@ options & default & definition \\
\begin{tkzexample}[latex=7cm,small]
\begin{tikzpicture}
\tkzDefPoint(0,0){A} \tkzDefPoint(6,0){B}
- \tkzDefSquare(A,B) \tkzGetPoints{C}{D}
- \tkzDrawPolygon(B,C,D,A)
- \tkzDefPoint(3,6){F}
- \tkzDefTriangle[equilateral](C,D)
- \tkzGetPoint{I}
- \tkzDefPointBy[projection=onto B--C](I)
- \tkzGetPoint{J}
- \tkzInterLL(D,B)(I,J) \tkzGetPoint{K}
- \tkzDefPointBy[symmetry=center K](B)
- \tkzGetPoint{M}
- \tkzDrawCircle(M,I)
- \tkzCalcLength(M,I) \tkzGetLength{dMI}
- \tkzDrawPolygon(A,B,C,D)
- \tkzDrawSemiCircle(F,D)
-\end{tikzpicture}
+ \tkzDefMidPoint(A,B) \tkzGetPoint{O}
+ \tkzDrawSemiCircle[blue](O,B)
+ \tkzDrawSemiCircle[red](O,A)
+ \tkzDrawPoints(O,A,B)
+ \tkzLabelPoints[below right](O,A,B)
+ \end{tikzpicture}
\end{tkzexample}
\subsection{Drawing semicircles}
@@ -676,15 +661,30 @@ arguments & example & explanation \\
\bottomrule
\end{tabular}
-\medskip
-\begin{tabular}{lll}%
-\toprule
-options & default & definition \\
-\midrule
-\TOline{through}{through}{circle with two points defining a radius}
- \bottomrule
-\end{tabular}
\end{NewMacroBox}
+
+\subsubsection{Use of \tkzcname{tkzDrawSemiCircles} : Golden arbelos}
+
+\begin{tkzexample}[latex=7cm,small]
+\begin{tikzpicture}[scale=.75]
+\tkzDefPoints{0/0/A,10/0/B}
+\tkzDefGoldenRatio(A,B) \tkzGetPoint{C}
+\tkzDefMidPoint(A,B) \tkzGetPoint{O_0}
+\tkzDefMidPoint(A,C) \tkzGetPoint{O_1}
+\tkzDefMidPoint(C,B) \tkzGetPoint{O_2}
+\tkzLabelPoints(A,B,C)
+\tkzDrawSegment(A,B)
+\tkzDrawPoints(A,B,C)
+\begin{scope}[local bounding box = graph]
+ \tkzDrawSemiCircles[color=black](O_0,B)
+\end{scope}
+\useasboundingbox (graph.south west) rectangle (graph.north east);
+\tkzClipCircle[out](O_1,C)\tkzClipCircle[out](O_2,B)
+\tkzDrawSemiCircles[draw=none,fill=teal!15](O_0,B)
+\tkzDrawSemiCircles[color=black](O_1,C O_2,B)
+\end{tikzpicture}
+\end{tkzexample}
+
%<---------------------------------------------------------------------------->
% ARC
%<---------------------------------------------------------------------------->
diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-main.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-main.tex
index e730bbd966..e7a64f31bd 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-main.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-main.tex
@@ -22,10 +22,10 @@
]{tkz-doc}
%\usepackage{etoc}
\gdef\tkznameofpack{tkz-euclide}
-\gdef\tkzversionofpack{4.22c}
+\gdef\tkzversionofpack{4.23c}
\gdef\tkzdateofpack{\today}
\gdef\tkznameofdoc{doc-tkz-euclide}
-\gdef\tkzversionofdoc{4.22c}
+\gdef\tkzversionofdoc{4.23c}
\gdef\tkzdateofdoc{\today}
\gdef\tkzauthorofpack{Alain Matthes}
\gdef\tkzadressofauthor{}
diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-pointsSpc.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-pointsSpc.tex
index 3755cb8e32..fa18a677b6 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-pointsSpc.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-pointsSpc.tex
@@ -405,8 +405,6 @@ options & default & definition \\
\end{NewMacroBox}
-
-
\subsubsection{Using \tkzcname{tkzDefEquiPoints} with options}
\begin{tkzexample}[latex=7cm,small]
\begin{tikzpicture}
diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-tools.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-tools.tex
index f91ec9445a..979801aa33 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-tools.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-tools.tex
@@ -338,7 +338,7 @@ arguments & example & explanation \\
\end{tkzexample}
% subsubsection cocyclicpts (end)
-
+\newpage
\subsection{Power of a point with respect to a circle}
\begin{NewMacroBox}{tkzPowerCircle}{\parg{$pt1$}\parg{$pt2$,$pt3$}}%
@@ -406,6 +406,56 @@ arguments & example & explanation \\
\end{tkzexample}
% subsubsection two_circles_disjointed (end)
+\subsection{Two intersecting circles} % (fold)
+\label{sub:two_intersecting_circles}
+\begin{tkzexample}[small,latex=8cm]
+\begin{tikzpicture}[scale=.5]
+ \tkzDefPoints{-1/0/A,0/2/B,3/-1/C,3/-2/D}
+ \tkzDrawCircles(A,C B,D)
+ \tkzDefRadicalAxis(A,C)(B,D)
+ \tkzGetPoints{E}{F}
+ \tkzDrawPoints(A,B,C,D,E,F)
+ \tkzLabelPoints(A,B,C,D,E,F)
+ \tkzDrawLine[add=.5 and 1](E,F)
+ \tkzDrawLine[add=.25 and .25](A,B)
+\end{tikzpicture}
+\end{tkzexample}
+% subsection two_intersecting_circles (end)
+
+
+\subsection{Two externally tangent circles} % (fold)
+\label{sub:two_externally_tangent_circles}
+\begin{tkzexample}[small,latex=8cm]
+\begin{tikzpicture}[scale=.5]
+ \tkzDefPoints{0/0/A,4/0/B,6/0/C}
+ \tkzDrawCircles(A,B C,B)
+ \tkzDefRadicalAxis(A,B)(C,B)
+ \tkzGetPoints{E}{F}
+ \tkzDrawPoints(A,B,C,E,F)
+ \tkzLabelPoints(A,B,C,E,F)
+ \tkzDrawLine[add=1 and 1](E,F)
+ \tkzDrawLine[add=.5 and .5](A,B)
+\end{tikzpicture}
+\end{tkzexample}
+% subsection two_externally_tangent_circles (end)
+
+
+\subsection{Two circles tangent internally} % (fold)
+\label{sub:deux_cercles_tangents_interieurement}
+\begin{tkzexample}[small,latex=8cm]
+\begin{tikzpicture}[scale=.5]
+ \tkzDefPoints{0/0/A,3/0/B,5/0/C}
+ \tkzDrawCircles(A,C B,C)
+ \tkzDefRadicalAxis(A,C)(B,C)
+ \tkzGetPoints{E}{F}
+ \tkzDrawPoints(A,B,C,E,F)
+ \tkzLabelPoints[below right](A,B,C,E,F)
+ \tkzDrawLine[add=1 and 1](E,F)
+ \tkzDrawLine[add=.5 and .5](A,B)
+\end{tikzpicture}
+\end{tkzexample}
+% subsection deux_cercles_tangents_interieurement (end)
+
\subsubsection{Three circles} % (fold)
\label{ssub:threecircles}
diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/tkz-euclide.pdf b/macros/latex/contrib/tkz/tkz-euclide/doc/tkz-euclide.pdf
index 075cafbc9c..a5b345a032 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/doc/tkz-euclide.pdf
+++ b/macros/latex/contrib/tkz/tkz-euclide/doc/tkz-euclide.pdf
Binary files differ
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-euclide.cfg b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-euclide.cfg
index 4ec6248cd9..edc0ba7163 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-euclide.cfg
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-euclide.cfg
@@ -16,9 +16,9 @@
% and save the file in a directory part of your TEXINPUTS environment
% variable.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-euclide.cfg}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-euclide.cfg}
%<------ colors ---------------------------------------–>
\def\tkz@backgroundcolor{white}
\def\tkz@textcolor{black}
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-euclide.sty b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-euclide.sty
index bbc28c8539..d0809c03d6 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-euclide.sty
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-euclide.sty
@@ -10,11 +10,11 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
%-------------------------------------------------------------------------------
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-euclide.sty}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-euclide.sty}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{tkz-euclide}[ 2022/07/28 4.22c for pure Euclidean Geometry ]
+\ProvidesPackage{tkz-euclide}[ 2022/08/24 4.23c for pure Euclidean Geometry ]
\@ifpackageloaded{tkz-base}{
\newdimen\tkzRadius
\newdimen\tkzLength
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-lib-eu-marks.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-lib-eu-marks.tex
index ca0a4832a8..8c68a1907b 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-lib-eu-marks.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-lib-eu-marks.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-lib-eu-marks.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-lib-eu-marks.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% Création des symboles
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-lib-eu-shape.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-lib-eu-shape.tex
index 374de1e011..6cc8ff8a5f 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-lib-eu-shape.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-lib-eu-shape.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-lib-eu-shape.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-lib-eu-shape.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% Création des symboles
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-axesmin.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-axesmin.tex
index 683c981473..a531950473 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-axesmin.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-axesmin.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-obj-eu-axesmin}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-obj-eu-axesmin}
\makeatletter
\def\removedot#1.{#1}
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-circles-by.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-circles-by.tex
index a06fef74e7..5d862112ae 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-circles-by.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-circles-by.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-obj-eu-circles.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-obj-eu-circles.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% tkzCircle center and one point
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-circles.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-circles.tex
index a58f844db7..00ee862dd5 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-circles.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-circles.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-obj-eu-circles.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-obj-eu-circles.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% tkzCircle center and one point
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-compass.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-compass.tex
index 66ffc29b37..798e2ee22b 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-compass.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-compass.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-obj-eu-compass.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-obj-eu-compass.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% Author Alain Matthes
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-angles.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-angles.tex
index aa99621c12..f0887fb529 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-angles.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-angles.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-tool-eu-angles.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-tool-eu-angles.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% tkzSetUpArc
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-circles.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-circles.tex
index 333521c447..461b383bea 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-circles.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-circles.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-obj-eu-draw-circles.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-obj-eu-draw-circles.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% tkzSetUpCircle
@@ -72,27 +72,17 @@
}%
%<--------------------------------------------------------------------------–>
% #2 #3 rayon
-\pgfkeys{/tkzdrawsc/.cd,
- swap/.is if = tkz@swap@sc,
- swap/.default = true,
- swap = false,
-/tkzdrawsc/.search also={/tikz}
-}
+
\def\tkzDrawSemiCircle{\pgfutil@ifnextchar[{\tkz@DrawSemiCircle}{%
\tkz@DrawSemiCircle[]}}
\def\tkz@DrawSemiCircle[#1](#2,#3){%
\begingroup
-\pgfqkeys{/tkzdrawsc}{#1}
- \tkzDefPointBy[symmetry=center #2](#3)
- \pgfnodealias{tkz@pt}{tkzPointResult}
- \iftkz@swap@sc
- \gdef\tkz@FirstPoint{tkz@pt}
- \gdef\tkz@SecondPoint{#3}
- \else
- \gdef\tkz@FirstPoint{#3}
- \gdef\tkz@SecondPoint{tkz@pt}
-\fi
- \tkzDrawArc[#1,delta=0](#2,\tkz@FirstPoint)(\tkz@SecondPoint)
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}%
+ {\pgfpointanchor{#3}{center}}%
+ \tkz@ax=\pgf@x%
+ \tkz@ay=\pgf@y%
+ \path(#2)--++(-\tkz@ax,-\tkz@ay)coordinate (tkz@pt);
+ \tkzDrawArc[#1,delta=0](#2,#3)(tkz@pt)
\endgroup
}%
%<--------------------------------------------------------------------------–>
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-lines.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-lines.tex
index 31c69f0810..f35e8ba175 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-lines.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-lines.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-obj-eu-draw-lines.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-obj-eu-draw-lines.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-points.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-points.tex
index ea5c5969ef..40efaa8ebd 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-points.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-points.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-obj-eu-points.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-obj-eu-points.tex}
\makeatletter
%<--------------------------------------------------------------------------->
% tkzSetUpPoint définit la forme d'un point
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-polygons.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-polygons.tex
index 673426d066..ffbe869c3b 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-polygons.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-polygons.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-obj-eu-polygons.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-obj-eu-polygons.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% Polygon
@@ -61,33 +61,6 @@
\endgroup
}
%<--------------------------------------------------------------------------–>
- % \def\tkzDrawSquare{\pgfutil@ifnextchar[{\tkz@DrawSquare}{\tkz@DrawSquare[]}}
- % \def\tkz@DrawSquare[#1](#2,#3){%
- % \begingroup
- % \tkzDefSquare(#2,#3)
- % \tkzDrawPolygon[#1](#2,#3,tkzFirstPointResult,tkzSecondPointResult)
- % \endgroup
- % }
- %<--------------------------------------------------------------------------–>
- % \def\tkzDrawRectangle{\pgfutil@ifnextchar[{\tkz@DrawRectangle}%
- % {\tkz@DrawRectangle[]}}
- % \def\tkz@DrawRectangle[#1](#2,#3){%
- % \begingroup
- % \draw[line join=round,#1](#2) -| (#3) -| (#2);
- % \endgroup
- % }
-%<-------------------------- gold rectangle -------------------------------–>
-%
-%<--------------------------------------------------------------------------–>
- % \def\tkzDrawGoldRectangle{\pgfutil@ifnextchar[{\tkz@DrawGoldRectangle}{%
- % \tkz@DrawGoldRectangle[]}}
- % \def\tkz@DrawGoldRectangle[#1](#2,#3){
- % \begingroup
- % \tkzDefGoldRectangle(#2,#3)
- % \tkzDrawPolygon[#1](#2,#3,tkzFirstPointResult,tkzSecondPointResult)
- % \endgroup
- % }
- % \let\tkzDrawGoldenRectangle\tkzDrawGoldRectangle
%<-------------- Labels for Regular Polygon -------------------------–>
%
%<--------------------------------------------------------------------------–>
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-triangles.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-triangles.tex
index 55c0ab541d..e69e98bb8b 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-triangles.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-triangles.tex
@@ -10,33 +10,13 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-obj-eu-draw-triangles.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-obj-eu-draw-triangles.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% Draw Triangles
%<--------------------------------------------------------------------------–>
-% \def\tkz@numdtr{0}
-% \pgfkeys{/drawtriangle/.cd,
-% equilateral/.code = {\def\tkz@numdtr{0}},
-% half/.code = {\def\tkz@numdtr{1}},
-% pythagore/.code = {\def\tkz@numdtr{2}},
-% pythagoras/.code = {\def\tkz@numdtr{2}},
-% egyptian/.code = {\def\tkz@numdtr{2}},
-% school/.code = {\def\tkz@numdtr{3}},
-% golden/.code = {\def\tkz@numdtr{4}},
-% sublime/.code = {\def\tkz@numdtr{4}},
-% euclid/.code = {\def\tkz@numdtr{5}},
-% gold/.code = {\def\tkz@numdtr{6}},
-% cheops/.code = {\def\tkz@numdtr{7}},
-% two angles/.code args = {#1 and #2}{\def\tkz@numdtr{8}%
-% \def\tkz@alpha{#1}%
-% \def\tkz@beta{#2}},
-% isosceles right/.code = {\def\tkz@numdtr{9}},
-% equilateral,
-% /drawtriangle/.search also={/tikz}
-% }
\def\tkzDrawTriangle{\pgfutil@ifnextchar[{\tkz@DrawTriangle}{%
\tkz@DrawTriangle[]}}
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-grids.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-grids.tex
index f7f6aa64c8..95f19c7c29 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-grids.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-grids.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-obj-eu-grids.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-obj-eu-grids.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% Setup Grid
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-lines.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-lines.tex
index aaf7b7e69d..71e378e84c 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-lines.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-lines.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-obj-eu-lines.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-obj-eu-lines.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% les lignes
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-by.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-by.tex
index 18915ae4b2..aed6a12e9e 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-by.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-by.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-tools-eu-points-by.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-tools-eu-points-by.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% Transformations Géométriques
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-rnd.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-rnd.tex
index 3b472c26ee..c18a28af4e 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-rnd.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-rnd.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-obj-eu-points-rnd.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-obj-eu-points-rnd.tex}
%<--------------------------------------------------------------------------–>
\makeatletter
%<-------------------------------------------------------------------------–>
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-spc.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-spc.tex
index 9442e39be0..b3ad0bb95c 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-spc.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-spc.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-obj-eu-points.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-obj-eu-points.tex}
\makeatletter
%add ExCenter
%<--------------------------------------------------------------------------–>
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-with.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-with.tex
index 3ba25a9e34..98c9743390 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-with.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-with.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-obj-eu-points-with.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-obj-eu-points-with.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% Vectors
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points.tex
index 9d36b72260..12b6027083 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-obj-eu-points.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-obj-eu-points.tex}
\makeatletter
%<--------------------------------------------------------------------------->
% init def point
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-polygons.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-polygons.tex
index 7d256376dc..ab9d8888ea 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-polygons.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-polygons.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-obj-eu-polygons.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-obj-eu-polygons.tex}
% bug in regular polygon side 2020/03/09
\makeatletter
%<--------------------------------------------------------------------------–>
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-protractor.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-protractor.tex
index 4b462b5768..df7dd1ca58 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-protractor.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-protractor.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-obj-eu-protractor.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-obj-eu-protractor.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% !!! idea from Y. Combe !!!
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-sectors.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-sectors.tex
index c36a3e6e2c..6eb8673f2b 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-sectors.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-sectors.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-obj-eu-sectors.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-obj-eu-sectors.tex}
\makeatletter
%<----------------------- Sectors ------------------------------–>
\gdef\tkz@nums{0}
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-show.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-show.tex
index 7ae5b6cfe0..0bd45134fd 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-show.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-show.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-obj-eu-show.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-obj-eu-show.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% finding specific points in a triangle
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-triangles.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-triangles.tex
index 40a8720f62..561d10a73a 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-triangles.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-triangles.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-obj-eu-triangles.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-obj-eu-triangles.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% Triangle Equilateral
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-BB.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-BB.tex
index d55bdbffe8..b57babfad2 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-BB.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-BB.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-obj-eu-BB.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-obj-eu-BB.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
\def\tkzShowBB{\pgfutil@ifnextchar[{\tkz@ShowBB}{\tkz@ShowBB[]}}
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-angles.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-angles.tex
index ee71462147..c6d53f45b5 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-angles.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-angles.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-tools-eu-angles.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-tools-eu-angles.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
%<--------------------------------------------------------------------------–>
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-base.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-base.tex
index 0a625121ba..c25bbce3f5 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-base.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-base.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-tools-eu-base.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-tools-eu-base.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
\global\let\tkz@tmp@xa\tkz@init@xmin% modif 2016
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-colors.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-colors.tex
index 18efe2a1d0..6ef432e06d 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-colors.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-colors.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-tools-eu-colors}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-tools-eu-colors}
\makeatletter
%<------ Initialisation of the colors with tkzSetUpColors ----------------->
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-intersections.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-intersections.tex
index c233f9d036..553196362b 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-intersections.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-intersections.tex
@@ -13,9 +13,9 @@
% The Current Maintainer of this work is Alain Matthes.
% utf8 encoding
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-tools-eu-intersections.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-tools-eu-intersections.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% intersection de deux lignes
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-math.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-math.tex
index 4c088a8cba..be764238f2 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-math.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-math.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-tools-eu-math.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-tools-eu-math.tex}
\makeatletter
%<-------------------------------------------------------------------------->
% \tkzpointnormalised#
@@ -194,11 +194,21 @@
%<---------------------------------------------------------–>
\def\tkzDefRadicalAxis(#1,#2)(#3,#4){%
\begingroup
-\tkz@@CalcLengthcm(#1,#3){tkz@da}
+\tkz@@CalcLengthcm(#1,#3){tkz@d}
\tkz@@CalcLengthcm(#1,#2){tkz@ra}
\tkz@@CalcLengthcm(#3,#4){tkz@rb}
-\edef\tkzMathResult{\fpeval{(\tkz@ra+\tkz@rb)}}
-\ifdim \tkzMathResult pt < \tkz@da pt\relax%
+\edef\tkzMathResult{\fpeval{\tkz@d-(\tkz@ra+\tkz@rb)}}
+\edef\tkzMathResultb{\fpeval{abs(\tkz@d-(\tkz@ra+\tkz@rb))}}
+\edef\tkzMathResultc{\fpeval{abs(\tkz@d-abs(\tkz@ra-\tkz@rb))}}
+\ifdim \tkzMathResultc pt < 0.1 pt\relax%
+ \tkzURotateAngle(#2,90)(#3) \tkzGetPoint{tkzFirstPointResult}
+ \tkzURotateAngle(#2,-90)(#3) \tkzGetPoint{tkzSecondPointResult}
+\else
+\ifdim \tkzMathResultb pt < 0.1 pt\relax%
+ \tkzURotateAngle(#2,90)(#3) \tkzGetPoint{tkzFirstPointResult}
+ \tkzURotateAngle(#2,-90)(#3) \tkzGetPoint{tkzSecondPointResult}
+ \else
+\ifdim \tkzMathResult pt > 1 pt\relax%
\tkzURotateAngle(#1,60)(#3) \tkzGetPoint{tkz@aux}
\tkzInterCC(#1,#2)(tkz@aux,#1) \tkzGetPoints{tkz@pta}{tkz@ptb}
\tkzInterCC(#3,#4)(tkz@aux,#1) \tkzGetPoints{tkz@ptc}{tkz@ptd}
@@ -209,6 +219,8 @@
\else
\tkzInterCCR(#1,\tkz@ra)(#3,\tkz@rb){tkzFirstPointResult}{tkzSecondPointResult}
\fi
+\fi
+\fi
\endgroup
}
\makeatother
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-modules.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-modules.tex
index 8387498b88..ac6dd1186a 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-modules.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-modules.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-tools-eu-utilities.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-tools-eu-utilities.tex}
\makeatletter
%<------------- % chargement des modules ---------------------------------->
\def\tkz@obj@all{angles,arcs,compass,defcircles,deflines,defpoints,defpointsby,defpointsrnd,defpointswith,polygons,protractor,sectors,show,triangles}%
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-text.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-text.tex
index 8ee28b1bc3..49fd0621bb 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-text.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-text.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-tools-eu-text.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-tools-eu-text.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% tkzText
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-utilities.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-utilities.tex
index a88e105d26..b92f87e22b 100644
--- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-utilities.tex
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-utilities.tex
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.22c}
-\def\filedate{2022/07/28}
-\typeout{2022/07/28 4.22c tkz-tools-eu-utilities.tex}
+\def\fileversion{4.23c}
+\def\filedate{2022/08/24}
+\typeout{2022/08/24 4.23c tkz-tools-eu-utilities.tex}
\makeatletter
\pgfkeys{/tkzClip/.cd,
space/.store in = {\tkz@CLI@space},
diff --git a/macros/luatex/latex/luaquotes/README b/macros/luatex/latex/luaquotes/README
new file mode 100644
index 0000000000..b4e06d6d0c
--- /dev/null
+++ b/macros/luatex/latex/luaquotes/README
@@ -0,0 +1,14 @@
+luaquotes - smart quotes with lua
+
+version: 1.0.0
+
+This package automatically creates smart quotes using lua filters and provides auxiliary commands for typesetting specific lua punctuation
+
+This work may be distributed and/or modified under the conditions of the
+LaTeX Project Public License (LPPL), version 1.3 or later.
+
+
+For suggestions, feature requests, and bug reports, please use the project's
+GitHub site: https://github.com/ezgranet/luaquotes
+
+Version history: 24/08/2022 —package creation
diff --git a/macros/luatex/latex/luaquotes/luaquotes-documentation.pdf b/macros/luatex/latex/luaquotes/luaquotes-documentation.pdf
new file mode 100644
index 0000000000..6383205e0a
--- /dev/null
+++ b/macros/luatex/latex/luaquotes/luaquotes-documentation.pdf
Binary files differ
diff --git a/macros/luatex/latex/luaquotes/luaquotes-documentation.tex b/macros/luatex/latex/luaquotes/luaquotes-documentation.tex
new file mode 100644
index 0000000000..f6cbf32a17
--- /dev/null
+++ b/macros/luatex/latex/luaquotes/luaquotes-documentation.tex
@@ -0,0 +1,1388 @@
+\documentclass{article}
+\usepackage{luaquotes}
+\usepackage{verbatim}
+\usepackage{xcolor}
+\usepackage{longtable}
+\definecolor{darkspringgreen}{rgb}{0.09, 0.45, 0.27}
+\definecolor{dsg}{rgb}{0.09, 0.45, 0.27}
+\usepackage[hidelinks]{hyperref}
+\usepackage{hologo}
+\usepackage[british]{babel}
+\usepackage[useregional]{datetime2}
+\DTMlangsetup[en-GB]{ord=omit}
+\definecolor{LightGray}{gray}{0.9}
+%\usepackage{mathpazo}
+\IfFontExistsTF{Palatine Parliamentary}{\setromanfont[RawFeature={+onum,+pnum},%
+BoldFont={Palatine Parliamentary Bold},
+ItalicFont={Palatine Parliamentary Italic}]{Palatine Parliamentary Regular}
+}{\setromanfont[RawFeature={+onum,+pnum}]{TeX Gyre PagellaX}}
+\setmonofont[Scale=.9]{Source Code Pro}
+%\newfontface\primeback[Scale=1.01]{Libertinus Serif}
+\newcommand{\primeback}{}
+
+\newfontface\boxy{DejaVu Sans}
+\newcommand{\thebox}{{\boxy ▯}}
+%\usepackage[firstnumber=last]{fancyvrb}
+\usepackage{minted}
+\date{\today\\\smallskip\ttfamily Version \luaquotesversionnumber}
+\author{Elijah Z Granet\thanks{e-mail: \href{mailto:ezg21@cantab.ac.uk}{\ttfamily ezg21@cantab.ac.uk}}}
+
+\title{\texttt{LuaQuotes}:\\A package for smart quotation marks}
+
+\begin{document}
+\maketitle
+\tableofcontents
+\clearpage
+\section{Overview}
+\subsection{Purpose}
+This package provides a function to automatically have 'smart quotes' in \hologo{LuaLaTeX}. By 'smart quotes', I refer to the automatic insertion of curved or 'typographer's' quotation marks when the user types straight quotation marks. The below figure illustrates the distinction in English typography:
+\begin{center}
+\renewcommand{\arraystretch}{2}
+\begin{tabular}{ccc}
+\ttfamily User input &\color{red} Smart Quotes Off & \color{darkspringgreen}Smart Quotes On\\
+\LARGE\texttt{"Howdy!"}%
+& \LARGE\textcolor{red}{\sqtworight}Howdy!\sqtworight%
+& \LARGE "Howdy!"\\
+\LARGE\texttt{'Don't!'}%
+& \LARGE\textcolor{red}{\sqoneright}%
+Don\sqoneright t!\sqoneright%
+& \LARGE 'Don't!'
+
+\end{tabular}
+\end{center}
+\section{Smart quotes}
+\subsection{Options}
+ The default option, for English quotation marks, is called by:
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+breaklines,
+]
+{latex}
+\usepackage{luaquotes}
+\end{minted}
+The French and German options, for those languages' punctuation, are called by the following respective commands.
+\begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+breaklines,
+]
+{latex}
+\usepackage[fr]{luaquotes} %French
+\usepackage[de]{luaquotes} % German
+\end{minted}
+
+\subsubsection{French option}
+The French option produces the following output, including the extra space around punctuation prescribed by French typography:
+\begin{center}
+\renewcommand{\arraystretch}{2}
+\begin{tabular}{cc}
+\ttfamily User input &Output\\
+\LARGE\texttt{"Salut!"}%
+& \LARGE \glmtl Salut!\glmtr\\
+\LARGE\texttt{'Salut!'}%
+& \LARGE \sglmtl Salut!\sglmtr\\
+
+\end{tabular}
+\end{center}
+\subsubsection{The German option}
+The German option produces the following outpu:
+
+\begin{center}
+\renewcommand{\arraystretch}{2}
+\begin{tabular}{cc}
+\ttfamily User input &Output\\
+\LARGE\texttt{"Hallo!"}%
+& \LARGE \dedouble Hallo!\sqtwoleft\\
+\LARGE\texttt{'Hallo!'}%
+& \LARGE \desingle Hallo!\sqoneleft\\
+
+\end{tabular}
+\end{center}
+
+
+
+\subsection{Activation and De-activation}
+The package automatically activates the smart quotes function at the beginning of the document. To deactivate the smart quotes function within a document, the following commands are used:
+\begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+breaklines,
+]
+{latex}
+\dumbquotes %English
+\frdumbquotes %French
+\dedumbquotes %German
+\end{minted}
+
+The following commands re-activate the smart quotes function:
+\begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+breaklines,
+]
+{latex}
+\smartquotes %English
+\frsmartquotes %French
+\desmartquotes % German
+\end{minted}
+
+A limitation on the (de-)activation of the package is that the Lua filters will not deactivate within the same paragraph, so the function can only be changed across paragraphs.
+
+\subsection{Monospace}
+As a general rule, smart quotes are rather undesirable in monospace text, and therefore, within the \color{darkspringgreen}\verb! \texttt!\color{black} environment the package does not apply smart quotes. Thus, the same input produces in roman face \textcolor{darkspringgreen}{"Hello World"} but in monospace \texttt{"Hello World"}.
+
+ As the example above shows, the default behaviour of this package forces straight quotes in monospace, and disables \TeX\ quote ligatures (but not other \TeX\ ligatures) to do so, on the assumption that any form of curved quotes are undesirable.
+
+ For extended periods of monospaced text called by {\color{darkspringgreen}\verb!\ttfamily!}, the activation and de-activation methods above should be used. I considered altering the {\color{darkspringgreen}\verb!\ttfamily!} command to always call on {\color{darkspringgreen}\verb!\dumbquotes!}, but I thought it best to avoid messing with the command. This may change in future development.
+
+
+ If a user desires to disable the smart quotes for other faces, this is easily done globally by adding the following line to the font's configuration in {\color{darkspringgreen}\texttt{fontspec}}:
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+breaklines,
+]
+{latex}
+RawFeature={+qtbye}
+\end{minted}
+This will, however, result in the font using straight quotes rather than the standard \TeX\ quote ligatures, making it a distinct option than the activation and de-activation options \textit{supra}.
+\section{Auxiliary Punctuation}
+The smart quotes feature covers the 'standard' usage of quotes, but there are many instances where quotation mark or quote-mark like features are needed outside the automatic formatting. The package provides several commands for this.
+\subsection{Standalone quotes}
+The marks in this section are the set of quotation marks used generally in writing and require little explanation. However, it should be noted that the commands {\color{dsg}\verb!\sqoneright!} and {\color{dsg}\verb!\apost!} (which produce identical output) are very useful for aphetic words by which the first syllable is clipped, as in the sequence {\color{dsg}\texttt{'bout}} the smart quotes function will incorrectly produce an opening quote instead of the correct closing quote to indicate the elision. Thus, the incorrect result of {\color{red} 'bout} is produced. The solution is to use the code {\color{dsg}\verb!\apost bout!} which produces \textcolor{dsg}{\apost bout}.
+
+\begin{center}
+\renewcommand{\arraystretch}{4}
+\begin{longtable}{p{3cm}p{1.5cm}p{2cm}p{2.5cm}}
+\textbf{Name} & \textbf{UTF-8} & \textbf{Command} & \textbf{Produces}\\
+Single low quote & \ttfamily U+201A & \verb!\desingle! & \Huge\desingle\thebox\\
+ Double low quote & \ttfamily U+201E & \verb!\dedouble! & \Huge\dedouble\thebox
+\\
+ Single straight quote & \ttfamily U+0027 & \verb!\dqone! & \Huge\dqone\thebox\\
+ Double straight quote & \ttfamily U+0022 & \verb!\dqtwo! & \Huge\dqtwo\thebox\\
+ Left single quote & \ttfamily U+2018 & \verb!\sqoneleft! & \Huge\sqoneleft\thebox\\
+ Right single quote & \ttfamily U+2019 & \verb!\sqoneright! & \Huge\thebox\sqoneright\\
+ Apostrophe & \ttfamily U+2019 & \verb!\apost! & \Huge\thebox\apost\\
+ Left double quote & \ttfamily U+201C & \verb!\sqtwoleft! & \Huge\sqtwoleft\thebox\\
+ Right double quote & \ttfamily U+201D & \verb!\sqtworight! & \Huge\thebox\sqtworight\\
+ Left guillemet [w/ space]& \ttfamily U+00AB & \verb!\glmtl! & \Huge\glmtl\thebox\\
+Right guillemet [w/ space]& \ttfamily U+00BB & \verb!\glmtr! & \Huge\thebox\glmtr\\
+Single left guillemet [w/ space]& \ttfamily U+2039 & \verb!\sglmtl! & \Huge\sglmtl\thebox\\
+
+Single right guillemet [w/ space]& \ttfamily U+203A & \verb!\sglmtr! & \Huge\thebox\sglmtr\\
+
+
+\end{longtable}
+ \end{center}
+
+\subsection{Additional symbols}
+These are quote like symbols which are useful for precise punctuation, since standard smart quotation marks do not work well in their specialised use cases.
+
+
+\begin{center}
+\begin{longtable}{p{3cm}p{1.5cm}p{2cm}p{2.5cm}}
+\textbf{Name} & \textbf{UTF-8} & \textbf{Command} & \textbf{Produces}\\
+ Backtick & \ttfamily U+0060 & \verb!\bcktck! & \Huge\bcktck\thebox
+\end{longtable}
+ \end{center}
+For typesetting US/Imperial measurements like feet and inches, the correct symbol is a prime and double prime. Many modern typefaces have these symbols, and they are thus useful for typesetting feet and inch measurements (like 6\primeback\lqprime\normalfont 4\primeback\lqdoubleprime ).
+
+
+\begin{center}
+\begin{longtable}{p{3cm}p{1.5cm}p{2.4cm}p{2.5cm}}
+\textbf{Name} & \textbf{UTF-8} & \textbf{Command} & \textbf{Produces}\\
+ Single Prime & \ttfamily U+2032 & \verb!\lqprime! & \Huge\thebox\lqprime\\
+ Double Prime & \ttfamily U+2033 & \verb!\lqdoubleprime! & \Huge\thebox\lqdoubleprime
+\end{longtable}
+ \end{center}
+
+%\newcommand{\lqprime}{′}
+%\newcommand{\lqdoubleprime}{″}
+
+
+
+
+For certain Polynesian langauges, a letter called the \okina Okina is used; while this appears identical to a left single quotation mark in many fonts, it is encoded differently in Unicode because it is properly a letter, not a punctuation mark.
+
+
+
+
+ \begin{center}
+\begin{longtable}{p{3cm}p{1.5cm}p{2cm}p{2.5cm}}
+\textbf{Name} & \textbf{UTF-8} & \textbf{Command} & \textbf{Produces}\\
+ Okina & \ttfamily U+022B & \verb!\okina! & \Huge\okina\thebox\\\
+
+
+\end{longtable}
+\end{center}
+
+
+
+
+ \section{Future Development and Localisation}
+ The package's online repository is the best place to report bugs, feature requests, or other contributions, and is located at: \\\url{github.com/ezgranet/luaquotes}.
+
+ One obvious point of future development is the addition of other language localisations; this is technologically easy in principle but difficult for me to accomplish without assistance because it requires detailed knowledge of typographic conventions for any given language standard, and therefore the aid of contributors and collaborators. \section{Licence}
+ This project is licensed under the Latex Public Project Licence version 1.3\textit{c}. This documentation is copyright of the author but licensed under CC-BY-SA 3.0.
+
+
+ \clearpage\section{Implementation}
+
+\begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+\def\luaquotesversionnumber{1.0.0}
+\ProvidesPackage{luaquotes}
+ [2022/08/01\luaquotesversionnumber smart quotes with lua]
+ % !TeX program = lualatex
+% !TeX encoding = utf8
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Elijah Z Granet
+\end{minted}
+
+\subsection{LuaTeX check}
+
+\begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% to show the package only works with Lua
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \RequirePackage{iftex}
+ \ifPDFTeX {
+ \PackageError{luaquotes}
+ {You are using pdfTeX but this package only works
+ \MessageBreak with LuaTeX}{}
+ }
+\else\ifXeTeX{ \PackageError{luaquotes}
+ {You are using XeTeX but this package only works
+ \MessageBreak with LuaTeX}{}
+}\fi\fi
+\end{minted}
+
+\subsection{Dependencies}
+
+\begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Dependency
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \RequirePackage{luacode}
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% fontspec for the auxiliary
+% quotes where tligs need
+% to be disabled
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \RequirePackage{fontspec}
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \end{minted}
+
+ \subsection{Avoiding smart quotes in monospace}
+
+\begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% removing the effects for monospace
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{luacode}
+\begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+local uchar = unicode.utf8.char
+ fonts.handlers.otf.addfeature{
+ name = "qtbye",
+ type = "substitution",
+ data =
+ {
+ “ = 0x0022,
+” = 0x0022,
+’ = 0x0027,
+« = 0x0022,
+» = 0x0022,
+‹ = 0x0027,
+› = 0x0027
+ },
+ }\end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+ \end{luacode}
+ \end{minted}
+ \subsection{Quote replacement functions}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Code here and throughout similar
+%functions partly adapted from TeX.SE user
+% Mico
+% https://tex.stackexchange.com/questions/499953/how-to-generate-correct-single-and-double-quotes-in-tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\luaexec{\end{minted}
+\begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+function doublequotes ( s )
+ return ( s:gsub ( '"(..-)"' , "“\%1”" ) )
+ end\end{minted}
+\begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+}
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Assuming ' at the start of the line means an opening quotation mark not an apostrophe
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\luaexec{\end{minted}
+\begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+function singlequotelinestart ( s )
+ return (s:gsub ("^'","‘" ) )
+ end
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+ }
+
+\luaexec{
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+function singlequotes ( s )
+ return ( s:gsub ( " '"," ‘" ) )
+ end\end{minted}
+\begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+}
+\end{minted}
+\subsection{Activation commands}
+\begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% activation and deactivation
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand\doublequoteson{\directlua{
+\end{minted}
+\begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+
+luatexbase.add_to_callback (
+ "process_input_buffer" , doublequotes , "doublequotes" )
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+ }}
+\newcommand\doublequotesoff{\directlua{
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+luatexbase.remove_from_callback (
+ "process_input_buffer" ,
+ "doublequotes" )
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+}}
+\newcommand\singlequotelinestarton{\directlua{
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+luatexbase.add_to_callback (
+ "process_input_buffer" , singlequotelinestart , "singlequotelinestart" )
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+ }}
+\newcommand\singlequotelinestartoff{\directlua{ \end{minted}
+\begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+luatexbase.remove_from_callback (
+ "process_input_buffer" , "singlequotelinestart" )
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+ }}
+\newcommand\singlequoteson{\directlua{
+luatexbase.add_to_callback (
+ "process_input_buffer" , singlequotes , "singlequotes" ) \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+ }}
+\newcommand\singlequotesoff{\directlua{
+\end{minted}
+\begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+luatexbase.remove_from_callback (
+ "process_input_buffer" , "singlequotes" )
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+}}
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% global functions, useful for things like this
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \newcommand{\smartquotes}{%
+\doublequoteson%
+\singlequotelinestarton%
+\singlequoteson}
+ \newcommand{\dumbquotes}{\doublequotesoff
+ \singlequotelinestartoff
+ \singlequotesoff}
+ \end{minted}
+ \subsection{English option}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+
+ \DeclareOption{en}{
+
+\AtBeginDocument{\smartquotes}
+\renewcommand{\texttt}[1]{{\ttfamily\addfontfeature{RawFeature={+qtbye,-tlig}}\dumbquotes #1}}
+
+ }
+ \end{minted}
+ \subsection{Auxiliary punctuation}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% auxiliary punctuation
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Essentially to be used where the
+% thing fails to provide the
+% quotation or
+% quote like punctuation
+% needed
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% German quotations
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\desingle}{{\addfontfeature{RawFeature={-qtbye,-tlig}}\symbol{"201A}}}
+\newcommand{\dedouble}{{\addfontfeature{RawFeature={-qtbye,-tlig}}\symbol{"201E}}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% backtick
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\bcktck}{{\addfontfeature{RawFeature={-qtbye,-tlig}}`}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Straight double
+% and single quotes
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand{\dqone}{{\addfontfeature{RawFeature={-qtbye,-tlig}}\symbol{"0027}}}
+\newcommand{\dqtwo}{{\addfontfeature{RawFeature={-qtbye,-tlig}}\symbol{"0022}}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Prime, mostly for
+% Feet and inches
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\lqprime}{′}
+\newcommand{\lqdoubleprime}{″}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% The Okina, for typing
+% Hawaiʻi
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\okina}{ʻ}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% The individual smart quotes
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\sqtwoleft}{{\addfontfeature{RawFeature={-qtbye,-tlig}}“}}
+\newcommand{\sqtworight}{{\addfontfeature{RawFeature={-qtbye,-tlig}}”}}
+\newcommand{\sqoneright}{{\addfontfeature{RawFeature={-qtbye,-tlig}}’}}
+\newcommand{\apost}{{\addfontfeature{RawFeature={-qtbye,-tlig}}’}}
+\newcommand{\sqoneleft}{{\addfontfeature{RawFeature={-qtbye,-tlig}}‘}}
+\newcommand{\glmtl}{{\addfontfeature{RawFeature={-qtbye,-tlig}}«\,}}
+\newcommand{\glmtr}{{\addfontfeature{RawFeature={-qtbye,-tlig}}\,»}}
+\newcommand{\sglmtl}{{\addfontfeature{RawFeature={-qtbye,-tlig}}‹\,}}
+\newcommand{\sglmtr}{{\addfontfeature{RawFeature={-qtbye,-tlig}}\,›}}
+ \end{minted}
+ \subsection{The German option}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% DEUTSCH
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\luaexec{
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+function dedoublequotes ( s )
+ return ( s:gsub ( '"(..-)"' , "„\%1“" ) )
+ end
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+ }
+\luaexec{
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+function desinglequotelinestart ( s )
+ return (s:gsub ("^'","‚" ) )
+ end
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+ }
+\luaexec{
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+function desinglequotesclose( s )
+return ( s:gsub ( " '(..-)'", " ‚\%1`" ) )
+ end
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+ }
+
+%% Two utility macros to activate/deactivate the Lua function:
+\newcommand\dedoublequoteson{\directlua{
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+luatexbase.add_to_callback (
+ "process_input_buffer" , dedoublequotes , "dedoublequotes" )
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+ }}
+\newcommand\dedoublequotesoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "dedoublequotes" )
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+}}
+\newcommand\desinglequotelinestarton{\directlua{
+\end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+luatexbase.add_to_callback (
+ "process_input_buffer" , desinglequotelinestart , "desinglequotelinestart" )\end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+ }}
+\newcommand\desinglequotelinestartoff{\directlua{
+\end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+luatexbase.remove_from_callback (
+ "process_input_buffer" , "desinglequotelinestart" )
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+ }}
+\newcommand\desinglequotescloseon{\directlua{
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+ luatexbase.add_to_callback (
+ "process_input_buffer" , desinglequotesclose , "desinglequotesclose" )
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+ }}
+\newcommand\desinglequotescloseoff{\directlua{
+\end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+luatexbase.remove_from_callback (
+ "process_input_buffer" , "desinglequotesclose" )
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+ }}
+ \newcommand{\desmartquotes}{\dedoublequoteson
+\desinglequotelinestarton
+\desinglequoteson
+\desinglequotescloseon}
+ \newcommand{\dedumbquotes}{\dedoublequotesoff
+\desinglequotelinestartoff
+\desinglequotesoff
+\desinglequotescloseoff}
+ \DeclareOption{de}{
+
+\AtBeginDocument{\desmartquotes}
+\renewcommand{\texttt}[1]{{\ttfamily\addfontfeature{RawFeature={+qtbye,-tlig}}\dedumbquotes #1}}
+
+
+}
+ \end{minted}
+ \subsection{The French option}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Français
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\luaexec{
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+function frdoublequotes ( s )
+ return ( s:gsub ( '"(..-)"' , "«\\,\%1\\,»" ) )
+ end
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+}
+\luaexec{
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+function frsinglequotelinestart ( s )
+ return (s:gsub ("^'","'" ) )
+ end \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+}
+\luaexec{
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+function frsinglequotesclose( s )
+return ( s:gsub ( " '(..-)'", " ‹\\,\%1\\,›" ) )
+ end
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+ }
+%% Two utility macros to activate/deactivate the Lua function:
+\newcommand\frdoublequoteson{\directlua{
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+luatexbase.add_to_callback (
+ "process_input_buffer" ,frdoublequotes , "frdoublequotes" )
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+ }}
+\newcommand\frdoublequotesoff{\directlua{
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+luatexbase.remove_from_callback (
+ "process_input_buffer" , "frdoublequotes" )
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+ }}
+\newcommand\frsinglequotelinestarton{\directlua{
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+luatexbase.add_to_callback (
+ "process_input_buffer" ,frsinglequotelinestart , "frsinglequotelinestart" )
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+ }}
+\newcommand\frsinglequotelinestartoff{\directlua{
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+luatexbase.remove_from_callback (
+ "process_input_buffer" , "frsinglequotelinestart" )
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+ }}
+ \newcommand\frsinglequotescloseon{\directlua{
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+ luatexbase.add_to_callback (
+ "process_input_buffer" ,frsinglequotesclose , "frsinglequotesclose" )
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+}}
+\newcommand\frsinglequotescloseoff{\directlua{
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{lua}
+luatexbase.remove_from_callback (
+ "process_input_buffer" , "frsinglequotesclose" )
+ \end{minted}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+}}
+ \newcommand{\frsmartquotes}{\frdoublequoteson
+\frsinglequotelinestarton
+\frsinglequotescloseon}
+ \newcommand{\frdumbquotes}{\frdoublequotesoff
+\frsinglequotelinestartoff
+\frsinglequotescloseoff} \DeclareOption{fr}{
+
+\AtBeginDocument{\frsmartquotes}
+\renewcommand{\texttt}[1]{{\ttfamily\addfontfeature{RawFeature={+qtbye,-tlig}}\frdumbquotes #1}}
+
+
+}
+ \end{minted}
+ \subsection{Process Options}
+ \begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Default option is English
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ExecuteOptions{en}%
+ \ProcessOptions*
+
+
+
+\end{minted}
+\section{Version History}
+\subsection{\texttt{1.0.0}}
+
+\ttfamily 21 August 2022: Package creation
+
+
+\end{document} \ No newline at end of file
diff --git a/macros/luatex/latex/luaquotes/luaquotes.sty b/macros/luatex/latex/luaquotes/luaquotes.sty
new file mode 100644
index 0000000000..f753df8183
--- /dev/null
+++ b/macros/luatex/latex/luaquotes/luaquotes.sty
@@ -0,0 +1,310 @@
+\def\luaquotesversionnumber{1.0.0}
+\ProvidesPackage{luaquotes}
+ [2022/08/01\luaquotesversionnumber smart quotes with lua]
+ % !TeX program = lualatex
+% !TeX encoding = utf8
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Elijah Z Granet
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% to show the package only works with Lua
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \RequirePackage{iftex}
+ \ifPDFTeX {
+ \PackageError{luaquotes}
+ {You are using pdfTeX but this package only works
+ \MessageBreak with LuaTeX}{}
+ }
+\else\ifXeTeX{ \PackageError{luaquotes}
+ {You are using XeTeX but this package only works
+ \MessageBreak with LuaTeX}{}
+}\fi\fi
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Dependency
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \RequirePackage{luacode}
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% fontspec for the auxiliary
+% quotes where tligs need
+% to be disabled
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \RequirePackage{fontspec}
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% removing the effects for monospace
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{luacode}
+local uchar = unicode.utf8.char
+ fonts.handlers.otf.addfeature{
+ name = "qtbye",
+ type = "substitution",
+ data =
+ {
+ “ = 0x0022,
+” = 0x0022,
+’ = 0x0027,
+« = 0x0022,
+» = 0x0022,
+‹ = 0x0027,
+› = 0x0027
+ },
+ }
+ \end{luacode}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Code here and throughout similar
+%functions partly adapted from TeX.SE user
+% Mico
+% https://tex.stackexchange.com/questions/499953/how-to-generate-correct-single-and-double-quotes-in-tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\luaexec{
+function doublequotes ( s )
+ return ( s:gsub ( '"(..-)"' , "“\%1”" ) )
+ end}
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Assuming ' at the start of the line means an opening quotation mark not an apostrophe
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\luaexec{function singlequotelinestart ( s )
+ return (s:gsub ("^'","‘" ) )
+ end}
+
+\luaexec{function singlequotes ( s )
+ return ( s:gsub ( " '"," ‘" ) )
+ end}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% activation and deactivation
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand\doublequoteson{\directlua{luatexbase.add_to_callback (
+ "process_input_buffer" ,
+ doublequotes ,
+ "doublequotes" )}}
+\newcommand\doublequotesoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" ,
+ "doublequotes" )}}
+\newcommand\singlequotelinestarton{\directlua{
+luatexbase.add_to_callback (
+ "process_input_buffer" , singlequotelinestart , "singlequotelinestart" )
+ }}
+\newcommand\singlequotelinestartoff{\directlua{
+luatexbase.remove_from_callback (
+ "process_input_buffer" , "singlequotelinestart" )
+ }}
+\newcommand\singlequoteson{\directlua{
+luatexbase.add_to_callback (
+ "process_input_buffer" , singlequotes , "singlequotes" )
+ }}
+\newcommand\singlequotesoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "singlequotes" )}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% global functions, useful for things like this
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \newcommand{\smartquotes}{%
+\doublequoteson%
+\singlequotelinestarton%
+\singlequoteson}
+ \newcommand{\dumbquotes}{
+ \doublequotesoff
+ \singlequotelinestartoff
+ \singlequotesoff}
+
+ \DeclareOption{en}{
+\AtBeginDocument{\smartquotes}
+\renewcommand{\texttt}[1]{{\ttfamily\addfontfeature{RawFeature={+qtbye,-tlig}} #1}}
+ }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% auxiliary punctuation
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Essentially to be used where the
+% thing fails to provide the
+% quotation or
+% quote like punctuation
+% needed
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% German quotations
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\desingle}{{\addfontfeature{RawFeature={-qtbye,-tlig}}\symbol{"201A}}}
+\newcommand{\dedouble}{{\addfontfeature{RawFeature={-qtbye,-tlig}}\symbol{"201E}}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% backtick
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\bcktck}{{\addfontfeature{RawFeature={-qtbye,-tlig}}`}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Straight double
+% and single quotes
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand{\dqone}{{\addfontfeature{RawFeature={-qtbye,-tlig}}\symbol{"0027}}}
+\newcommand{\dqtwo}{{\addfontfeature{RawFeature={-qtbye,-tlig}}\symbol{"0022}}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Prime, mostly for
+% Feet and inches
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\lqprime}{′}
+\newcommand{\lqdoubleprime}{″}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% The Okina, for typing
+% Hawaiʻi
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\okina}{ʻ}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% The individual smart quotes
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\sqtwoleft}{{\addfontfeature{RawFeature={-qtbye,-tlig}}“}}
+\newcommand{\sqtworight}{{\addfontfeature{RawFeature={-qtbye,-tlig}}”}}
+\newcommand{\sqoneright}{{\addfontfeature{RawFeature={-qtbye,-tlig}}’}}
+\newcommand{\apost}{{\addfontfeature{RawFeature={-qtbye,-tlig}}’}}
+\newcommand{\sqoneleft}{{\addfontfeature{RawFeature={-qtbye,-tlig}}‘}}
+\newcommand{\glmtl}{{\addfontfeature{RawFeature={-qtbye,-tlig}}«\,}}
+\newcommand{\glmtr}{{\addfontfeature{RawFeature={-qtbye,-tlig}}\,»}}
+\newcommand{\sglmtl}{{\addfontfeature{RawFeature={-qtbye,-tlig}}‹\,}}
+\newcommand{\sglmtr}{{\addfontfeature{RawFeature={-qtbye,-tlig}}\,›}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% DEUTSCH
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\luaexec{function dedoublequotes ( s )
+ return ( s:gsub ( '"(..-)"' , "„\%1“" ) )
+ end}
+\luaexec{function desinglequotelinestart ( s )
+ return (s:gsub ("^'","‚" ) )
+ end}
+\luaexec{function desinglequotesclose( s )
+return ( s:gsub ( " '(..-)'", " ‚\%1`" ) )
+ end}
+
+%% Two utility macros to activate/deactivate the Lua function:
+\newcommand\dedoublequoteson{\directlua{luatexbase.add_to_callback (
+ "process_input_buffer" , dedoublequotes , "dedoublequotes" )}}
+\newcommand\dedoublequotesoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "dedoublequotes" )}}
+\newcommand\desinglequotelinestarton{\directlua{luatexbase.add_to_callback (
+ "process_input_buffer" , desinglequotelinestart , "desinglequotelinestart" )}}
+\newcommand\desinglequotelinestartoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "desinglequotelinestart" )}}
+ \newcommand\desinglequotescloseon{\directlua{luatexbase.add_to_callback (
+ "process_input_buffer" , desinglequotesclose , "desinglequotesclose" )}}
+\newcommand\desinglequotescloseoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "desinglequotesclose" )}}
+ \newcommand{\desmartquotes}{\dedoublequoteson
+\desinglequotelinestarton
+\desinglequoteson
+\desinglequotescloseon}
+ \newcommand{\dedumbquotes}{\dedoublequotesoff
+\desinglequotelinestartoff
+\desinglequotesoff
+\desinglequotescloseoff}
+ \DeclareOption{de}{
+
+\AtBeginDocument{\desmartquotes}
+\renewcommand{\texttt}[1]{{\ttfamily\addfontfeature{RawFeature={+qtbye,-tlig}} #1}}
+
+
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Français
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\luaexec{function frdoublequotes ( s )
+ return ( s:gsub ( '"(..-)"' , "«\\,\%1\\,»" ) )
+ end}
+
+
+\luaexec{function frsinglequotelinestart ( s )
+ return (s:gsub ("^'","'" ) )
+ end}
+\luaexec{function frsinglequotesclose( s )
+return ( s:gsub ( " '(..-)'", " ‹\\,\%1\\,›" ) )
+ end}
+
+%% Two utility macros to activate/deactivate the Lua function:
+\newcommand\frdoublequoteson{\directlua{luatexbase.add_to_callback (
+ "process_input_buffer" ,frdoublequotes , "frdoublequotes" )}}
+\newcommand\frdoublequotesoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "frdoublequotes" )}}
+\newcommand\frsinglequotelinestarton{\directlua{luatexbase.add_to_callback (
+ "process_input_buffer" ,frsinglequotelinestart , "frsinglequotelinestart" )}}
+\newcommand\frsinglequotelinestartoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "frsinglequotelinestart" )}}
+ \newcommand\frsinglequotescloseon{\directlua{luatexbase.add_to_callback (
+ "process_input_buffer" ,frsinglequotesclose , "frsinglequotesclose" )}}
+\newcommand\frsinglequotescloseoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "frsinglequotesclose" )}}
+ \newcommand{\frsmartquotes}{\frdoublequoteson
+\frsinglequotelinestarton
+\frsinglequotescloseon}
+ \newcommand{\frdumbquotes}{\frdoublequotesoff
+\frsinglequotelinestartoff
+\frsinglequotescloseoff}
+ \DeclareOption{fr}{
+
+\AtBeginDocument{\frsmartquotes}
+\renewcommand{\texttt}[1]{{\ttfamily\addfontfeature{RawFeature={+qtbye,-tlig}} #1}}
+
+
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Default option is English
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ExecuteOptions{en}%
+ \ProcessOptions*
+
+
+
+
diff --git a/macros/unicodetex/latex/swungdash/README b/macros/unicodetex/latex/swungdash/README
new file mode 100644
index 0000000000..546eb217ed
--- /dev/null
+++ b/macros/unicodetex/latex/swungdash/README
@@ -0,0 +1,14 @@
+swungdash - make a swungdash
+
+version: 1.0.0
+
+swungdash produces a swung dash, a character useful for dictionaries and referencee works.
+
+This work may be distributed and/or modified under the conditions of the
+LaTeX Project Public License (LPPL), version 1.3 or later.
+
+
+For suggestions, feature requests, and bug reports, please use the project's
+GitHub site: https://github.com/ezgranet/swungdash
+
+Version history: 24/08/2022 —package creation
diff --git a/macros/unicodetex/latex/swungdash/swungdash-documentation.pdf b/macros/unicodetex/latex/swungdash/swungdash-documentation.pdf
new file mode 100644
index 0000000000..af40e69500
--- /dev/null
+++ b/macros/unicodetex/latex/swungdash/swungdash-documentation.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/swungdash/swungdash-documentation.tex b/macros/unicodetex/latex/swungdash/swungdash-documentation.tex
new file mode 100644
index 0000000000..9b55699d13
--- /dev/null
+++ b/macros/unicodetex/latex/swungdash/swungdash-documentation.tex
@@ -0,0 +1,121 @@
+\documentclass[12pt]{article}
+\usepackage{swungdash}
+\usepackage{xcolor}
+\usepackage{fontspec}\definecolor{darkspringgreen}{rgb}{0.09, 0.45, 0.27}
+\usepackage{titlesec}
+\titleformat{\subsection}
+ {\bfseries}{\thesection.\thesubsection}{1em}{\normalfont\bfseries}
+\usepackage[hidelinks]{hyperref}
+\usepackage{hologo}
+\usepackage[british]{babel}
+\usepackage[useregional]{datetime2}
+\DTMlangsetup[en-GB]{ord=omit}
+\definecolor{LightGray}{gray}{0.9}
+%\usepackage{mathpazo}
+\IfFontExistsTF{Palatine Parliamentary}{\setromanfont[RawFeature={+calt,+hlig,+liga,+dlig,+onum,+pnum},
+BoldFont={Palatine Parliamentary Bold},
+ItalicFont={Palatine Parliamentary Italic}
+]{Palatine Parliamentary Regular}
+}{\setromanfont[RawFeature={+onum,+pnum}]{TeX Gyre PagellaX}}
+\setmonofont[Scale=.9,BoldFont=Source Code Pro Bold]{Source Code Pro}
+
+\usepackage{minted}
+\date{\today\\\smallskip\ttfamily Version \swungdashversionnumber}
+\author{Elijah Z Granet\thanks{e-mail: \href{mailto:me@ezgra.net}{\ttfamily me@ezgra.net}}}
+
+\title{\texttt{swungdash}:\\A package for a swung dash}
+\begin{document}
+\maketitle
+\tableofcontents
+\clearpage
+\section{Overview}
+The `swung dash' (\swungdash) is a rare but very useful mark of punctuation used in typesetting dictionaries and reference works as a stand in to avoid repeating the defined term in examples or definitions, and thus to save space. For example, a quoted example of the term `extraterritoriality' might save space by omitting repeating the long word:
+\begin{quote}
+ \swungdash, in this as in every other case, is a fiction only, for diplomatic envoys are in reality not without, but within, the territories of the receiving States. The term `\swungdash' is nevertheless valuable because it demonstrates clearly the fact that envoys must, in most respects, be treated as though they were not within the territory of the receiving States. \footnote{Sir H Lauterpacht \textsc{qc} (ed) \textit{Oppenheim on International Law}, vol 1 (8\textsuperscript{th} edn, Longmans, Green \& C\textsuperscript{o} 1955), 793}
+\end{quote}
+
+Although the swung dash is included in Unicode as \texttt{U+2053}, few typefaces include it. This package turns a tilde in any given typeface into a swung dash of 1 \textsc{m} width, and then, using the \texttt{accsup} package, overwrites this extended tilde into the Unicode character so that it will be read as a swung dash.
+\section{Usage}
+In your preamble put:
+\begin{minted}[
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+breaklines,
+firstnumber=last
+]
+{latex}
+\usepackage{swungdash}
+\end{minted}
+
+To typeset a swung dash, simply use the command:
+\begin{minted}[
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+breaklines,
+firstnumber=last
+]
+{latex}
+\swungdash
+\end{minted}
+\section{Development}
+Bugs, feature requests, \textit{etc}, should be submitted to the project's official Githup page: (\url{github.com/ezgranet/swungdash}).
+\section{Licence}
+ This project is licensed under the Latex Public Project Licence version 1.3\textit{c}. This documentation is copyright of the author but licensed under CC-BY-SA 3.0.
+\section{Implementation}
+\begin{minted}[
+frame=lines,
+framesep=2mm,
+baselinestretch=1.2,
+bgcolor=LightGray,
+fontsize=\footnotesize,
+linenos,
+breaklines,
+firstnumber=last
+]
+{latex}
+
+\def\swungdashversionnumber{1.0.0}
+\ProvidesPackage{swungdash}
+ [2022/08/24 v1.0 code to typeset a swung dash]
+ % !TeX program = lualatex
+% !TeX encoding = utf8
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Elijah Z Granet
+
+\RequirePackage{accsupp}\RequirePackage{graphicx}
+\RequirePackage{iftex}
+\newcommand{\thetilde}{\symbol{"007E}}
+\newcommand{\swungdash}{\BeginAccSupp{method=hex,unicode,ActualText= 2053}%
+\resizebox{1em}{!}{{\raisebox{-.1ex}{\scalebox{1.75}[1.1]{\thetilde}}}}
+\EndAccSupp{}%
+}
+\newcommand{\twiddle}{$\sim$}
+\ifPDFTeX {
+ \PackageError{swungdash}
+ {You are using pdfTeX but this package only works
+ \MessageBreak with XeTeX or LuaTeX}{}
+ }
+\fi
+
+\end{minted}
+
+\section{Version History}
+\subsection{\texttt{1.0.0}}
+
+\ttfamily 24 August 2022: Package creation
+
+
+\end{document} \ No newline at end of file
diff --git a/macros/unicodetex/latex/swungdash/swungdash.sty b/macros/unicodetex/latex/swungdash/swungdash.sty
new file mode 100644
index 0000000000..f580a6c2c4
--- /dev/null
+++ b/macros/unicodetex/latex/swungdash/swungdash.sty
@@ -0,0 +1,34 @@
+\def\swungdashversionnumber{1.0.0}
+\ProvidesPackage{swungdash}
+ [2022/08/24 v1.0 code to typeset a swung dash]
+ % !TeX program = lualatex
+% !TeX encoding = utf8
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Elijah Z Granet
+
+\RequirePackage{accsupp}\RequirePackage{graphicx}
+\RequirePackage{iftex}
+\newcommand{\thetilde}{\symbol{"007E}}
+\newcommand{\swungdash}%
+{\BeginAccSupp{method=hex,unicode,ActualText= 2053}%
+\resizebox{1em}{!}{{\raisebox{-.1ex}%
+{\scalebox{1.75}[1.1]{\thetilde}}}}%
+\EndAccSupp{}%
+}
+\newcommand{\twiddle}{$\sim$}
+\ifPDFTeX {
+ \PackageError{swungdash}
+ {You are using pdfTeX but this package only works
+ \MessageBreak with XeTeX or LuaTeX}{}
+ }
+\fi
+