summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-12-25 03:00:43 +0000
committerNorbert Preining <norbert@preining.info>2023-12-25 03:00:43 +0000
commit04394251f8dab08ff9ce469f57fd910ae79ecf3b (patch)
tree7d5e1b982233557d1191afd1d85791c9edc2c6b2 /macros/latex
parent4730d615ef9f92ac5b55492b0eadad6023d991e0 (diff)
CTAN sync 202312250300
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/frenchmath/README.md4
-rw-r--r--macros/latex/contrib/frenchmath/frenchmath.dtx759
-rw-r--r--macros/latex/contrib/frenchmath/frenchmath.pdfbin266165 -> 552642 bytes
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/README.md18
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-circle.tex89
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-line.tex35
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-misc.tex61
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-parallelogram.tex4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-rectangle.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-examples.tex560
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-indepthstudy.tex37
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-intersection.tex72
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-main.tex5
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-presentation.tex30
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-transferts.tex2
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/tkz-elements.pdfbin551541 -> 584764 bytes
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz-elements.sty4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_circle.lua39
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_class.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_ellipse.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_circles.lua55
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_intersections.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_lines.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_maths.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_points.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_regular.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_triangles.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_line.lua19
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_main.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_misc.lua58
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_parallelogram.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_point.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_quadrilateral.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_rectangle.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_regular.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_square.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_triangle.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_vector.lua4
-rw-r--r--macros/latex/contrib/wtref/LICENSE2
-rw-r--r--macros/latex/contrib/wtref/README.md8
-rw-r--r--macros/latex/contrib/wtref/wtref-ja.pdfbin117348 -> 117157 bytes
-rw-r--r--macros/latex/contrib/wtref/wtref-ja.tex2
-rw-r--r--macros/latex/contrib/wtref/wtref.pdfbin226945 -> 222572 bytes
-rw-r--r--macros/latex/contrib/wtref/wtref.sty14
-rw-r--r--macros/latex/contrib/wtref/wtref.tex182
45 files changed, 1366 insertions, 767 deletions
diff --git a/macros/latex/contrib/frenchmath/README.md b/macros/latex/contrib/frenchmath/README.md
index 0d0c9bcaa4..1027624a74 100644
--- a/macros/latex/contrib/frenchmath/README.md
+++ b/macros/latex/contrib/frenchmath/README.md
@@ -5,10 +5,10 @@
The package provides:
- roman uppercase letters in mathematical mode according to French rule (can be optionnally disabled),
-- optionally lowercase Greek letters in upright shape,
- correct spacing in math mode after commas, before a semicolon and around square brackets,
- some useful macros and aliases for symbols used in France: `\infeg`, `\supeg`, `\paral`,...
-- several macros for writing french operator names like pgcd, ppcm, Card, rg, Vect,...
+- several macros for writing French operator names like pgcd, ppcm, Card, rg, Vect,...
+- optionally lowercase Greek letters in upright shape.
## Documentation
diff --git a/macros/latex/contrib/frenchmath/frenchmath.dtx b/macros/latex/contrib/frenchmath/frenchmath.dtx
index 95e872ba6f..30cd225d05 100644
--- a/macros/latex/contrib/frenchmath/frenchmath.dtx
+++ b/macros/latex/contrib/frenchmath/frenchmath.dtx
@@ -20,16 +20,16 @@
%<*package>
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesPackage{frenchmath}
- [2023/03/08 v2.6 .dtx frenchmath file]
+ [2023/12/15 v2.7 .dtx frenchmath file]
%</package>
%<*driver>
\documentclass{ltxdoc}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
-\usepackage[font=fcm]{lgrmath}
-\usepackage{mathpazo}
-\usepackage[upgreek]{frenchmath}
+\usepackage{lmodern}
+\usepackage[lgrmath]{frenchmath}
+\usepackage[Euler]{upgreek}
\usepackage{textalpha}
\usepackage{metalogo} % pour les logos XeLaTeX et LuaLaTeX
\usepackage{sectsty}
@@ -65,7 +65,7 @@
%</driver>
% \fi
%
-% \CheckSum{535}
+% \CheckSum{519}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -85,6 +85,7 @@
%
%
% \changes{v0.1}{27/12/2011}{Version personnelle préliminaire}
+%
% \changes{v1.0}{15/01/2019}{
% - Première version publiée, création des fichiers dtx et ins}
%
@@ -109,7 +110,8 @@
% car incompatibilité avec l'extension unicode-math}
%
% \changes{v1.5}{2020/11/02}{
-% - Ajout des macros étoilées pour les repères du plan et de l'espace et la base (i,j,k)}
+% - Ajout des macros étoilées pour les repères (O;i,j) et (O;i,j,k)
+% - ajout des macros pour les bases (i,j) et (i,j,k)}
%
% \changes{v1.6}{2022/10/16}{
% - Remplacement de icomma par ncccomma, grâce à une proposition de J. F. Burnol,
@@ -156,71 +158,84 @@
% \changes{v2.6}{08/03/2023}{
% - La macro curs ne doit et ne peut plus être utilisée en mode texte}
%
+% \changes{v2.7}{06/12/2023}{
+% - Nouveau package decimalcomma pour la virgule en mode math}
+% \changes{v2.7}{08/12/2023}{
+% - Changements dans la doc : lettres grecques en dernier, retour à la police lmodern}
+% \changes{v2.7}{12/12/2023}{
+% - upgreek charge l'option Symbol et non plus Euler,
+% - sauvegarde des lettres grecques d'origine avec lgrmath comme pour upgreek,
+% - réécriture de l'introduction, mention de unicode-math avec XeLaTeX ou LuaLaTeX,
+% - PackageWarning remplacé par PackageInfo,
+% - optimisation du code pour les majuscules avec la macro apply}
+%
% \GetFileInfo{frenchmath.sty}
%
% \title{L'extension \textsf{frenchmath}\thanks{Ce document
-% correspond à \textsf{frenchmath}~\fileversion, dernière modification le 08/03/2023.}}
+% correspond à \textsf{frenchmath}~\fileversion, dernière modification le 23/12/2023.}}
% \author{Antoine Missier \\ \texttt{antoine.missier@ac-toulouse.fr}}
-% \date{8 mars 2023}
+% \date{23 décembre 2023}
% \maketitle
%
% \section{Introduction}
% Cette extension, inspirée de \textsf{mafr} de Christian Obrecht~\cite{MAFR},
-% permet le respect des règles typographiques mathématiques françaises,
-% en particulier la possibilité d'obtenir automatiquement
+% permet le respect des règles typographiques des mathématiques françaises,
+% en particulier elle permet d'obtenir automatiquement
% les majuscules en romain (lettres droites) plutôt qu'en italique
-% (voir~\cite{RTIN} et~\cite{IGEN})
-% ainsi que des espacements corrects
+% (voir~\cite{RTIN} et~\cite{IGEN}),
+% et elle gère correctement les espacements
% pour les virgules, point-virgules et crochets.
-% Depuis la version 2.0, des options permettent
-% de composer les minuscules grecques du mode mathématique en forme droite.
%
-% D'autres solutions pour composer les majuscules mathématiques en romain
-% sont proposées dans les extensions \textsf{fourier} de Michel Bovani~\cite{FOUR}
+% L'extension fournit en outre diverses macros francisées.
+% Mais contrairement à \textsf{mafr} nous avons choisi de ne pas
+% conserver le même nom de commande pour substituer
+% des symboles français aux symboles anglais.
+%
+% D'autres solutions existent pour composer les majuscules mathématiques en romain,
+% par exemple l'extension \textsf{unicode-math} mais qui doit être compilée
+% avec \XeLaTeX\ ou \LuaLaTeX ;
+% avec pdf\LaTeX\, nous avons les extensions \textsf{fourier} de Michel Bovani~\cite{FOUR}
% (avec la famille des fontes Adobe Utopia)
% ou encore \textsf{mathdesign} de Paul Pichaureau~\cite{DESIGN}
% (avec les polices Adobe Utopia, URW Garamond ou Bitstream Charter).
% Mais \textsf{frenchmath} fournit une solution générique
% s'adaptant à n'importe quelle police de caractères.
%
-% D'autres préconisations, telles que composer en lettre droite
+% Certaines préconisations, telles que composer en lettre droite
% et non en italique le symbole différentiel,
% les constantes mathématiques i et e~\cite{IGEN},
% sont des règles internationales~\cite{TYPMA}~\cite{NIST}~\cite{ICTNS}.
% Elles ne sont donc pas implémentées dans \textsf{frenchmath}
% \footnote{Nous proposons pour cela l'extension \textsf{mismath}~\cite{MIS}
-% qui fournit diverses macros pour les mathématiques internationales.}.
-%
-% L'extension fournit en outre diverses macros francisées.
-% Quelques différences sont à signaler avec \textsf{mafr} :
-% \begin{itemize}
-% \item nous avons choisi de ne pas substituer les symboles français aux symboles
-% anglais avec le même nom de commande ;
-% \item les macros présentées dans la section 2 correspondant à des macros de \textsf{mafr}
-% sont signalées par un astérisque en fin d'item, les autres sont nouvelles ;
-% \item enfin quelques commandes de \textsf{mafr} ne sont pas spécifiques
-% aux mathématiques françaises et ne sont donc pas abordées ici :
+% qui fournit diverses macros pour les mathématiques internationales.},
+% tout comme diverses commandes que l'on trouve dans \textsf{mafr}
+% et qui ne sont pas spécifiques aux mathématiques françaises :
% c'est le cas de |\vect|
-% \footnote{Pour de jolis vecteurs on dispose de l'extension \textsf{esvect}
+% \footnote{Pour de jolis vecteurs on dispose de l'extension \textsf{esvect}~\cite{VECT}
% d'Eddie Saudrais.},
-% des ensembles de nombres |\R|, |\N|, \ldots (pour $\mathbf{R}, \mathbf{N}, \ldots$)
+% des ensembles de nombres |\R|, |\N|\ldots (pour $\mathbf{R}, \mathbf{N}\ldots$)
% ainsi que celles relatives à la réalisation de feuilles d'exercices.
-% \end{itemize}
%
-% Mentionnons aussi l'extension \textsf{tdsfrmath}~\cite{FRM} de Yvon Henel
-% qui fournit aussi beaucoup de commandes francisées.
-%
+% Mentionnons par ailleurs l'extension \textsf{tablvar}~\cite{TABL} qui permet de réaliser
+% de jolis tableaux de variations, spécificité des mathématiques françaises,
+% ou encore \textsf{tdsfrmath} de Yvon Henel~\cite{FRM}
+% qui fournit également beaucoup de commandes francisées.
+%
+% Depuis la version 2.0, \textsf{frenchmath} propose deux options permettant
+% de composer les minuscules grecques du mode mathématique en forme droite.
%
% \section{Utilisation}
%
% \subsection{Majuscules mathématiques}
% Dans les mathématiques françaises, pour l'alphabet latin,
% \og les lettres majuscules sont toujours
-% composées en romain \fg ($A, B, C, \ldots$) et non en italique
+% composées en romain \fg ($A, B, C\ldots$) et non en italique
% (cf. \cite{RTIN} p.107, voir aussi~\cite{IGEN}).
% En utilisant \XeLaTeX\ ou \LuaLaTeX\ avec des polices mathématiques OpenType,
-% cette convention est assez commode à mettre en œuvre ;
-% par contre, avec \LaTeX\ ou pdf\LaTeX, est peu respectée
+% cette convention est assez commode à mettre en œuvre
+% \footnote{Voir les options \texttt{math-style=upright}
+% ou \texttt{math-style=french} de l'extension \textsf{unicode-math}.} ;
+% par contre, avec \LaTeX\ ou pdf\LaTeX, elle est peu respectée
% et les extensions précitées ne fonctionnent qu'avec des polices particulières.
% Par défaut \textsf{frenchmath} compose automatiquement les majuscules
% mathématiques latines en romain,
@@ -237,142 +252,21 @@
% \medskip
% Que l'option soit activée ou pas, il est toujours possible de changer ponctuellement
% l'aspect d'une lettre particulière, avec les macros \LaTeX\ |\mathrm| et |\mathit|.
-% Sinon l'extension \textsf{mismath}~\cite{MIS} fournit deux bascules puissantes
-% |\MathUp| et |\MathIt| qui agissent de manière générale (ou locale dans un environnement)
+% D'autre part l'extension \textsf{mismath}~\cite{MIS} fournit deux bascules puissantes
+% |\MathUp| et |\MathIt| qui agissent de manière globale (ou locale dans un environnement)
% et permettent à tout moment
-% de changer la \og famille \fg d'une lettre particulière,
-% ainsi qu'une commande générique |\apply| pour appliquer ces macros sur une liste.
-% Ainsi |\apply\MathIt{F,G,X}| remettra en italique les lettres $\mathit{F,G,X}$.
-%
-% \subsection{Lettres grecques}
-% La norme concernant l'usage des lettres grecques en italique ou en forme droite
-% pour les mathématiques françaises ne semble pas aussi claire et les auteurs
-% divergent sur ce point. Plusieurs recommandent l'usage des lettres grecques
-% minuscules en forme droite~\cite{FOUR}~\cite{DESIGN}~\cite{PMISO}, mais d'autres
-% préconisent l'italique,
-% comme pour toutes les variables mathématiques~\cite{AA}.
-% Le lexique des règles typographiques en usage à l’Imprimerie Nationale~\cite{RTIN}
-% les compose en forme droite et relativement grasses (p.108)
-% sans préciser s'il s'agit vraiment d'une règle
-% s'appliquant aux variables, au même titre que celles énoncées pour l'alphabet latin.
-%
-% Pour les physiciens (et chimistes) l'affaire est plus claire puisque
-% les quantités doivent toujours être écrites en italique et les unités ou les constantes en
-% romain (forme droite), conformément à la norme ISO~\cite{TYPMA}~\cite{NIST}~\cite{ICTNS}.
-% Ainsi la constante $\pi \approx 3,14$ ne s'écrit pas de la même manière
-% qu'une variable $\itpi$.
-% Dans la section \og How to get upright small Greek letters \fg,
-% la documentation de \textsf{isomath} de Günter Milde~\cite{ISOM}
-% expose différentes méthodes pour obtenir les lettres grecques
-% en forme droite.
-% Par exemple les extensions \textsf{mathdesign}~\cite{DESIGN},
-% \textsf{fourier}~\cite{FOUR}
-% ou \textsf{kpfonts}~\cite{KPF} disposent d'options permettant
-% l'écriture automatique des lettres grecques minuscules en forme droite
-% (ou des majuscules en italique).
-% Citons également \textsf{newpxmath}, \textsf{newtxmath}
-% \footnote{L'extension \textsf{newtxmath} doit être chargée
-% après \textsf{frenchmath} qui utilise \textsf{amssymb} car la compilation
-% produit sinon un message d'erreur pour la commande
-% \texttt{\string\Bbbk}.}
-% et \textsf{libertinust1math}
-% de Michael Sharpe,
-% \textsf{pxgreeks}, \textsf{txgreeks}
-% \footnote{Si on utilise \textsf{amsmath} (ou \textsf{mismath}),
-% \textsf{pxgreeks} ou \textsf{txgreeks} doit être chargée
-% \emph{après} \textsf{amsmath} (ou \textsf{mismath}),
-% pour éviter une erreur de compilation due à la redéfinition des commandes
-% \texttt{\string\iint}, \texttt{\string\iiint}, \texttt{\string\iiiint},
-% \texttt{\string\idotsint}.}
-% et \textsf{libgreek} de Jean-François Burnol,
-% qui donnent de beaux résultats pour une utilisation avec
-% respectivement les polices Palatino, Times et Libertinus.
-%
-% \medskip
-% \DescribeEnv{[lgrmath]}
-% Jean-François Burnol a également développé l'extension \textsf{lgrmath}~\cite{LGR}
-% qui permet d'utiliser, en mode mathématique, les différentes fontes de lettres
-% grecques accessibles par \LaTeX\ avec l'encodage LGR. La documentation
-% de l'extension indique comment consulter et utiliser les fontes accessibles
-% sur votre distribution.
-%
-% En activant l'option \texttt{lgrmath}, \textsf{frenchmath}
-% charge cette extension avec l'option \texttt{style=french}
-% et la fonte fcm (de l'extension \textsf{cm-lgc})
-% \footnote{Évidemment il faut que \textsf{cm-lgc} soit installée
-% sur votre distribution sans quoi la fonte de substitution LGR/cmr/m/n sera utilisée.}
-% qui se marie particulièrement bien avec la police usuelle Latin Modern.
-% Les commandes |\alpha|, |\beta|, etc.
-% produisent alors automatiquement les lettres en forme droite
-% $\alphaup$, $\betaup$, \ldots, $\piup$, etc.,
-% tandis que |\alphait|, |\betait|, etc. produisent des formes italiques
-% $\alphait$, $\betait$, \ldots, $\piit$, etc.
-% Ces dernières sont peu à notre goût, mais elles n'ont pas vocation à être
-% utilisées lorsque l'on active l'option \texttt{lgrmath}.
-% Par contre, on peut choisir d'autres options de fontes en chargeant l'extension
-% \textsf{lgrmath} indépendamment de \textsf{frenchmath}
-% (voir par exemple avec l'option \texttt{font=Alegreya-LF} ou \texttt{font=Cochineal-LF}).
-%
-% \medskip
-% \DescribeEnv{[upgreek]}
-% Avec la même philosophie, \textsf{frenchmath} fournit l'option \texttt{upgreek}
-% basée sur l'extension \textsf{upgreek} de Walter Schmidt~\cite{UPGREEK} qui donne
-% accès aux lettres grecques minuscules en forme droite :
-% |\upalpha|, |\upbeta|, etc.
-% L'extension \textsf{upgreek} sera chargée avec l'option par défaut \texttt{Euler}.
-% Si l'on veut, par contre, utiliser l'extension \textsf{upgreek}
-% avec l'une de deux autres options disponibles, \texttt{Symbol}
-% (utilisant la police Adobe Symbol et qui donne des lettres grecques assez grasses :
-% $\upalphasym$, $\upbetasym$, \ldots, $\uppisym$) ou \texttt{Symbolsmallscale},
-% il faut charger l'extension \textsf{upgreek} avec l'option souhaitée
-% \emph{avant} \textsf{frenchmath}
-% \footnote{L'option \texttt{Symbol} de \textsf{upgreek} se marie mieux
-% avec une police comme Times par exemple.}.
-% L'option \texttt{upgreek} de \textsf{frenchmath} redéfinit ensuite les commandes
-% |\alpha|, |\beta|, etc.
-% pour produire automatiquement les lettres en forme droite
-% $\alpha$, $\beta$, \ldots, $\pi$, \ldots ; les formes italiques, $\italpha, \itbeta$, \ldots,
-% $\itpi$, etc. restant cependant disponibles avec les commandes
-% |\italpha|, |\itbeta|, \ldots, |\itpi|, etc.
-%
-% \medskip
-% \DescribeEnv{[Upgreek]}
-% Avec \LaTeX, les lettres grecques majuscules sont automatiquement composées
-% en forme droite et l'option \texttt{upgreek} ne concerne que les minuscules.
-% Cependant l'extension \textsf{upgreek}
-% propose aussi |\Upgamma|, \ldots, |Upomega| : $\Upgamma, \ldots, \Upomega$.
-% Si l'on veut conserver majuscules et minuscules dans le même style,
-% l'option \texttt{Upgreek} de \textsf{frenchmath} redéfinit les majuscules
-% |\Gamma|, \ldots, |\Omega| pour correspondre à ces variantes.
-% Par contre l'on n'a alors plus accès aux caractères d'origine : $\Gamma, \ldots, \Omega$.
-%
-% L'option \texttt{Upgreek} reprend aussi
-% les minuscules grecques de l'option \texttt{upgreek}, qu'il est donc
-% inutile d'invoquer simultanément.
-%
-% \medskip
-% Signalons enfin l'extension \textsf{textalpha} de Günter Milde~\cite{ALPHA} qui
-% donne accès aux lettres en forme droite \textalpha, \textbeta, \ldots,
-% \textpi, \ldots,
-% mais en mode texte avec |\textalpha|, |\textbeta|, etc.
-% Ces glyphes se marient également bien avec la police Latin Modern.
-% Par contre le theta produit, \texttheta, n'est pas vraiment
-% celui qui est d'usage en mathématiques.
+% de changer la \og famille \fg d'une lettre particulière ;
+% une commande générique |\apply| permet y compris d'appliquer ces macros sur une liste.
+% Ainsi |\apply\MathIt{F,G,X}| remettra en italique les lettres $\mathit{F,G}$ et $\mathit{X}$.
%
-% \medskip
-% Mentionnons ce commentaire de Walter Schmidt~\cite{UPGREEK} que le mu
-% utilisé pour le préfixe des unités physiques, \textmicro, doit se composer avec |\textmu|
-% \footnote{L'extension \textsf{textalpha} fournit à la place \texttt{\string\textmicro}
-% (depuis 2020) car elle redéfinit \texttt{\string\textmu}.},
-% disponible en mode texte dans beaucoup de fontes (ou avec \textsf{textcomp}) ;
-% il diffère du $\upmu$ de |\upmu|.
+% \subsection{Virgule, point-virgule et crochets}
%
-% \subsection{Virgules, point-virgule et crochets}
-% \DescribeMacro{virgules}
+% \DescribeMacro{virgule}
% Dans le mode mathématique de \LaTeX, la virgule est toujours, par défaut,
-% un symbole de ponctuation et sera donc suivi d'une espace.
-% Ceci est légitime dans un intervalle :
-% |$[a,b]$| donne $[a,b]$, mais pas pour un nombre en français : |$12,5$| donne
+% un symbole de ponctuation et sera donc suivie d'une espace.
+% Ceci est légitime dans une liste ou un intervalle :
+% |$[a,b]$| donne $[a,b]$. Mais, en français, la virgule sert aussi de séparateur décimal
+% pour les nombres et ne doit, dans ce cas, pas être suivie d'espace ; or |$12,5$| donne
% $12, 5$ au lieu de $12,5$.
% L'extension \textsf{babel}, avec l'option |french|~\cite{BABEL}, fournit deux bascules :
% |\DecimalMathComma| et |\StandardMathComma|, qui permettent d'adapter
@@ -392,26 +286,28 @@
% \end{itemize}
%
% Cette deuxième approche parait meilleure, néanmoins \textsf{ncccomma}
-% ne fonctionne pas avec avec l'option \texttt{autolanguage}
+% ne fonctionne pas avec avec \textsf{babel-french} utilisé conjointement avec
+% l'option \texttt{autolanguage}
% \footnote{L'option \texttt{autolanguage} de \textsf{numprint} utilisée
% conjointement avec l'option \texttt{french} de \textsf{babel} garantit un espacement
% correct entre les groupes de trois chiffres dans les grands nombres,
% qui doit être une espace insécable et non dilatable~\cite{RTIN},
% légèrement plus grande que l'espace que l'on obtient sans cette option.}
% de l'extension \textsf{numprint}.
-% Par contre \textsf{icomma} fonctionne et était utilisé
-% jusqu'à la version 1.5 de \textsf{frenchmath}.
-% Depuis la version 1.6, \textsf{frenchmath} charge \textsf{ncccomma}, grâce
-% à un code proposé par Jean-François Burnol qui permet d'utiliser conjointement
-% \textsf{ncccomma} avec l'option \texttt{autolanguage} de \textsf{numprint}
-% \footnote{Mentionnons aussi l'article \emph{Intelligent commas}
-% de Claudio Beccari~\cite{BECC} qui propose une solution simplifiée
-% par rapport à \textsf{ncccomma} mais dont l'avantage semble discutable.}.
-% Signalons que, si l'on compile avec \LuaLaTeX, \textsf{ncccomma}
-% (et donc \textsf{frenchmath}) doit être chargé
-% \emph{après} \textsf{babel-french}
-% (ce qui est, somme toute, la pratique normale),
-% sinon \textsf{babel} génère une erreur.
+% En outre \textsf{ncccomma} ne fonctionne pas non plus
+% avec l'extension \textsf{unicode-math} (et bugue à l'appel |\setmathfont|).
+% Dans son article \emph{Intelligent commas}~\cite{BECC},
+% Claudio Beccari propose une autre solution,
+% voisine de \textsf{ncccomma}, mais qui produit le même type d'incompatibilités.
+% Le code a donc été revu et simplifié afin de régler proprement ces incompatibilités.
+% Comme bien des pays utilisent la virgule comme
+% séparateur décimal, il fait l'objet d'une extension séparée,
+% \textsf{decimalcomma}~\cite{DECC}, qui est chargée par \textsf{frenchmath}
+% (depuis la version 2.7).
+% Mais il est alors impératif de charger \textsf{unicode-math} \emph{avant}
+% \textsf{frenchmath}
+% \footnote{L'extension \textsf{icomma} présente la même limitation et doit être chargé
+% après \textsf{unicode-math}.}.
%
% \medskip
% Lorsque l'on utilise l'extension \textsf{pstricks-add} de \textsf{PSTricks}
@@ -460,11 +356,11 @@
% Si la borne de gauche possède un signe - (ou +),
% \emph{il ne faut pas laisser d'espace entre le premier crochet
% et le signe}: par exemple |$x \in ] -\infty, 0]$| produit
-% $x \in ] -\infty, 0]$ avec des espaces trop grandes autour du signe.
-% Mais au contraire lorsque l'on souhaite faire de l'algèbre sur les intervalles,
+% $x \in ] -\infty, 0]$ au lieu de $x \in ]-\infty, 0]$.
+% Mais au contraire lorsque l'on veut faire de l'algèbre sur les intervalles,
% \emph{il faut laisser une espace entre le second crochet et l'opération} + ou -,
-% par exemple, |$[a, b] + [c, d]$| produit $[a, b] + [c, d]$
-% mais |$[a, b]+ [c, d]$| produit $[a, b]+ [c, d]$.
+% par exemple, |$[a,b] + [c,d]$| produit $[a,b] + [c,d]$
+% mais |$[a,b]+ [c,d]$| produit $[a,b]+ [c,d]$.
%
% En cas de comportement problématique, par exemple si
% une coupure de ligne se produit entre les deux crochets d'un intervalle,
@@ -474,29 +370,27 @@
% \subsection{Quelques macros et alias utiles}
%
% \DescribeMacro{\curs}
-% Les lettres cursives ($\curs{A}, \curs{B}, \curs{C}, \curs{D}, \ldots$),
-% provenant de l'extension \textsf{mathrsfs} chargée par \textsf{frenchmath}, sont composées
+% Les lettres cursives ($\curs{A}, \curs{B}, \curs{C}, \curs{D}\ldots$),
+% provenant de l'extension \textsf{mathrsfs}, chargée par \textsf{frenchmath}, sont composées
% avec |\curs| et sont différentes de celles obtenues
% avec |\mathcal|
% \footnote{L'extension \textsf{calrsfs} fournit les mêmes cursives mais en redéfinissant
% la commande \texttt{\string\mathcal}.}
-% ($\mathcal{A}, \mathcal{B}, \mathcal{C}, \mathcal{D}, \ldots$).*
-% \footnote{L'astérisque en fin d'item signale
-% une fonctionnalité similaire dans \textsf{mafr}.}
+% ($\mathcal{A}, \mathcal{B}, \mathcal{C}, \mathcal{D}\ldots$).
%
% \medskip
% \DescribeMacro{\infeg} \DescribeMacro{\supeg}
% Les relations $\infeg$ et $\supeg$ s'obtiennent avec les commandes |\infeg| et |\supeg|
% et diffèrent des versions anglaises de |\leq| ($\leq$) et |\geq| ($\geq$).
% Ce sont des alias de |\leqslant| et |\geqslant| de l'extension \textsf{amssymb},
-% chargée par \textsf{frenchmath}.*
+% chargée par \textsf{frenchmath}.
%
% \medskip
% \DescribeMacro{\vide}
% Le symbole de l'ensemble vide $\vide$
% s'obtient avec |\vide| (alias de la commande |\varnothing| de l'extension \textsf{amssymb}) ;
-% il diffère de celui obtenu avec |\emptyset|
-% (particulièrement laid dans la fonte par défaut Computer Modern : $\cmemptyset$).*
+% il diffère de celui obtenu avec |\emptyset|,
+% particulièrement laid dans la fonte classique Latin Modern : $\cmemptyset$.
%
% \medskip
% \DescribeMacro{\paral}
@@ -506,11 +400,11 @@
% défini comme une \emph{relation} mathématique plutôt que
% \texttt{\string\bot} défini comme un \emph{symbole} (les espacements diffèrent).}
% du parallélisme : $\curs{D}\paral\curs{D}'$,
-% plutôt que sa version anglaise |\parallel| : $\curs{D}\parallel\curs{D}'$.*
+% plutôt que sa version anglaise |\parallel| : $\curs{D}\parallel\curs{D}'$.
%
-% \pagebreak
+% \medskip
% \DescribeMacro{\ssi}
-% La commande |\ssi| produit \og \ssi \fg.
+% La commande |\ssi| produit le texte \og \ssi \fg.
%
% \medskip
% \DescribeMacro{\cmod}
@@ -525,7 +419,7 @@
% En arithmétique, nous avons les classiques |\pgcd| et |\ppcm|,
% qui diffèrent de leur version anglaise |\gcd| et |\lcm|
% \footnote{Cette dernière n'est pas implémentée en standard dans \LaTeX\
-% (mais dans \textsf{mismath}).}.
+% (mais dans \textsf{mismath}~\cite{MIS}).}.
%
% \medskip
% \DescribeMacro{\card} \DescribeMacro{\Card}
@@ -554,15 +448,14 @@
% En principe, les fonctions hyperboliques s'écrivent en français
% avec les macros \LaTeX\ standard |\cosh|, |\sinh|, |\tanh|.
% Néanmoins les écritures $\ch x$, $\sh x$ et $\th x$, qui sont la norme
-% avec les langues d'Europe de l'Est~\cite{COMP},
+% avec les langues d'Europe de l'Est (voir \cite{COMP}),
% sont aussi utilisées en français~\cite{RTIN}.
% On les obtient avec les commandes |\ch|, |\sh| et |\th|
% \footnote{La commande \texttt{\string\th} existe déjà, pour le mode texte uniquement,
% et produit \th ;
-% elle a été redéfinie, uniquement pour le mode mathématique, à la place
-% de l'ancienne commande \texttt{\string\tgh}, utilisée jusqu'à la version 1.6,
-% désormais obsolète.}.
+% elle a été redéfinie, uniquement pour le mode mathématique.}.
%
+% \enlargethispage{1ex}
% \medskip
% \DescribeMacro{\cosec} \DescribeMacro{\cosech}
% La fonction cosécante (inverse du sinus) s'obtient avec la macro |\csc|, mais en français,
@@ -585,6 +478,7 @@
% comme séparateur après le point O, comme mentionné dans~\cite{RTIN}.
% On obtient \Oij*, \Oijk*, \Ouv*.
%
+% \medskip
% \DescribeMacro{\ij} \DescribeMacro{\ijk}
% Enfin les macros |\ij|
% \footnote{Notons que la macro \texttt{\string\ij} existait déjà
@@ -597,6 +491,136 @@
% en chargeant alors \textsf{dotlessj}~\cite{DLJ} de David Carlisle,
% ce qui permet aux macros ci-dessus de fonctionner normalement.
%
+% \subsection{Lettres grecques}
+% La norme concernant l'usage des lettres grecques en italique ou en forme droite
+% pour les mathématiques françaises ne semble pas aussi claire que pour les lettres romaines
+% et les auteurs
+% divergent sur ce point. Plusieurs recommandent l'usage des lettres grecques
+% minuscules en forme droite~\cite{FOUR}~\cite{DESIGN}~\cite{PMISO}, mais d'autres
+% préconisent l'italique,
+% comme pour toutes les variables mathématiques~\cite{AA}.
+% Le lexique des règles typographiques en usage à l’Imprimerie Nationale~\cite{RTIN}
+% les compose en forme droite et relativement grasses (p.108)
+% sans préciser s'il s'agit vraiment d'une règle
+% s'appliquant aux variables, au même titre que celles énoncées pour l'alphabet latin.
+%
+% \medskip
+% Pour les physiciens (et chimistes) l'affaire est plus claire puisque
+% les quantités doivent toujours être écrites en italique et les unités ou les constantes en
+% romain (forme droite), conformément à la norme ISO~\cite{TYPMA}~\cite{NIST}~\cite{ICTNS}.
+% Ainsi la constante $\pi \approx 3,14$ ne s'écrit pas de la même manière
+% qu'une variable $\itpi$.
+% Dans la section \og How to get upright small Greek letters \fg,
+% la documentation de \textsf{isomath} de Günter Milde~\cite{ISOM}
+% expose différentes méthodes pour obtenir les lettres grecques
+% en forme droite.
+% Par exemple les extensions \textsf{mathdesign}~\cite{DESIGN},
+% \textsf{fourier}~\cite{FOUR}
+% ou \textsf{kpfonts}~\cite{KPF} disposent d'options permettant
+% l'écriture automatique des lettres grecques minuscules en forme droite
+% (ou des majuscules en italique).
+% Citons également \textsf{newpxmath}, \textsf{newtxmath}
+% \footnote{L'extension \textsf{newtxmath} doit être chargée
+% après \textsf{frenchmath} qui utilise \textsf{amssymb} car la compilation
+% produit sinon un message d'erreur pour la commande
+% \texttt{\string\Bbbk}.}
+% et \textsf{libertinust1math}
+% de Michael Sharpe,
+% \textsf{pxgreeks}, \textsf{txgreeks}
+% \footnote{Si on utilise \textsf{amsmath} (ou \textsf{mismath}),
+% \textsf{pxgreeks} ou \textsf{txgreeks} doit être chargée
+% \emph{après} \textsf{amsmath} (ou \textsf{mismath}),
+% pour éviter une erreur de compilation due à la redéfinition des commandes
+% \texttt{\string\iint}, \texttt{\string\iiint}, \texttt{\string\iiiint},
+% \texttt{\string\idotsint}.}
+% et \textsf{libgreek} de Jean-François Burnol,
+% qui donnent de beaux résultats pour une utilisation avec
+% respectivement les polices Palatino, Times et Libertinus.
+%
+% Enfin, comme pour les majuscules, \XeLaTeX\ ou \LuaLaTeX\ réalisent cette tâche
+% automatiquement avec l'option \texttt{math-style=french} de l'extension \textsf{unicode-math}.
+%
+% \medskip
+% Jean-François Burnol a également développé l'extension \textsf{lgrmath}~\cite{LGR}
+% qui permet d'utiliser, en mode mathématique, les différentes fontes de lettres
+% grecques accessibles par \LaTeX\ avec l'encodage LGR. La documentation
+% de l'extension indique comment consulter et utiliser les fontes accessibles
+% sur votre distribution.
+%
+% \medskip
+% \DescribeEnv{[lgrmath]}
+% En activant l'option \texttt{lgrmath}, \textsf{frenchmath}
+% charge cette extension avec son option \texttt{style=french}
+% et la fonte fcm (de l'extension \textsf{cm-lgc})
+% \footnote{Évidemment il faut que \textsf{cm-lgc} soit installée
+% sur votre distribution sans quoi la fonte de substitution LGR/cmr/m/n sera utilisée.}.
+% Celle-ci se marie particulièrement bien avec la police usuelle Latin Modern.
+% Les commandes |\alpha|, |\beta|, etc.
+% produisent alors les lettres en forme droite
+% $\alphaup$, $\betaup$, \ldots, $\piup$, etc.,
+% tandis que |\alphait|, |\betait|, etc. produisent des formes italiques
+% $\alphait$, $\betait$, \ldots, $\piit$, etc.
+% Ces dernières sont peu à notre goût, mais on conserve les lettres
+% d'origine avec |\italpha|, |\itbeta| : $\italpha$, $\itbeta$, \ldots, $\itpi$, etc.
+% On peut aussi choisir d'autres fontes en chargeant l'extension
+% \textsf{lgrmath} indépendamment de \textsf{frenchmath}
+% (voir par exemple avec l'option \texttt{font=Alegreya-LF} ou \texttt{font=Cochineal-LF}).
+%
+% \medskip
+% \DescribeEnv{[upgreek]}
+% Avec la même philosophie, \textsf{frenchmath} fournit aussi l'option \texttt{upgreek}
+% basée sur l'extension \textsf{upgreek} de Walter Schmidt~\cite{UPGREEK} qui donne
+% accès à d'autres fontes de lettres grecques minuscules en forme droite avec
+% |\upalpha|, |\upbeta|, etc.
+% L'extension \textsf{upgreek} sera chargée avec son option \texttt{Symbol}
+% \footnote{L'option \texttt{Symbol} de \textsf{upgreek} se marie bien
+% avec une police comme Times par exemple.}
+% utilisant la police Adobe Symbol et qui produit des lettres grecques assez grasses :
+% $\upalphasym$, $\upbetasym$, \ldots, $\uppisym$, etc.
+% Si l'on veut, par contre, utiliser l'extension \textsf{upgreek}
+% avec l'une des deux autres options disponibles, \texttt{Euler}
+% (qui produit $\upalpha, \upbeta, \ldots, \uppi$, etc.)
+% ou \texttt{Symbolsmallscale},
+% il faut charger l'extension \textsf{upgreek} avec l'option souhaitée
+% indépendamment de \textsf{frenchmath}.
+% Mais en conservant toutefois l'option \texttt{upgreek}, \textsf{frenchmath}
+% redéfinira les commandes |\alpha|, |\beta|, etc.
+% pour composer automatiquement les lettres en forme droite ;
+% les formes italiques d'origine,
+% restant toujours disponibles avec les commandes
+% |\italpha|, |\itbeta|, \ldots, |\itpi|, etc.
+%
+% \medskip
+% \DescribeEnv{[Upgreek]}
+% Avec \LaTeX, les lettres grecques majuscules sont automatiquement composées
+% en forme droite et l'option \texttt{upgreek} ne concerne que les minuscules.
+% Cependant l'extension \textsf{upgreek}
+% propose aussi |\Upgamma|, \ldots, |Upomega| : $\Upgamma, \ldots, \Upomega$.
+% Afin de conserver majuscules et minuscules dans le même style,
+% \textsf{frenchmath} fournit l'option \texttt{Upgreek} qui redéfinit les majuscules
+% |\Gamma|, \ldots, |\Omega| pour correspondre à ces variantes.
+% Par contre l'on n'a alors plus accès aux caractères d'origine : $\Gamma, \ldots, \Omega$.
+% L'option \texttt{Upgreek} reprend aussi
+% les minuscules grecques de l'option \texttt{upgreek}, qu'il est donc
+% inutile d'invoquer simultanément.
+%
+% \medskip
+% Signalons aussi l'extension \textsf{textalpha} de Günter Milde~\cite{ALPHA} qui
+% donne accès aux lettres en forme droite \textalpha, \textbeta, \ldots,
+% \textpi, etc.,
+% mais en mode texte avec |\textalpha|, |\textbeta|, etc.
+% Ces glyphes, voisines de la fonte fcm accessible avec \textsf{lgrmath},
+% se marient également bien avec la police Latin Modern,
+% par contre le thêta produit, \texttheta, n'est pas vraiment
+% celui qui est d'usage en mathématiques.
+%
+% \medskip
+% Mentionnons pour finir ce commentaire de Walter Schmidt~\cite{UPGREEK} que le mu
+% utilisé pour le préfixe des unités physiques, \textmicro, doit se composer avec |\textmu|
+% \footnote{L'extension \textsf{textalpha} fournit à la place \texttt{\string\textmicro}
+% (depuis 2020) car elle redéfinit \texttt{\string\textmu}.},
+% disponible en mode texte dans beaucoup de fontes (ou avec \textsf{textcomp}) ;
+% il diffère du $\mu$ droit mathématique.
% \StopEventually{}
%
% \section{Le code}
@@ -604,19 +628,20 @@
% \begin{macrocode}
\newif\ifcapsit
\DeclareOption{capsit}{\capsittrue}
+\newif\iffrenchmathgreek % pour sauvegarder les lettres d'origine
\newif\iflgrmath
-\DeclareOption{lgrmath}{\lgrmathtrue}
+\DeclareOption{lgrmath}{\lgrmathtrue\frenchmathgreektrue}
\newif\ifupgreek
-\DeclareOption{upgreek}{\upgreektrue}
+\DeclareOption{upgreek}{\upgreektrue\frenchmathgreektrue}
\newif\ifUpgreek
-\DeclareOption{Upgreek}{\Upgreektrue\upgreektrue}
+\DeclareOption{Upgreek}{\Upgreektrue\upgreektrue\frenchmathgreektrue}
\newif\ifnoibrackets
\DeclareOption{noibrackets}{\noibracketstrue}
\ProcessOptions \relax
\AtBeginDocument{
\@ifpackageloaded{mathdesign}{
- \PackageWarningNoLine{frenchmath}{Package mathdesign
+ \PackageInfo{frenchmath}{Package mathdesign
is loaded, \MessageBreak
I don't load mathrsfs and amssymb packages}
}{
@@ -625,85 +650,150 @@
}
}
\RequirePackage{amsopn} % fournit \DeclareMathOperator
-\@ifpackageloaded{mathptmx}{\RequirePackage{dotlessj}}
-\iflgrmath
+\@ifpackageloaded{mathptmx}{\RequirePackage{dotlessj}}{}
+
+% \end{macrocode}
+% Ce n'est qu'à la fin du préambule, donc avec |\AtBeginDocument|, que l'on examine
+% si les extensions \textsf{lgrmath} ou \textsf{upgreek} sont déjà chargées,
+% pour laisser à l'utilisateur la possibilité de les charger après \textsf{frenchmath}
+% et éviter un conflit d'option.
+% \begin{macrocode}
+\AtBeginDocument{
+ \iflgrmath
\@ifpackageloaded{lgrmath}{}{
\RequirePackage[font=fcm,style=french]{lgrmath}}
-\fi
-\ifupgreek
- \@ifpackageloaded{upgreek}{}{\RequirePackage[Euler]{upgreek}}
-\fi
+ \fi
+ \ifupgreek
+ \@ifpackageloaded{upgreek}{}{
+ \RequirePackage[Symbol]{upgreek}}
+ \fi
+}
\RequirePackage{xspace} % utile pour les commandes \curs, \ssi, \Oij
-\ifnoibrackets\else \RequirePackage{ibrackets} \fi % intelligent brackets
+\ifnoibrackets\else\RequirePackage{ibrackets}\fi % intelligent brackets
+
+\RequirePackage{decimalcomma} % depuis frenchmath 2.7
-\RequirePackage{ncccomma} % depuis frenchmath 1.6
-\@ifpackagewith{babel}{french}{}{
- \RequirePackage{iftex}
- \ifluatex
- \PackageWarningNoLine{frenchmath}{With LuaTeX engine,
- \MessageBreak
- load babel before frenchmath}
- \fi
-}
-\AtBeginDocument{\mathcode`\,="8000\relax
- \@ifpackageloaded{babel}{
- \addto\extrasfrench{\mathcode`\,="8000\relax}
- }{}
-}
% \end{macrocode}
-% La macro ci-dessus, qui m'a été proposée par Jean-François Burnol,
-% permet d'utiliser \textsf{ncccomma} à la place de \textsf{icomma}.
-% L'extension \textsf{ncccomma} doit être chargée après \textsf{babel-french}
-% si on utilise \LuaLaTeX, sinon une erreur de compilation se produit.
%
+% \DescribeMacro{\DeclareMathUp}
% Sauf si l'option \texttt{capsit} est activée, on redéfinit toutes les lettres majuscules
-% du mode mathématique ; |\AtBeginDocument| est nécessaire pour que
-% ces définitions soient prises en compte avec la classe \textsf{beamer}
-% par exemple.
+% du mode mathématique grâce à la commande |\DeclareMathUp|.
+% Contrairement aux bascules |\MathUp| et |\MathIt| de l'extension \textsf{mismath},
+% |\DeclareMathUp| ne fonctionne que dans le préambule, mais son code est bien plus simple
+% et suffit à nos besoins ici.
+% Pour balayer toutes les lettres majuscules de l'alphabet,
+% les boucles usuelles |\@for| ou |\foreach|
+% ne fonctionnent pas et produisent un message d'erreur
+% \og\texttt{!~Improper alphabetic constant}\fg.
+% Ceci est dû au fait qu'une \emph{séquence de contrôle} comme par exemple |\@letter|
+% ne peut être utilisée comme argument de la macro |\DeclareMathUp|
+% et ne sera pas gérée de manière identique à un simple caractère.
+% \DescribeMacro{\apply}
+% Mais la macro |\apply| ci-dessous va faire le travail
+% \footnote{Cette puissante macro, postée le 26/02/2021 sous le pseudonyme de \emph{wipet},
+% se trouve sur le forum de discussion \texttt{iterate190.rssing.com},
+% en réponse à \og TeX How to iterate over a comma separated list$?$\fg.
+% Que son auteur, Petr Olšák, soit remercié.
+% Cette macro a été définie de manière identique dans \textsf{mismath},
+% mais cela ne génère pas d'incompatibilité.}.
+% |\AtBeginDocument| est nécessaire pour que ces définitions
+% soient prises en compte avec la classe \textsf{beamer} par exemple.
% \smallskip
% \begin{macrocode}
-\newcommand*\@mathup[1]{
- \DeclareMathSymbol{#1}{\mathalpha}{operators}{`#1}
-}
+\newcommand*\DeclareMathUp[1]{
+ \DeclareMathSymbol{#1}{\mathalpha}{operators}{`#1}}
+
+\def\apply#1#2{\apply@#1#2,\apply@,}
+\def\apply@#1#2,{\ifx\apply@#2\empty
+ \else #1{#2}\afterfi@{\apply@#1}\fi}
+\def\afterfi@#1#2\fi{\fi#1}
+
\ifcapsit\else
- \AtBeginDocument{
- \@mathup{A}
- \@mathup{B}
- \@mathup{C}
- \@mathup{D}
- \@mathup{E}
- \@mathup{F}
- \@mathup{G}
- \@mathup{H}
- \@mathup{I}
- \@mathup{J}
- \@mathup{K}
- \@mathup{L}
- \@mathup{M}
- \@mathup{N}
- \@mathup{O}
- \@mathup{P}
- \@mathup{Q}
- \@mathup{R}
- \@mathup{S}
- \@mathup{T}
- \@mathup{U}
- \@mathup{V}
- \@mathup{W}
- \@mathup{X}
- \@mathup{Y}
- \@mathup{Z}
- }
-\fi
+ \AtBeginDocument{
+ \apply\DeclareMathUp{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z}
+ }
+\fi
+
+\AtBeginDocument{\@ifpackageloaded{pstricks-add}{\psset{comma=true}}{}}
+\DeclareMathSymbol{;}{\mathbin}{operators}{'73} % \mathpunct à l'origine
+
+% \end{macrocode}
+% Passons aux alias et identifiants de fonctions classiques.
+% \begin{macrocode}
+\newcommand*\curs[1]{\mathscr{#1}}
+\newcommand\infeg{\leqslant}
+\newcommand\supeg{\geqslant}
+\newcommand\vide{\varnothing}
+% \end{macrocode}
+% La définition de |\paral| remplace, depuis la version 2.2,
+% l'ancienne définition plus simple |\mathrel{/\!\!/}|, mais qui donnait des barres
+% trop serrées avec \textsf{mathastext} + \textsf{times} ou avec \textsf{libertinust1math}.
+% Merci à Jean-François Burnol de me l'avoir fait remarquer
+% et pour ses suggestions dans la mise au point d'une macro plus efficace.
+% \begin{macrocode}
+\newcommand\paral{\mathrel{\ooalign{$\mkern-1.75mu/\mkern1.75mu$\cr%
+ $\mkern1.75mu/\mkern-1.75mu$}}}
+\newcommand\ssi{si, et seulement si,\xspace}
+\newcommand*\cmod[1]{\quad[#1]}
+
+\DeclareMathOperator{\pgcd}{pgcd}
+\DeclareMathOperator{\ppcm}{ppcm}
+\DeclareMathOperator{\card}{card}
+\DeclareMathOperator{\Card}{Card}
+\DeclareMathOperator{\Ker}{Ker}
+\DeclareMathOperator{\Hom}{Hom}
+\DeclareMathOperator{\rg}{rg}
+\DeclareMathOperator{\Vect}{Vect}
+\DeclareMathOperator{\ch}{ch}
+\DeclareMathOperator{\sh}{sh}
+\AtBeginDocument{\let\oldth\th %\th existe déjà (mode texte)
+ \renewcommand\th{\TextOrMath{\oldth}{\operatorname{th}}}}
+\DeclareMathOperator{\cosec}{cosec}
+\DeclareMathOperator{\cosech}{cosech}
+
+% \end{macrocode}
+% Présentons les commandes pour les bases et repères, qui peuvent être utilisées
+% en mode texte grâce à |\ensuremath| (et |\xspace| qui garantit le bon espacement).
+% \begin{macrocode}
+\newcommand\@Oij{%
+ \ensuremath{\left(O, \vec{\imath}, \vec{\jmath}\,\right)}\xspace}
+\newcommand\@@Oij{%
+ \ensuremath{\left(O ; \vec{\imath}, \vec{\jmath}\,\right)}\xspace}
+\newcommand\Oij{\@ifstar{\@@Oij}{\@Oij}}
+
+\newcommand\@Oijk{%
+ \ensuremath{%
+ \left(O, \vec{\vphantom{t}\imath}, \vec{\vphantom{t}\jmath},
+ \vec{\vphantom{t}\smash{k}}\,\right)}%
+ \xspace}
+\newcommand\@@Oijk{%
+ \ensuremath{%
+ \left(O ; \vec{\vphantom{t}\imath}, \vec{\vphantom{t}\jmath},
+ \vec{\vphantom{t}\smash{k}}\,\right)}%
+ \xspace}
+\newcommand\Oijk{\@ifstar{\@@Oijk}{\@Oijk}}
+
+\newcommand\@Ouv{%
+ \ensuremath{\left(O, \vec{u}, \vec{v}\,\right)}\xspace}
+\newcommand\@@Ouv{%
+ \ensuremath{\left(O ; \vec{u}, \vec{v}\,\right)}\xspace}
+\newcommand\Ouv{\@ifstar{\@@Ouv}{\@Ouv}}
+
+\AtBeginDocument{
+ \renewcommand\ij{%
+ \ensuremath{\left(\vec{\imath}, \vec{\jmath}\,\right)}\xspace}}
+\newcommand\ijk{%
+ \ensuremath{%
+ \left(\vec{\vphantom{t}\imath}, \vec{\vphantom{t}\jmath},
+ \vec{\vphantom{t}\smash{k}}\,\right)}%
+ \xspace}
% \end{macrocode}
-% Avec l'option \texttt{upgreek}, on charge l'extension \textsf{upgreek}
-% (sauf si elle est déjà chargée, ce qui évite les incompatibilités d'option)
-% et on redéfinit les commandes |\alpha|, |\beta|, \ldots
-% \texttt{Upgreek} transforme en outre les majuscules grecques pour garder
-% le même style.
+% On sauvegarde les lettres grecques d'origine dans les macros |\italpha|, \ldots, |\itomega|.
+% Le booléen |frenchmathgreek| a été activé par les options de lettres grecques
+% \texttt{lgrmath}, \texttt{upgreek} ou \texttt{Upgreek}.
% \begin{macrocode}
-\ifupgreek
+\iffrenchmathgreek
\@ifundefined{italpha}{\let\italpha\alpha}{
\PackageWarningNoLine{frenchmath}{Command
\string\italpha\space already exist \MessageBreak
@@ -744,7 +834,8 @@
\@ifundefined{itvarphi}{\let\itvarphi\varphi}{}
\fi
-\ifupgreek
+\AtBeginDocument{
+ \ifupgreek
\renewcommand\alpha{\upalpha}
\renewcommand\beta{\upbeta}
\renewcommand\gamma{\upgamma}
@@ -774,9 +865,9 @@
\renewcommand\varrho{\upvarrho}
\renewcommand\varsigma{\upvarsigma}
\renewcommand\varphi{\upvarphi}
-\fi
+ \fi
-\ifUpgreek
+ \ifUpgreek
\renewcommand\Gamma{\Upgamma}
\renewcommand\Delta{\Updelta}
\renewcommand\Theta{\Uptheta}
@@ -788,79 +879,12 @@
\renewcommand\Phi{\Upphi}
\renewcommand\Psi{\Uppsi}
\renewcommand\Omega{\Upomega}
-\fi
-
-\AtBeginDocument{\@ifpackageloaded{pstricks-add}{\psset{comma=true}}{}}
-\DeclareMathSymbol{;}{\mathbin}{operators}{'73} % \mathpunct à l'origine
-
-\newcommand*\curs[1]{\mathscr{#1}}
-\newcommand\infeg{\leqslant}
-\newcommand\supeg{\geqslant}
-\newcommand\vide{\varnothing}
-\newcommand\paral{\mathrel{\ooalign{$\mkern-1.75mu/\mkern1.75mu$\cr%
- $\mkern1.75mu/\mkern-1.75mu$}}
+ \fi
}
% \end{macrocode}
-% Cette définition remplace, depuis la version 2.2,
-% l'ancienne définition plus simple |\mathrel{/\!\!/}|, mais qui donnait des barres
-% trop serrées avec \textsf{mathastext} + \textsf{times} ou avec \textsf{libertinust1math}.
-% Merci à Jean-François Burnol de me l'avoir fait remarquer
-% et pour ses suggestions dans la mise au point d'une macro plus efficace.
-% \begin{macrocode}
-\newcommand\ssi{si, et seulement si,\xspace}
-\newcommand*\cmod[1]{\quad[#1]}
-
-\DeclareMathOperator{\pgcd}{pgcd}
-\DeclareMathOperator{\ppcm}{ppcm}
-\DeclareMathOperator{\card}{card}
-\DeclareMathOperator{\Card}{Card}
-\DeclareMathOperator{\Ker}{Ker}
-\DeclareMathOperator{\Hom}{Hom}
-\DeclareMathOperator{\rg}{rg}
-\DeclareMathOperator{\Vect}{Vect}
-\DeclareMathOperator{\ch}{ch}
-\DeclareMathOperator{\sh}{sh}
-\AtBeginDocument{\let\oldth\th %\th existe déjà (mode texte)
- \renewcommand\th{\TextOrMath{\oldth}{\operatorname{th}}}}
-\DeclareMathOperator{\cosec}{cosec}
-\DeclareMathOperator{\cosech}{cosech}
-
-\newcommand\@Oij{%
- \ensuremath{\left(O, \vec{\imath}, \vec{\jmath}\,\right)}\xspace}
-\newcommand\@@Oij{%
- \ensuremath{\left(O ; \vec{\imath}, \vec{\jmath}\,\right)}\xspace}
-\newcommand\Oij{\@ifstar{\@@Oij}{\@Oij}}
-
-\newcommand\@Oijk{%
- \ensuremath{%
- \left(O, \vec{\vphantom{t}\imath}, \vec{\vphantom{t}\jmath},
- \vec{\vphantom{t}\smash{k}}\,\right)}%
- \xspace}
-\newcommand\@@Oijk{%
- \ensuremath{%
- \left(O ; \vec{\vphantom{t}\imath}, \vec{\vphantom{t}\jmath},
- \vec{\vphantom{t}\smash{k}}\,\right)}%
- \xspace}
-\newcommand\Oijk{\@ifstar{\@@Oijk}{\@Oijk}}
-
-\newcommand\@Ouv{%
- \ensuremath{\left(O, \vec{u}, \vec{v}\,\right)}\xspace}
-\newcommand\@@Ouv{%
- \ensuremath{\left(O ; \vec{u}, \vec{v}\,\right)}\xspace}
-\newcommand\Ouv{\@ifstar{\@@Ouv}{\@Ouv}}
-
-\AtBeginDocument{
- \renewcommand\ij{%
- \ensuremath{\left(\vec{\imath}, \vec{\jmath}\,\right)}\xspace}}
-\newcommand\ijk{%
- \ensuremath{%
- \left(\vec{\vphantom{t}\imath}, \vec{\vphantom{t}\jmath},
- \vec{\vphantom{t}\smash{k}}\,\right)}%
- \xspace}
-% \end{macrocode}
%
% \medskip
-% \begin{thebibliography}{26}
+% \begin{thebibliography}{28}
% \begin{raggedright}
% \bibitem{RTIN} \emph{Lexique des règles typographiques en usage à l’Imprimerie Nationale},
% édition du 26/08/2002.
@@ -882,33 +906,24 @@
% I.M.~Mills and W.V.~Metanomski, ICTNS (Interdivisional Committee on Terminology,
% Nomenclature and Symbols), dec 1999.
%\url{https://old.iupac.org/standing/idcns/italic-roman_dec99.pdf}
-% \bibitem{COMP} \emph{\LaTeX\ Companion}, Frank Mittelbach, Michel Goossens,
-% 2\ieme édition, Pearson Education France, 2005.
-% \bibitem{LSHORT} \emph{The Not So Short Introduction to \LaTeXe},
-% Tobias Oetiker, Hubert Partl, Irene Hyna et Elisabeth Schlegl, CTAN, v6.4 09/03/2021.
-% \url{http://tug.ctan.org/info/lshort/english/lshort.pdf}
+% \bibitem{ISOM} \emph{\textsf{isomath} -- Mathematical style for science and technology},
+% Günter Milde, CTAN, v0.6.1 2012/09/04.
+% \bibitem{PMISO} \emph{\textsf{PM-ISOmath} -- The Poor Man ISO math bundle},
+% Claudio Beccari, CTAN, v1.2.00 2021/08/04.
% \bibitem{MAFR} \emph{La distribution \textsf{mafr}}, Christian Obrecht,
% CTAN, v1.0 17/09/2006.
-% \bibitem{MIS} \emph{\textsf{mismath} -- Miscellaneous mathematical macros},
-% Antoine Missier, CTAN, v2.7 05/03/2023.
-% \bibitem{FRM} \emph{L'extension \textsf{tdsfrmath}}, Yvon Henel,
-% CTAN, v1.3 22/06/2009.
% \bibitem{FOUR} \textsf{Fourier-GUT\hspace{-0.1em}\emph{enberg}},
% Michel Bovani, CTAN, v1.3 30/01/2005.
% \bibitem{DESIGN} \emph{The \textsf{mathdesign} package},
% Paul Pichaureau, CTAN, v2.31 29/08/2013.
-% \bibitem{KPF} \emph{\textsf{Kp-Fonts} -- The Johannes Kepler project},
-% Christophe Caignaert, CTAN, v3.34 20/09/2022.
-% \bibitem{ALPHA} \emph{The \textsf{textalpha} package}
-% (partie de l'extension \textsf{greek-fontenc}), Günter Milde, CTAN, v2.1 14/06/2022.
-% \bibitem{LGR} \emph{The \textsf{lgrmath} package}, Jean-François B., CTAN,
-% v1.0 16/11/2022.
-% \bibitem{UPGREEK} \emph{The \textsf{upgreek} package for \LaTeXe}, Walter Schmidt, CTAN,
-% v2.0 12/03/2003.
-% \bibitem{ISOM} \emph{\textsf{isomath} -- Mathematical style for science and technology},
-% Günter Milde, CTAN, v0.6.1 2012/09/04.
-% \bibitem{PMISO} \emph{\textsf{PM-ISOmath} -- The Poor Man ISO math bundle},
-% Claudio Beccari, CTAN, v1.2.00 2021/08/04.
+% \bibitem{MIS} \emph{\textsf{mismath} -- Miscellaneous mathematical macros},
+% Antoine Missier, CTAN, v2.8 27/07/2023.
+% \bibitem{VECT} \emph{\textsf{esvect} -- Typesetting vectors with beautiful
+% arrow with \LaTeXe}, Eddie Saudrais, CTAN, v1.3 11/07/2013.
+% \bibitem{TABL} \emph{L'extension \textsf{tablvar}}, Antoine Missier,
+% CTAN, v2.0 23/12/2023.
+% \bibitem{FRM} \emph{L'extension \textsf{tdsfrmath}}, Yvon Henel,
+% CTAN, v1.3 22/06/2009.
% \bibitem{BABEL} \emph{A Babel language definition file for French}, extension \LaTeX\
% \textsf{babel-french} de Daniel Flipo, CTAN, v3.5c 14/09/2018.
% \bibitem{ICOMMA} \emph{The \textsf{icomma} package for \LaTeXe}.
@@ -918,9 +933,21 @@
% \bibitem{BECC} \emph{Intelligent commas}. Claudio Beccari, The Prac\TeX\ Journal,
% 2011, No.\@1.
% \url{https://tug.org/pracjourn/2011-1/beccari/Intcomma.pdf}
+% \bibitem{DECC} \emph{The \textsf{decimalcomma} package}. Antoine Missier,
+% CTAN, v1.1 19/12/2023.
% \bibitem{BRACKETS} \emph{Intelligent brackets -- The \textsf{ibrackets} package},
% Antoine Missier, v1.1 26/12/2022.
% \bibitem{DLJ} \emph{\textsf{dotlessj}}, David Carlisle, CTAN, v0.03 09/12/1998.
+% \bibitem{KPF} \emph{\textsf{Kp-Fonts} -- The Johannes Kepler project},
+% Christophe Caignaert, CTAN, v3.34 20/09/2022.
+% \bibitem{LGR} \emph{The \textsf{lgrmath} package}, Jean-François B., CTAN,
+% v1.0 16/11/2022.
+% \bibitem{UPGREEK} \emph{The \textsf{upgreek} package for \LaTeXe}, Walter Schmidt, CTAN,
+% v2.0 12/03/2003.
+% \bibitem{ALPHA} \emph{The \textsf{textalpha} package}
+% (partie de l'extension \textsf{greek-fontenc}), Günter Milde, CTAN, v2.1 14/06/2022.
+% \bibitem{COMP} \emph{\LaTeX\ Companion}, Frank Mittelbach, Michel Goossens,
+% 2\ieme édition, Pearson Education France, 2005.
% \end{raggedright}
% \end{thebibliography}
diff --git a/macros/latex/contrib/frenchmath/frenchmath.pdf b/macros/latex/contrib/frenchmath/frenchmath.pdf
index 217c28c43c..4c30510e1b 100644
--- a/macros/latex/contrib/frenchmath/frenchmath.pdf
+++ b/macros/latex/contrib/frenchmath/frenchmath.pdf
Binary files differ
diff --git a/macros/latex/contrib/tkz/tkz-elements/README.md b/macros/latex/contrib/tkz/tkz-elements/README.md
index 2ece035621..a357bf2bf0 100644
--- a/macros/latex/contrib/tkz/tkz-elements/README.md
+++ b/macros/latex/contrib/tkz/tkz-elements/README.md
@@ -1,10 +1,10 @@
# tkz-elements — for euclidean geometry
-Release 1.60c 2023/12/14
+Release 1.72c 2023/12/24
## Description
-`tkz-elements v.1.60c` is the new version of a library written in lua, allowing to make all the necessary calculations to define the objects of a Euclidean geometry figure. You need to compile with `LuaLaTeX`. With `tkz-elements`, the definitions and calculations are only done with `Lua`.
+`tkz-elements v.1.72c` is the new version of a library written in lua, allowing to make all the necessary calculations to define the objects of a Euclidean geometry figure. You need to compile with `LuaLaTeX`. With `tkz-elements`, the definitions and calculations are only done with `Lua`.
The main possibility of programmation proposed is oriented "object programming" with object classes like point, line, triangle, circle and ellipse. For the moment, once the calculations are done, it is `tkz-euclide` or `TikZ` which allows the drawings.
@@ -56,9 +56,21 @@ package conflicts.
## Examples
Some examples will be stored on my site : [http://altermundus.fr](http://altermundus.fr).
-An important example `Golden Arbelos` using the package is on the site.
+An important example `Golden Arbelos` using the package is on the site. All the files of the documentation
+are on the site.
## History
+
+ - version 1.72c
+ - added a line method (apollonius) set of points M with MA/MB = k
+ - example with line : apollonius
+ - example: three circle
+ - example: pentagons on golden arbelos
+ - descriptions of several cases with 'midcircle'
+ - added soddy method and examples
+ - added example with circles_position
+ - correction of the documentation
+
- version 1.60c
- added Internal and external tangents common to two circles:
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-circle.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-circle.tex
index 1ed09078a3..a945f3de7c 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-circle.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-circle.tex
@@ -124,6 +124,7 @@ Three attributes are used (south, west, radius).
\Imeth{circle}{in\_out (pt)} & |C.OA : in_out (z.M)| & boolean \\
\Imeth{circle}{in\_out\_disk (pt)} & |C.OA : in_out_disk (z.M)| & boolean \\
\Imeth{circle}{draw ()} & for further use &\\
+\Imeth{circle}{circles\_position (C1,C2)} & see \ref{sub:circles_position} \\
\bottomrule
\end{tabular}
\egroup
@@ -462,7 +463,7 @@ z.E = C.AO.south
z.H = C.AO.north
z.F = C.BP.north
z.G = C.BP.south
-C.IT,C.JV = midcircle_ (C.AO,C.BP)
+C.IT,C.JV = C.AO : midcircle (C.BP)
z.I,z.T = get_points ( C.IT )
z.J,z.V = get_points ( C.JV )
z.X,z.Y = intersection (C.AO,C.BP)
@@ -482,7 +483,7 @@ z.X,z.Y = intersection (C.AO,C.BP)
z.H = C.AO.north
z.F = C.BP.north
z.G = C.BP.south
- C.IT,C.JV = midcircle_ (C.AO,C.BP)
+ C.IT,C.JV = C.AO : midcircle (C.BP)
z.I,z.T = get_points ( C.IT )
z.J,z.V = get_points ( C.JV )
z.X,z.Y = intersection (C.AO,C.BP)
@@ -528,7 +529,7 @@ z.X,z.Y = intersection (C.AO,C.BP)
C.UR = circle : diameter (z.U,z.R)
z.x = C.SV.center
z.y = C.UR.center
- C.IT = midcircle_ (C.AO,C.BP)
+ C.IT = C.AO : midcircle (C.BP)
z.I,z.T = get_points ( C.IT )
\end{tkzelements}
\end{verbatim}
@@ -549,7 +550,7 @@ z.X,z.Y = intersection (C.AO,C.BP)
C.UR = circle : diameter (z.U,z.R)
z.x = C.SV.center
z.y = C.UR.center
- C.IT = midcircle_ (C.AO,C.BP)
+ C.IT = C.AO : midcircle (C.BP)
z.I,z.T = get_points ( C.IT )
\end{tkzelements}
\begin{tikzpicture}
@@ -566,7 +567,6 @@ z.X,z.Y = intersection (C.AO,C.BP)
\end{tikzpicture}
\end{minipage}
-
This case is a little more complicated. We'll construct the two circles $(\alpha)$ and $(\beta)$ tangent to the two given circles. Then we construct the radical circle orthogonal to the circles $(\alpha)$ and $(\beta)$. Its center is the radical center as well as the center of internal similtude of circles of center $A$ and $B$.
\item When the two given circles are external to each other, we construct the external center of similitude of the two given circles.
@@ -587,7 +587,7 @@ L.AB = line : new (z.A,z.B)
z.E = C.Aa.north
z.F = C.Bb.north
L.EF = line : new (z.E,z.F)
-C.IT = midcircle_ (C.Aa,C.Bb)
+C.IT = C.Aa : midcircle (C.Bb)
z.I,z.T = get_points ( C.IT )
L.TF = C.Bb : tangent_from (z.I)
z.H = intersection (L.TF,C.IT)
@@ -610,7 +610,7 @@ L.AB = line : new (z.A,z.B)
z.E = C.Aa.north
z.F = C.Bb.north
L.EF = line : new (z.E,z.F)
-C.IT = midcircle_ (C.Aa,C.Bb)
+C.IT = C.Aa : midcircle (C.Bb)
z.I,z.T = get_points ( C.IT )
L.TF = C.Bb : tangent_from (z.I)
z.H = intersection (L.TF,C.IT)
@@ -652,7 +652,7 @@ L.AB = line : new (z.A,z.B)
z.E = C.Aa.north
z.F = C.Bb.north
L.EF = line : new (z.E,z.F)
-C.IT = midcircle_ (C.Aa,C.Bb)
+C.IT = C.Aa : midcircle (C.Bb)
z.I,z.T = get_points ( C.IT )
L.TF = C.Bb : tangent_from (z.I)
z.H = intersection (L.TF,C.IT)
@@ -675,7 +675,7 @@ L.AB = line : new (z.A,z.B)
z.E = C.Aa.north
z.F = C.Bb.north
L.EF = line : new (z.E,z.F)
-C.IT = midcircle_ (C.Aa,C.Bb)
+C.IT = C.Aa : midcircle (C.Bb)
z.I,z.T = get_points ( C.IT )
L.TF = C.Bb : tangent_from (z.I)
z.H = intersection (L.TF,C.IT)
@@ -702,14 +702,14 @@ z.F=L.TF.pb
\begin{minipage}{.4\textwidth}
\begin{verbatim}
\begin{tkzelements}
-z.A = point : new ( 2 , 0 )
-z.B = point : new ( 4 , 0 )
-z.a = point : new ( 1 , 0)
-z.b = point : new ( 1 , 0)
-C.Aa = circle : new (z.A,z.a)
-C.Bb = circle : new (z.B,z.b)
-C.IT = midcircle_ (C.Aa,C.Bb)
-z.I,z.T = get_points ( C.IT )
+z.A = point : new ( 2 , 0 )
+z.B = point : new ( 4 , 0 )
+z.a = point : new ( 1 , 0)
+z.b = point : new ( 1 , 0)
+C.Aa = circle : new (z.A,z.a)
+C.Bb = circle : new (z.B,z.b)
+C.IT = C.Aa : midcircle (C.Bb)
+z.I,z.T = get_points ( C.IT )
\end{tkzelements}
\end{verbatim}
\end{minipage}
@@ -721,7 +721,7 @@ z.a = point : new ( 1 , 0)
z.b = point : new ( 1 , 0)
C.Aa = circle : new (z.A,z.a)
C.Bb = circle : new (z.B,z.b)
-C.IT = midcircle_ (C.Aa,C.Bb)
+C.IT = C.Aa : midcircle (C.Bb)
z.I,z.T = get_points ( C.IT )
\end{tkzelements}
@@ -741,6 +741,59 @@ z.I,z.T = get_points ( C.IT )
% subsubsection midcircle (end)
% subsection methods_of_the_class_circle (end)
+\subsection{Circles\_position} % (fold)
+\label{sub:circles_position}
+Cette fonction retourne une chaîne qui indique la position du cercle par rapport à un autre. Utile pour créer une fonction. Les cas sont:
+
+\begin{itemize}
+ \item "outside"
+ \item "outside tangent"
+ \item "inside tangent"
+ \item "inside"
+ \item "intersect"
+\end{itemize}
+
+\begin{minipage}{.5\textwidth}
+\begin{verbatim}
+\begin{tkzelements}
+ z.A = point : new ( 0 , 0 )
+ z.a = point : new ( 3 , 0 )
+ z.B = point : new ( 2 , 0 )
+ z.b = point : new ( 3 , 0 )
+ C.Aa = circle: new (z.A,z.a)
+ C.Bb ·= circle: new (z.B,z.b)
+ position = circles_position (C.Aa,C.Bb)
+ if position == "inside tangent"
+ then color = "orange"
+ else color = "blue" end
+\end{tkzelements}
+
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircle(A,a)
+ \tkzDrawCircle[color=\tkzUseLua{color}](B,b)
+\end{tikzpicture}
+\end{verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+z.A = point : new ( 1 , 0 )
+z.a = point : new ( 3 , 0 )
+z.B = point : new ( 2 , 0 )
+z.b = point : new ( 3 , 0 )
+C.Aa = circle: new (z.A,z.a)
+C.Bb = circle: new (z.B,z.b)
+position = circles_position (C.Aa,C.Bb)
+if position == "inside tangent" then color = "orange" else color = "blue" end
+\end{tkzelements}
+\hspace{\fill}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawCircle(A,a)
+\tkzDrawCircle[color=\tkzUseLua{color}](B,b)
+\end{tikzpicture}\hspace{\fill}
+\end{minipage}
+% subsection circles__position (end)
% section class_circle (end)
\endinput
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-line.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-line.tex
index 337a36f2eb..8ecdac344f 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-line.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-line.tex
@@ -196,6 +196,7 @@ Here's the list of methods for the \tkzNameObj{line} object. The results are eit
\midrule
\Imeth{line}{circle ()} & |C.AB = L.AB : circle ()| & center pa through pb \\
\Imeth{line}{circle\_swap ()} & |C.BA = L.AB : circle\_swap ()|& center pb through pa \\
+ \Imeth{line}{apollonius (k)} & |C.apo = L.AB : apollonius (2)|& Ensemble des points tq. |MA/MB = 2| \\
\midrule
\textbf{Transformations} &&\\
\midrule
@@ -513,9 +514,41 @@ z.a,z.b = L.ab.pa,L.ab.pb
\tkzDrawSegment[red,dashed](E,E')
\end{tikzpicture}
\end{minipage}
+% subsubsection reflection_of_object (end)
-% subsubsection reflection_of_object (end)
+\subsection{Apollonius circle MA/MB = k} % (fold)
+\label{sub:apollonius_circle_ma_mb_k}
+
+\begin{tkzelements}
+z.A = point : new ( 0 , 0 )
+z.B = point : new ( 6 , 0 )
+L.AB =line: new (z.A,z.B)
+C.apo = L.AB : apollonius (2)
+z.O,z.C = get_points ( C.apo )
+z.D = C.apo : antipode (z.C)
+z.P = C.apo : point (0.30)
+\end{tkzelements}
+
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzFillCircle[blue!20,opacity=.2](O,C)
+\tkzDrawCircle[blue!50!black](O,C)
+\tkzDrawPoints(A,B,O,C,D,P)
+\tkzLabelPoints[below right](A,B,O,C,D,P)
+\tkzDrawSegments[orange](P,A P,B P,D B,D P,C)
+\tkzDrawSegments[red](A,C)
+\tkzDrawPoints(A,B)
+\tkzLabelCircle[draw,fill=green!10,%
+ text width=3cm,text centered,left=24pt](O,D)(60)%
+ {$CA/CB=2$\\$PA/PB=2$\\$DA/DB=2$}
+\tkzMarkRightAngle[opacity=.3,fill=lightgray](O,P,C)
+\tkzMarkAngles[mark=||](A,P,D D,P,B)
+\end{tikzpicture}
+
+Remark: |\tkzUseLua{point.mod(z.P-z.A)/point.mod(z.P-z.B)}| = \tkzUseLua{point.mod(z.P-z.A)/point.mod(z.P-z.B)}
+% subsection apollonius_circle_ma_mb_k (end)
+
% subsection methods_from_class_line (end)
% section class_line (end)
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-misc.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-misc.tex
index 321444b889..017e3ae2d4 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-misc.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-misc.tex
@@ -25,15 +25,15 @@
\Igfct{math}{value (v) } & apply |scale * value | \\
\Igfct{math}{real (v) } & apply | value /scale | \\
\Igfct{math}{angle\_normalize (a) } & to get a value between 0 and $2\pi$ \\
-\Igfct{math}{radical\_center (C1,C2,C3)} & see \ref{sub:radical_center} \\
-\Igfct{math}{radical\_circle (C1,C2,C3)} & see \ref{sub:radical_circle} \\
-\Igfct{math}{barycenter (\{z1,n1\},\{z2,n2\}, ...)} & barycenter of list of points \\
+\Igfct{misc}{radical\_center (C1,C2,C3)} & see \ref{sub:radical_center} \\
+\Igfct{misc}{radical\_circle (C1,C2,C3)} & see \ref{sub:radical_circle} \\
+\Igfct{misc}{barycenter (\{z1,n1\},\{z2,n2\}, ...)} & barycenter of list of points \\
\bottomrule
\end{tabular}
\egroup
-\subsubsection{Harmonic division with tkzphi } % (fold)
-\label{ssub:harmonic_division_with_tkzphi}
+\subsection{Harmonic division with tkzphi } % (fold)
+\label{sub:harmonic_division_with_tkzphi}
\begin{tkzexample}[latex=0cm,small,code only]
\begin{tkzelements}
scale =.5
@@ -66,10 +66,10 @@
\tkzLabelPoints(a,b,n,m)
\end{tikzpicture}
\hspace*{\fill}
-% subsubsection harmonic_division_with_tkzphi (end)
+% subsection harmonic_division_with_tkzphi (end)
-\subsubsection{Function islinear} % (fold)
-\label{ssub:function_islinear}
+\subsection{Function islinear} % (fold)
+\label{sub:function_islinear}
\begin{minipage}{0.5\textwidth}
\begin{tkzexample}[latex=0cm,small,code only]
\begin{tkzelements}
@@ -109,10 +109,10 @@
\hspace*{\fill}
\end{minipage}
-% subsubsection function_islinear (end)
+% subsection function_islinear (end)
-\subsubsection{Function \tkzfname{value} }% (fold)
-\label{ssub:function_value}
+\subsection{Function \tkzfname{value} }% (fold)
+\label{sub:function_value}
value to apply scaling if necessary
@@ -125,11 +125,11 @@ If |scale = 1.2| with a = value(5) the actual value of |a| will be $5\times 1.2
If |scale = 1.2| with a = 6 then real(a) = $6 / 1.2 = 5$ .
-% subsubsection function_real (end)
+% subsection function_real (end)
-\subsubsection{Transfer from lua to \TEX} % (fold)
-\label{ssub:transfer_from_lua_to_tex}
+\subsection{Transfer from lua to \TEX} % (fold)
+\label{sub:transfer_from_lua_to_tex}
It's possible to transfer variable from Lua to \TEX{} with
\Igfct{package}{\textbackslash{tkzUseLua}}.
@@ -175,9 +175,9 @@ It's possible to transfer variable from Lua to \TEX{} with
\tkzLabelSegment[below left,draw](C,H){$AB = \tkzUseLua{l}$}
\end{tikzpicture}
\end{minipage}
-% subsubsection transfer_from_lua_to_tex (end)
+% subsection transfer_from_lua_to_tex (end)
-\subsubsection{Normalized angles : Slope of lines (ab), (ac) and (ad)} % (fold)
+\subsection{Normalized angles : Slope of lines (ab), (ac) and (ad)} % (fold)
\label{sub:normalized_angles}
\begin{tkzexample}[latex=0cm,small,code only]
\begin{tkzelements}
@@ -227,13 +227,11 @@ tex.print('slope normalized of (ad) : '..tostring(angle_normalize(angle))..'\\\\
\tkzLabelPoints(a,b,c,d)
\end{tikzpicture}
\hspace*{\fill}
- % \caption{Normalized angles}
+% subsection normalized_angles (end)
-% subsubsection normalized_angles (end)
-
-\subsubsection{Get angle} % (fold)
-\label{ssub:get_angle}
+\subsection{Get angle} % (fold)
+\label{sub:get_angle}
The function |get_angle (a,b,c)| gives the angle normalized of $(\overrightarrow{ab},\overrightarrow{ac})$.
@@ -283,11 +281,10 @@ The function |get_angle (a,b,c)| gives the angle normalized of $(\overrightarro
\hspace*{\fill}
\end{minipage}
-% \caption{Get angle}
-% subsubsection get_angle (end)
+% subsection get_angle (end)
-\subsubsection{Dot or scalar product} % (fold)
-\label{ssub:dot_or_scalar_product}
+\subsection{Dot or scalar product} % (fold)
+\label{sub:dot_or_scalar_product}
\begin{minipage}{0.5\textwidth}
\begin{tkzexample}[latex=0cm,small,code only]
@@ -335,25 +332,23 @@ The function |get_angle (a,b,c)| gives the angle normalized of $(\overrightarro
\hspace*{\fill}
\end{minipage}
-%\caption{Dot or scalar product}
-
The scalar product of the vectors $\overrightarrow{AC}$ and $\overrightarrow{AB}$ is equal to $\tkzUseLua{x}$, so these vectors are orthogonal.
-% subsubsection dot_or_scalar_product (end)
+% subsection dot_or_scalar_product (end)
-\subsubsection{Alignment or orthogonality} % (fold)
-\label{ssub:alignment_or_orthogonality}
+\subsection{Alignment or orthogonality} % (fold)
+\label{sub:alignment_or_orthogonality}
With the functions |islinear| and |isortho|. |islinear(z.a,z.b,z.c)| gives |true| idf the points $a$, $b$ and $c$ are aligned.
|isortho(z.a,z.b,z.c)| gives |true| if the line $(ab)$ is orthogonal to the line $(ac)$.
% subsection alignment_or_orthogonality (end)
-\subsubsection{Other functions} % (fold)
-\label{ssub:other_functions}
+\subsection{Other functions} % (fold)
+\label{sub:other_functions}
Not documented because still in beta version: |parabola|, |Cramer22|, |Cramer33|.
-% subsubsection other_functions (end)
+% subsection other_functions (end)
% section math_functions (end)
% % section classes_and_objects (end)
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-parallelogram.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-parallelogram.tex
index 372ca334be..2b4a165a28 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-parallelogram.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-parallelogram.tex
@@ -48,7 +48,7 @@ P.new = parallelogram : new (z.A,z.B,z.C,z.D)
z.B = P.new.pb
z.C = P.new.pc
z.D = P.new.pd
-z.I = P.new.i
+z.I = P.new.center
\end{tkzelements}
\begin{tikzpicture}
\tkzGetNodes
@@ -70,7 +70,7 @@ P.new = parallelogram : new (z.A,z.B,z.C,z.D)
z.B = P.new.pb
z.C = P.new.pc
z.D = P.new.pd
-z.I = P.new.i
+z.I = P.new.center
\end{tkzelements}
\hspace{\fill}
\begin{tikzpicture}
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-rectangle.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-rectangle.tex
index 62cb44b1c9..418278a99f 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-rectangle.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-rectangle.tex
@@ -257,7 +257,7 @@ z.I = R.diag.center
\begin{tkzelements}
z.X = point : new ( 0 , 0 )
z.Y = point : new ( 4 , 2 )
-R.gold = rectangle : gold (z.A,z.B)
+R.gold = rectangle : gold (z.X,z.Y)
z.C = R.gold.pc
z.D = R.gold.pd
z.I = R.gold.center
@@ -270,7 +270,7 @@ z.I = R.gold.center
\tkzLabelPoints(X,Y)
\tkzLabelPoints[above](Z,W)
\tkzDrawPoints[red](I)
-\tkzLabelSegment[sloped,above](X,Y){|rectangle : gold (z.X,z.Y)|}
+\tkzLabelSegment[sloped,above](X,Y){rectangle : gold (z.X,z.Y)}
\end{tikzpicture}
\end{verbatim}
\end{minipage}
@@ -291,7 +291,7 @@ z.I = R.gold.center
\tkzLabelPoints(X,Y)
\tkzLabelPoints[above](Z,W)
\tkzDrawPoints[red](I)
-\tkzLabelSegment[sloped,above](X,Y){|rectangle : gold (z.X,z.Y)|}
+\tkzLabelSegment[sloped,above](X,Y){rectangle : gold (z.X,z.Y)}
\end{tikzpicture}
\end{minipage}
% subsubsection gold_method (end)
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-examples.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-examples.tex
index 91923e2232..baaebd5d71 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-examples.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-examples.tex
@@ -1370,7 +1370,7 @@ z.F = intersection (L.LH,C.IH) -- feuerbach
z.A = point: new (0 , 0)
z.B = point: new (8 , 0)
L.AB = line: new (z.A,z.B)
- z.X,z.Y = L.AB: square ()
+ _,_,z.X,z.Y = get_points(L.AB: square ())
L.BX = line: new (z.B,z.X)
z.M = L.BX.mid
C.MA = circle: new (z.M,z.A)
@@ -1424,7 +1424,7 @@ z.C = intersection (L.AK,L.AB)
z.A = point: new (0 , 0)
z.C = point: new (6 , 0)
L.AC = line: new (z.A,z.C)
- z.x,z.y = L.AC: square ()
+ _,_,z.x,z.y = get_points(L.AC: square ())
z.O_1 = L.AC . mid
C = circle: new (z.O_1,z.x)
z.B = intersection (L.AC,C)
@@ -2370,7 +2370,7 @@ z.O = C.DC : inversion (z.W)
z.L = T.ABC: lemoine_point ()
z.S = T.ABC: spieker_center ()
C.euler = T.ABC: euler_circle ()
- z.N,z.Ma = get_points (C.euler)
+ z.N,z.Ma = get_points (C.euler)
C.exA = T.ABC : ex_circle ()
z.Ja,z.Xa = get_points (C.exA)
C.exB = T.ABC : ex_circle (1)
@@ -2388,7 +2388,7 @@ z.O = C.DC : inversion (z.W)
\begin{tikzpicture}
\tkzGetNodes
- \tkzDrawLines[add=1 and 1](A,B A,C B,C)
+ \tkzDrawLines[add=1 and 1](A,B A,C B,C)
\tkzDrawCircles(Ja,Xa Jb,Xb Jc,Xc o,t N,Ma) %
\tkzClipCircle(o,t)
\tkzDrawLines[red](o,L N,o Ma,t)
@@ -2411,7 +2411,7 @@ z.G = T.ABC.centroid
z.L = T.ABC: lemoine_point ()
z.S = T.ABC: spieker_center ()
C.euler = T.ABC: euler_circle ()
-z.N,z.Ma = get_points (C.euler)
+z.N,z.Ma = get_points (C.euler)
C.exA = T.ABC : ex_circle ()
z.Ja,z.Xa = get_points (C.exA)
C.exB = T.ABC : ex_circle (1)
@@ -2431,7 +2431,7 @@ z.t = intersection (L.ox,L.MaS) -- through
\hspace*{\fill}
\begin{tikzpicture}
\tkzGetNodes
-\tkzDrawLines[add=1 and 1](A,B A,C B,C)
+\tkzDrawLines[add=1 and 1](A,B A,C B,C)
\tkzDrawCircles(Ja,Xa Jb,Xb Jc,Xc o,t N,Ma) %
\tkzClipCircle(o,t)
\tkzDrawLines[red](o,L N,o Ma,t)
@@ -2523,7 +2523,7 @@ L.OOp = line : new (z.O,z.Op)
z.M = L.OOp.mid
\end{tkzelements}
\begin{tikzpicture}
- \tkzGetNodes
+ \tkzGetNodes
\tkzDrawCircle[red](O,P)
\tkzDrawCircle[purple](O',z1)
\tkzDrawCircle[cyan](M,T)
@@ -2559,7 +2559,7 @@ z.M = L.OOp.mid
\hspace*{\fill}
\begin{tikzpicture}
-\tkzGetNodes
+\tkzGetNodes
\tkzDrawCircle[red](O,P)
\tkzDrawCircle[purple](O',z1)
\tkzDrawCircle[cyan](M,T)
@@ -2576,7 +2576,7 @@ z.M = L.OOp.mid
\end{tikzpicture}
\hspace*{\fill}
% subsection orthogonal_circles_v2 (end)
-
+%
\subsection{Orthogonal circle to two circles} % (fold)
\label{sub:orthogonal_circle_to_two_circles}
@@ -2599,7 +2599,7 @@ z.M = L.OOp.mid
z.Kp = L.Kp.pb
\end{tkzelements}
\begin{tikzpicture}
- \tkzGetNodes
+ \tkzGetNodes
\tkzDrawCircles(O,B O',D)
\tkzDrawLine[add=1 and 2,cyan](E,F)
\tkzDrawLines[add=.5 and .5,orange](O,O' O,T O,T')
@@ -2628,10 +2628,10 @@ z.K = L.K.pb
z.Tp = L.Tp.pb
z.Kp = L.Kp.pb
\end{tkzelements}
-
+
\hspace*{\fill}
\begin{tikzpicture}
-\tkzGetNodes
+\tkzGetNodes
\tkzDrawCircles(O,B O',D)
\tkzDrawLine[add=1 and 2,cyan](E,F)
\tkzDrawLines[add=.5 and .5,orange](O,O' O,T O,T')
@@ -2662,12 +2662,12 @@ z.Kp = L.Kp.pb
C.O2C = circle : new (z.O_2,z.B)
z.Q = C.O1C : midarc (z.C,z.A)
z.P = C.O2C : midarc (z.B,z.C)
- L.O1O2 = line : new (z.O_1,z.O_2)
- L.O0O1 = line : new (z.O_0,z.O_1)
+ L.O1O2 = line : new (z.O_1,z.O_2)
+ L.O0O1 = line : new (z.O_0,z.O_1)
L.O0O2 = line : new (z.O_0,z.O_2)
z.M_0 = L.O1O2 : harmonic_ext (z.C)
z.M_1 = L.O0O1 : harmonic_int (z.A)
- z.M_2 = L.O0O2 : harmonic_int (z.B)
+ z.M_2 = L.O0O2 : harmonic_int (z.B)
L.BQ = line : new (z.B,z.Q)
L.AP = line : new (z.A,z.P)
z.S = intersection (L.BQ,L.AP)
@@ -2739,12 +2739,12 @@ C.O1C = circle : new (z.O_1,z.C)
C.O2C = circle : new (z.O_2,z.B)
z.Q = C.O1C : midarc (z.C,z.A)
z.P = C.O2C : midarc (z.B,z.C)
-L.O1O2 = line : new (z.O_1,z.O_2)
-L.O0O1 = line : new (z.O_0,z.O_1)
+L.O1O2 = line : new (z.O_1,z.O_2)
+L.O0O1 = line : new (z.O_0,z.O_1)
L.O0O2 = line : new (z.O_0,z.O_2)
z.M_0 = L.O1O2 : harmonic_ext (z.C)
z.M_1 = L.O0O1 : harmonic_int (z.A)
-z.M_2 = L.O0O2 : harmonic_int (z.B)
+z.M_2 = L.O0O2 : harmonic_int (z.B)
L.BQ = line : new (z.B,z.Q)
L.AP = line : new (z.A,z.P)
z.S = intersection (L.BQ,L.AP)
@@ -2966,7 +2966,7 @@ C.OA = circle : new (z.O,z.A)
z.Ap = C.OA : antipode (z.A)
z.B = intersection (L.AM, C.OA)
\end{tkzelements}
-
+
\hspace*{\fill}
\begin{tikzpicture}
\tkzGetNodes
@@ -3253,7 +3253,7 @@ z.n,z.np = get_points (C.BC: tangent_at (z.N))
\subsection{Tangent and circle} % (fold)
\label{sub:tangent_and_circle}
\begin{minipage}{.5\textwidth}
-\begin{verbatim}
+\begin{verbatim}
\begin{tkzelements}
z.A = point: new (1,0)
z.B = point: new (2,2)
@@ -3888,21 +3888,21 @@ z.Cp = C.AC: inversion ( z.B, z.E, z.C )
\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
\begin{verbatim}
\begin{tkzelements}
- z.a = point: new(1,0)
- z.b = point: new(6,2)
- z.c = point: new(2,5)
- T = triangle : new (z.a,z.b,z.c)
- z.g = T : gergonne_point ()
- z.i = T.incenter
- z.ta,z.tb,z.tc = get_points (T : intouch ())
-end{tkzelements}
+z.a = point: new(1,0)
+z.b = point: new(6,2)
+z.c = point: new(2,5)
+T = triangle : new (z.a,z.b,z.c)
+z.g = T : gergonne_point ()
+z.i = T.incenter
+z.ta,z.tb,z.tc = get_points (T : intouch ())
+\end{tkzelements}
\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawPolygons(a,b,c)
- \tkzDrawPoints(a,b,c,g)
- \tkzLabelPoints(a,b,c)
- \tkzDrawSegments (a,ta b,tb c,tc)
- \tkzDrawCircle(i,ta)
+\tkzGetNodes
+\tkzDrawPolygons(a,b,c)
+\tkzDrawPoints(a,b,c,g)
+\tkzLabelPoints(a,b,c)
+\tkzDrawSegments (a,ta b,tb c,tc)
+\tkzDrawCircle(i,ta)
\end{tikzpicture}
\end{verbatim}
\end{minipage}
@@ -3986,4 +3986,494 @@ z.z_0,z.z_1 = get_points (L.anti)
\tkzDrawCircle(L,x_0)
\end{tikzpicture}
\end{minipage}
-% subsection antiparallel_through_lemoine_point (end) \ No newline at end of file
+% subsection antiparallel_through_lemoine_point (end)
+
+\subsection{Soddy circle without function} % (fold)
+\label{sub:soddy}
+
+\begin{verbatim}
+\begin{tkzelements}
+z.A = point : new ( 0 , 0 )
+z.B = point : new ( 5 , 0 )
+z.C = point : new ( 0.5 , 4 )
+T.ABC = triangle : new ( z.A,z.B,z.C )
+z.I = T.ABC.incenter
+z.E,z.F,z.G = T.ABC : projection (z.I)
+C.ins = circle : new (z.I,z.E)
+T.orthic = T.ABC : orthic ()
+z.Ha,z.Hb,z.Hc = get_points (T.orthic)
+C.CF = circle : new ( z.C , z.F )
+C.AG = circle : new ( z.A , z.G )
+C.BE = circle : new ( z.B , z.E )
+L.Ah = line : new ( z.A , z.Ha )
+L.Bh = line : new ( z.B , z.Hb )
+L.Ch = line : new ( z.C , z.Hc )
+z.X,z.Xp = intersection (L.Ah,C.AG)
+z.Y,z.Yp = intersection (L.Bh,C.BE)
+z.Z,z.Zp = intersection (L.Ch,C.CF)
+L.XpE = line : new (z.Xp,z.E)
+L.YpF = line : new (z.Yp,z.F)
+L.ZpG = line : new (z.Zp,z.G)
+z.S = intersection (L.XpE,L.YpF)
+z.Xi = intersection(L.XpE,C.AG)
+z.Yi = intersection(L.YpF,C.BE)
+_,z.Zi = intersection(L.ZpG,C.CF)
+z.S = triangle : new (z.Xi,z.Yi,z.Zi).circumcenter
+C.soddy_int = circle : new (z.S,z.Xi)
+C.soddy_ext = C.ins : inversion (C.soddy_int)
+z.w = C.soddy_ext.center
+z.s = C.soddy_ext.through
+z.Xip,z.Yip,z.Zip = C.ins : inversion (z.Xi,z.Yi,z.Zi)
+\end{tkzelements}
+
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawPolygon(A,B,C)
+\tkzDrawPoints(A,B,C,E,F,G,Ha,Hb,Hc,X,Y,Z,X',Y',Z',Xi,Yi,Zi,I)
+\tkzDrawPoints(Xi',Yi',Zi',S)
+\tkzLabelPoints(A,B,C,E,F,G,X,Y,Z,X',Y',Z')
+\tkzDrawCircles(A,G B,E C,F I,E S,Xi w,s)
+\tkzDrawLines(X',Ha Y',Hb Z',Hc)
+\tkzDrawLines(X',E Y',F Z',G)
+\end{tikzpicture}
+\end{verbatim}
+
+\begin{tkzelements}
+z.A = point : new ( 0 , 0 )
+z.B = point : new ( 5 , 0 )
+z.C = point : new ( 0.5 , 4 )
+T.ABC = triangle : new ( z.A,z.B,z.C )
+z.I = T.ABC.incenter
+z.E,z.F,z.G = T.ABC : projection (z.I)
+C.ins = circle : new (z.I,z.E)
+T.orthic = T.ABC : orthic ()
+z.Ha,z.Hb,z.Hc = get_points (T.orthic)
+C.CF = circle : new ( z.C , z.F )
+C.AG = circle : new ( z.A , z.G )
+C.BE = circle : new ( z.B , z.E )
+L.Ah = line : new ( z.A , z.Ha )
+L.Bh = line : new ( z.B , z.Hb )
+L.Ch = line : new ( z.C , z.Hc )
+z.X,z.Xp = intersection (L.Ah,C.AG)
+z.Y,z.Yp = intersection (L.Bh,C.BE)
+z.Z,z.Zp = intersection (L.Ch,C.CF)
+L.XpE = line : new (z.Xp,z.E)
+L.YpF = line : new (z.Yp,z.F)
+L.ZpG = line : new (z.Zp,z.G)
+z.S = intersection (L.XpE,L.YpF)
+z.Xi = intersection(L.XpE,C.AG)
+z.Yi = intersection(L.YpF,C.BE)
+_,z.Zi = intersection(L.ZpG,C.CF)
+z.S = triangle : new (z.Xi,z.Yi,z.Zi).circumcenter
+C.soddy_int = circle : new (z.S,z.Xi)
+C.soddy_ext = C.ins : inversion (C.soddy_int)
+z.w = C.soddy_ext.center
+z.s = C.soddy_ext.through
+z.Xip,z.Yip,z.Zip = C.ins : inversion (z.Xi,z.Yi,z.Zi)
+\end{tkzelements}
+
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawPolygon(A,B,C)
+\tkzDrawPoints(A,B,C,E,F,G,Ha,Hb,Hc,X,Y,Z,X',Y',Z',Xi,Yi,Zi,I)
+\tkzDrawPoints(Xi',Yi',Zi',S)
+\tkzLabelPoints(A,B,C,E,F,G,X,Y,Z,X',Y',Z')
+\tkzDrawCircles(A,G B,E C,F I,E S,Xi w,s)
+\tkzDrawLines(X',Ha Y',Hb Z',Hc)
+\tkzDrawLines(X',E Y',F Z',G)
+\end{tikzpicture}
+% subsection soddy (end)
+
+\subsection{Soddy circle with function} % (fold)
+\label{sub:soddy_circle_with_function}
+
+\begin{verbatim}
+\begin{tkzelements}
+z.A = point : new ( 0 , 0 )
+z.B = point : new ( 5 , 0 )
+z.C = point : new (4 , 4 )
+T.ABC = triangle : new ( z.A,z.B,z.C )
+z.I = T.ABC.incenter
+z.E,z.F,z.G = T.ABC : projection (z.I)
+T.orthic = T.ABC : orthic ()
+z.Ha,z.Hb,z.Hc = get_points (T.orthic)
+C.ins = circle : new (z.I,z.E)
+z.s,z.xi,z.yi,z.zi = T.ABC : soddy_center ()
+C.soddy_int = circle : new (z.s,z.xi)
+C.soddy_ext = C.ins : inversion (C.soddy_int)
+z.w = C.soddy_ext.center
+z.t = C.soddy_ext.through
+z.Xip,z.Yip,z.Zip = C.ins : inversion (z.xi,z.yi,z.zi)
+ \end{tkzelements}
+
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawPolygon(A,B,C)
+\tkzDrawCircles(A,G B,E C,F I,E s,xi w,t)
+\tkzDrawPoints(A,B,C,E,F,G,s,w,xi,t)
+\tkzLabelPoints(A,B,C)
+\tkzDrawPoints(A,B,C,E,F,G,Ha,Hb,Hc,xi,yi,zi,I)
+\tkzDrawPoints(Xi',Yi',Zi')
+\tkzLabelPoints(A,B,C,E,F,G)
+\tkzDrawCircles(A,G B,E C,F I,E w,s)
+\end{tikzpicture}
+\end{verbatim}
+
+\begin{tkzelements}
+z.A = point : new ( 0 , 0 )
+z.B = point : new ( 5 , 0 )
+z.C = point : new (4 , 4 )
+T.ABC = triangle : new ( z.A,z.B,z.C )
+z.I = T.ABC.incenter
+z.E,z.F,z.G = T.ABC : projection (z.I)
+T.orthic = T.ABC : orthic ()
+z.Ha,z.Hb,z.Hc = get_points (T.orthic)
+C.ins = circle : new (z.I,z.E)
+z.s,z.xi,z.yi,z.zi = T.ABC : soddy_center ()
+C.soddy_int = circle : new (z.s,z.xi)
+C.soddy_ext = C.ins : inversion (C.soddy_int)
+z.w = C.soddy_ext.center
+z.t = C.soddy_ext.through
+z.Xip,z.Yip,z.Zip = C.ins : inversion (z.xi,z.yi,z.zi)
+ \end{tkzelements}
+
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawPolygon(A,B,C)
+\tkzDrawCircles(A,G B,E C,F I,E s,xi w,t)
+\tkzDrawPoints(A,B,C,E,F,G,s,w,xi,t)
+\tkzLabelPoints(A,B,C)
+\tkzDrawPoints(A,B,C,E,F,G,Ha,Hb,Hc,xi,yi,zi,I)
+\tkzDrawPoints(Xi',Yi',Zi')
+\tkzLabelPoints(A,B,C,E,F,G)
+\tkzDrawCircles(A,G B,E C,F I,E w,s)
+\end{tikzpicture}
+
+% subsection soddy_circle_with_function (end)
+
+\subsubsection{Pappus chain} % (fold)
+\label{ssub:pappus_chain}
+ Soit le point $D$ appartenant à la droite $(AC)$ tel que
+ \[ DB \cdot DA = AC^2\]
+ alors $B$ est l'image de $D$ dans l'inversion de centre $A$ et puissance $AC^2$.
+ Les demi-cercles de diamètre $[AB]$ et$[AC]$ passent par le pôle $A$. Ils ont pour images les demi-droites $\mathcal{L'}$ et $\mathcal{L}$.
+
+Les cercles de centre $J_i$ et de diamètre $S_iT_i$ ont pour images les cercles de diamètre $S'_iT'_i$.
+
+ \pgfmathsetmacro{\xB}{6}%
+ \pgfmathsetmacro{\xC}{9}%
+ \pgfmathsetmacro{\xD}{(\xC*\xC)/\xB}%
+ \pgfmathsetmacro{\xJ}{(\xC+\xD)/2}%
+ \pgfmathsetmacro{\r}{\xD-\xJ}%
+ \pgfmathsetmacro{\nc}{2}%
+
+\begin{tikzpicture}[scale=1,ultra thin]
+ \tkzDefPoints{0/0/A,\xB/0/B,\xC/0/C,\xD/0/D}
+ \tkzDefPointBy[rotation = center C angle -90](B) \tkzGetPoint{c}
+ \tkzDefPointBy[rotation = center A angle 90](C) \tkzGetPoint{a}
+ \tkzDefPointBy[rotation = center D angle -90](C) \tkzGetPoint{d}
+ \tkzDrawLines[add=0 and 2.25](C,c)
+ \tkzDrawLines[add=0 and 1.5](D,d)
+ \tkzDefCircle[diameter](A,C) \tkzDrawSemiCircle(tkzPointResult,C)
+ \tkzDefCircle[diameter](A,B) \tkzDrawSemiCircle(tkzPointResult,B)
+ \tkzDefCircle[diameter](B,C) \tkzDrawSemiCircle(tkzPointResult,C)
+ \tkzDefCircle[diameter](C,D) \tkzDrawSemiCircle(tkzPointResult,D)
+ \tkzDrawArc[red](A,C)(a)
+ \tkzDrawPoints(A,B,C,D)
+ \tkzLabelPoints(A,B,C,D)
+ \tkzLabelLine[left,pos=3](C,c){$\mathcal{L}$}
+ \tkzLabelLine[right,pos=2.5](D,d){$\mathcal{L'}$}
+ \foreach \i in {1,...,\nc}
+{\tkzDefPoint(\xJ,2*\r*\i){J}
+ \tkzDefPoint(\xJ,2*\r*\i-\r){H}
+ \tkzDefCircleBy[inversion = center A through C](J,H)\tkzGetPoints{J'}{H'}
+ \tkzInterLC(A,J)(J,H) \tkzGetPoints{S}{T}
+ \tkzDefPointsBy[inversion = center A through C](S,T){S',T'}
+ \tkzDrawCircle(J,H)
+ \tkzDefCircle[diameter](S',T') \tkzGetPoint{I'}
+ \tkzDrawCircle(I',T')
+ \tkzDrawLines[dashed,add = 0 and .15](A,T A,S A,H)
+ \tkzDrawPoints(J,H,H',S,S',T,T')
+ \tkzLabelPoint(J){$J_\i$}
+ \tkzLabelPoint(S){$S_\i$}
+ \tkzLabelPoint(T){$T_\i$}
+ \tkzLabelPoint(H){$H_\i$}
+ \tkzLabelPoint(S'){$S'_\i$}
+ \tkzLabelPoint(T'){$T'_\i$}
+ \tkzLabelPoint(H'){$H'_\i$}}
+\end{tikzpicture}
+
+\begin{verbatim}
+\begin{tkzelements}
+ xC,nc = 10,16
+ xB = xC/tkzphi
+ xD = (xC*xC)/xB
+ xJ = (xC+xD)/2
+ r = xD-xJ
+ z.A = point : new ( 0 , 0 )
+ z.B = point : new ( xB , 0)
+ z.C = point : new ( xC , 0)
+ L.AC = line : new (z.A,z.C)
+ z.i = L.AC.mid
+ L.AB = line:new (z.A,z.B)
+ z.j = L.AB.mid
+ z.D = point : new ( xD , 0)
+ C.AC = circle: new (z.A,z.C)
+ for i = -nc,nc do
+ z["J"..i] = point: new (xJ,2*r*i)
+ z["H"..i] = point: new (xJ,2*r*i-r)
+ z["J"..i.."p"], z["H"..i.."p"] = C.AC : inversion (z["J"..i],z["H"..i])
+ L.AJ = line : new (z.A,z["J"..i])
+ C.JH = circle: new ( z["J"..i] , z["H"..i])
+ z["S"..i], z["T"..i] = intersection (L.AJ,C.JH)
+ z["S"..i.."p"], z["T"..i.."p"] = C.AC : inversion (z["S"..i],z["T"..i])
+ L.SpTp = line:new ( z["S"..i.."p"], z["T"..i.."p"])
+ z["I"..i] = L.SpTp.mid
+ end
+\end{tkzelements}
+
+\def\nc{\tkzUseLua{nc}}
+
+\begin{tikzpicture}[ultra thin]
+ \tkzGetNodes
+ \tkzDrawCircle[fill=teal!20](i,C)
+ \tkzDrawCircle[fill=PineGreen!60](j,B)
+ \foreach \i in {-\nc,...,0,...,\nc} {
+ \tkzDrawCircle[fill=teal]({I\i},{S\i'})
+ }
+\end{tikzpicture}
+
+\end{verbatim}
+
+\begin{tkzelements}
+ xC,nc = 10,16
+ xB = xC/tkzphi
+ xD = (xC*xC)/xB
+ xJ = (xC+xD)/2
+ r = xD-xJ
+ z.A = point : new ( 0 , 0 )
+ z.B = point : new ( xB , 0)
+ z.C = point : new ( xC , 0)
+ L.AC = line : new (z.A,z.C)
+ z.i = L.AC.mid
+ L.AB = line:new (z.A,z.B)
+ z.j = L.AB.mid
+ z.D = point : new ( xD , 0)
+ C.AC = circle: new (z.A,z.C)
+ for i = -nc,nc do
+ z["J"..i] = point: new (xJ,2*r*i)
+ z["H"..i] = point: new (xJ,2*r*i-r)
+ z["J"..i.."p"], z["H"..i.."p"] = C.AC : inversion (z["J"..i],z["H"..i])
+ L.AJ = line : new (z.A,z["J"..i])
+ C.JH = circle: new ( z["J"..i] , z["H"..i])
+ z["S"..i], z["T"..i] = intersection (L.AJ,C.JH)
+ z["S"..i.."p"], z["T"..i.."p"] = C.AC : inversion (z["S"..i],z["T"..i])
+ L.SpTp = line:new ( z["S"..i.."p"], z["T"..i.."p"])
+ z["I"..i] = L.SpTp.mid
+ end
+\end{tkzelements}
+
+\def\nc{\tkzUseLua{nc}}
+
+\begin{tikzpicture}[ultra thin]
+ \tkzGetNodes
+ \tkzDrawCircle[fill=teal!20](i,C)
+ \tkzDrawCircle[fill=PineGreen!60](j,B)
+ \foreach \i in {-\nc,...,0,...,\nc} {
+ \tkzDrawCircle[fill=teal]({I\i},{S\i'})
+ }
+\end{tikzpicture}
+
+
+% subsubsection pappus_chain (end)
+
+\subsection{Three Circles} % (fold)
+\label{sub:three_circles}
+
+\begin{verbatim}
+\begin{tkzelements}
+function threecircles(c1,r1,c2,r2,c3,h1,h3,h2)
+ local xk = math.sqrt (r1*r2)
+ local cx = (2*r1*math.sqrt(r2))/(math.sqrt(r1)+math.sqrt(r2))
+ local cy = (r1*r2)/(math.sqrt(r1)+math.sqrt(r2))^2
+ z[c2] = point : new ( 2*xk , r2 )
+ z[h2] = point : new (2*xk,0)
+ z[c1] = point : new (0,r1)
+ z[h1] = point : new (0,0)
+ L.h1h2 = line: new(z[h1],z[h2])
+ z[c3] = point : new (cx,cy)
+ z[h3] = L.h1h2: projection (z[c3])
+end
+ threecircles("A",4,"B",3,"C","E","G","F")
+\end{tkzelements}
+
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawSegment[color = red](E,F)
+\tkzDrawCircle[orange,fill=orange!20](A,E)
+\tkzDrawCircle[purple,fill=purple!20](B,F)
+\tkzDrawCircle[teal,fill=teal!20](C,G)
+\end{tikzpicture}
+\end{verbatim}
+
+\begin{tkzelements}
+function threecircles(c1,r1,c2,r2,c3,h1,h3,h2)
+ local xk = math.sqrt (r1*r2)
+ local cx = (2*r1*math.sqrt(r2))/(math.sqrt(r1)+math.sqrt(r2))
+ local cy = (r1*r2)/(math.sqrt(r1)+math.sqrt(r2))^2
+ z[c2] = point : new ( 2*xk , r2 )
+ z[h2] = point : new (2*xk,0)
+ z[c1] = point : new (0,r1)
+ z[h1] = point : new (0,0)
+ L.h1h2 = line: new(z[h1],z[h2])
+ z[c3] = point : new (cx,cy)
+ z[h3] = L.h1h2: projection (z[c3])
+end
+ threecircles("A",4,"B",3,"C","E","G","F")
+\end{tkzelements}
+
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawSegment[color = red](E,F)
+\tkzDrawCircle[orange,fill=orange!20](A,E)
+\tkzDrawCircle[purple,fill=purple!20](B,F)
+\tkzDrawCircle[teal,fill=teal!20](C,G)
+\end{tikzpicture}
+
+% subsection three_circles (end)
+
+\subsection{pentagons in a golden arbelos} % (fold)
+\label{sub:golden_arbelos}
+
+\begin{verbatim}
+\begin{tkzelements}
+z.A = point: new (0 , 0)
+z.B = point: new (10 , 0)
+L.AB = line: new ( z.A, z.B)
+z.C = L.AB : gold_ratio ()
+L.AC = line: new ( z.A, z.C)
+L.CB = line: new ( z.C, z.B)
+z.O_0 = L.AB.mid
+z.O_1 = L.AC.mid
+z.O_2 = L.CB.mid
+C.O0B = circle: new ( z.O_0, z.B)
+C.O1C = circle: new ( z.O_1, z.C)
+C.O2B = circle: new ( z.O_2, z.B)
+z.M_0 = C.O1C : external_similitude (C.O2B)
+L.O0C = line:new(z.O_0,z.C)
+T.golden = L.O0C : golden ()
+z.L = T.golden.pc
+L.O0L = line:new(z.O_0,z.L)
+z.D = intersection (L.O0L,C.O0B)
+L.DB = line:new(z.D,z.B)
+z.Z = intersection (L.DB,C.O2B)
+L.DA = line:new(z.D,z.A)
+z.I = intersection (L.DA,C.O1C)
+L.O2Z = line:new(z.O_2,z.Z)
+z.H = intersection (L.O2Z,C.O0B)
+C.BD = circle:new (z.B,z.D)
+C.DB = circle:new (z.D,z.B)
+_,z.G = intersection (C.BD,C.O0B)
+z.E = intersection (C.DB,C.O0B)
+C.GB = circle:new (z.G,z.B)
+_,z.F = intersection (C.GB,C.O0B)
+k = 1/tkzphi^2
+kk = tkzphi
+z.D_1,z.E_1,z.F_1,z.G_1 = z.B : homothety (k, z.D,z.E,z.F,z.G)
+z.D_2,z.E_2,z.F_2,z.G_2 = z.M_0 : homothety (kk,z.D_1,z.E_1,z.F_1,z.G_1)
+\end{tkzelements}
+\end{verbatim}
+
+\begin{verbatim}
+\begin{tikzpicture}[scale=.8]
+\tkzGetNodes
+\tkzDrawPolygon[red](O_2,O_0,I,D,H)
+\tkzDrawPolygon[blue](B,D_1,E_1,F_1,G_1)
+\tkzDrawPolygon[green](C,D_2,E_2,F_2,G_2)
+\tkzDrawPolygon[purple](B,D,E,F,G)
+\tkzDrawCircles(O_0,B O_1,C O_2,B)
+\tkzFillPolygon[fill=red!20,opacity=.20](O_2,O_0,I,D,H)
+\tkzFillPolygon[fill=blue!20,opacity=.20](B,D_1,E_1,F_1,G_1)
+\tkzFillPolygon[fill=green!60,opacity=.20](C,D_2,E_2,F_2,G_2)
+\tkzFillPolygon[fill=purple!20,opacity=.20](B,D,E,F,G)
+\tkzDrawCircles(O_0,B O_1,C O_2,B)
+\tkzDrawSegments[new](A,B)
+\tkzDrawPoints(A,B,C,O_0,O_1,O_2,Z,I,H,B,D,E,F)
+\tkzDrawPoints(D_1,E_1,F_1,G_1)
+\tkzDrawPoints(D_2,E_2,F_2,G_2)
+\tkzDrawPoints[red](F_1)
+\tkzLabelPoints(A,B,C,O_0,O_2)
+\tkzLabelPoints[below](O_1,G)
+\tkzLabelPoints[above right](D,H)
+\tkzLabelPoints[above left](E,E_1,E_2)
+\tkzLabelPoints[below left](F,F_1,F_2)
+\tkzLabelPoints(D_1,G_1)
+\tkzLabelPoints(D_2,G_2)
+\end{tikzpicture}
+\vspace{\fill}
+\end{verbatim}
+
+\begin{tkzelements}
+z.A = point: new (0 , 0)
+z.B = point: new (10 , 0)
+L.AB = line: new ( z.A, z.B)
+z.C = L.AB : gold_ratio ()
+L.AC = line: new ( z.A, z.C)
+L.CB = line: new ( z.C, z.B)
+z.O_0 = L.AB.mid
+z.O_1 = L.AC.mid
+z.O_2 = L.CB.mid
+C.O0B = circle: new ( z.O_0, z.B)
+C.O1C = circle: new ( z.O_1, z.C)
+C.O2B = circle: new ( z.O_2, z.B)
+z.M_0 = C.O1C : external_similitude (C.O2B)
+L.O0C = line:new(z.O_0,z.C)
+T.golden = L.O0C : golden ()
+z.L = T.golden.pc
+L.O0L = line:new(z.O_0,z.L)
+z.D = intersection (L.O0L,C.O0B)
+L.DB = line:new(z.D,z.B)
+z.Z = intersection (L.DB,C.O2B)
+L.DA = line:new(z.D,z.A)
+z.I = intersection (L.DA,C.O1C)
+L.O2Z = line:new(z.O_2,z.Z)
+z.H = intersection (L.O2Z,C.O0B)
+C.BD = circle:new (z.B,z.D)
+C.DB = circle:new (z.D,z.B)
+_,z.G = intersection (C.BD,C.O0B)
+z.E = intersection (C.DB,C.O0B)
+C.GB = circle:new (z.G,z.B)
+_,z.F = intersection (C.GB,C.O0B)
+k = 1/tkzphi^2
+kk = tkzphi
+z.D_1,z.E_1,z.F_1,z.G_1 = z.B : homothety (k, z.D,z.E,z.F,z.G)
+z.D_2,z.E_2,z.F_2,z.G_2 = z.M_0 : homothety (kk,z.D_1,z.E_1,z.F_1,z.G_1)
+\end{tkzelements}
+\vspace{\fill}
+\begin{tikzpicture}[scale=.8]
+\tkzGetNodes
+\tkzDrawPolygon[red](O_2,O_0,I,D,H)
+\tkzDrawPolygon[blue](B,D_1,E_1,F_1,G_1)
+\tkzDrawPolygon[green](C,D_2,E_2,F_2,G_2)
+\tkzDrawPolygon[purple](B,D,E,F,G)
+\tkzDrawCircles(O_0,B O_1,C O_2,B)
+\tkzFillPolygon[fill=red!20,opacity=.20](O_2,O_0,I,D,H)
+\tkzFillPolygon[fill=blue!20,opacity=.20](B,D_1,E_1,F_1,G_1)
+\tkzFillPolygon[fill=green!60,opacity=.20](C,D_2,E_2,F_2,G_2)
+\tkzFillPolygon[fill=purple!20,opacity=.20](B,D,E,F,G)
+\tkzDrawCircles(O_0,B O_1,C O_2,B)
+\tkzDrawSegments[new](A,B)
+\tkzDrawPoints(A,B,C,O_0,O_1,O_2,Z,I,H,B,D,E,F)
+\tkzDrawPoints(D_1,E_1,F_1,G_1)
+\tkzDrawPoints(D_2,E_2,F_2,G_2)
+\tkzDrawPoints[red](F_1)
+\tkzLabelPoints(A,B,C,O_0,O_2)
+\tkzLabelPoints[below](O_1,G)
+\tkzLabelPoints[above right](D,H)
+\tkzLabelPoints[above left](E,E_1,E_2)
+\tkzLabelPoints[below left](F,F_1,F_2)
+\tkzLabelPoints(D_1,G_1)
+\tkzLabelPoints(D_2,G_2)
+\end{tikzpicture}
+\vspace{\fill}
+% subsection golden_arbelos (end) \ No newline at end of file
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-indepthstudy.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-indepthstudy.tex
index 53646eb6c3..c8623799ee 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-indepthstudy.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-indepthstudy.tex
@@ -216,7 +216,7 @@ The class is provided with two specific metamethods.
|z1..z2 = (a+ib) .. (c+id) = (a+ib) (c-id) = ac+bd + i(bc-ad) |
- There's also a mathematical function, |dot_product|, which takes three arguments. See example \ref{ssub:dot_or_scalar_product}
+ There's also a mathematical function, |dot_product|, which takes three arguments. See example \ref{sub:dot_or_scalar_product}
\item With the same idea, the operation associated with |^| is the determinant i.e.
@@ -667,7 +667,7 @@ You obtain a point on the object by entering a real number between 0 and 1.
\end{tkzelements}
\begin{tikzpicture}
\tkzGetNodes
- \tkzDrawline(A,B)
+ \tkzDrawLine(A,B)
\tkzDrawCircle(A,B)
\tkzDrawPolygon(A,B,C)
\tkzDrawPoints(A,B,C,I,J,K)
@@ -699,4 +699,37 @@ You obtain a point on the object by entering a real number between 0 and 1.
% subsection point_method (end)
+\subsection{Behind the objects} % (fold)
+\label{sub:behind_the_objects}
+
+Before introducing objects, I only used functions whose parameters were points (comlexes).
+For example, |z.m = midpoint_ (z.a,z.b)| defines the midpoint of points $a$ and $b$. Avec les objets, il faut d'abord définir la droite/sgment |L.ab| puis on obtient le milieu avec |z.m = L.ab.mid|.
+
+I've kept the functions (which I'll call "primary") whose only arguments are points. They are distinguished from the others by a terminal underscore. In fact, all (almost) object-related functions depend on a primary function.
+
+We've just seen the case of the midpoint of a point, so let's look at two other cases:
+
+\begin{itemize}
+ \item Rotation around a point. |c| is the center of rotation, |a| the angle and |pt| the point to be affected.
+ For example: |z.Mp = rotation (z.A,math.pi/6,z.M)|
+
+\begin{mybox}
+ function rotation\_ (c,a,pt)\\
+ local z = point( math.cos(a) , math.sin(a) )\\
+ return z*(pt-c)+c\\
+ end \end{mybox}
+
+ With objects, this gives |z.Mp = z.A : rotation (math.pi/6,z.M)|
+
+
+\item The intersection of a line and a circle is obtained using |intersection_lc_ (z.A,z.B,z.O,z.T)|.
+ using the straight line $(A,B)$ and the circle $C(O,T)$.
+
+ This will result in the objects: | intersection (L.AB,C.OT)|
+\end{itemize}
+
+The difference is that programming is more direct with primary functions and a little more efficient, but loses visibility.
+
+
+% subsection behind_the_objects (end)
% section in_depth_study (end) \ No newline at end of file
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-intersection.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-intersection.tex
index f632238e45..245bca5e66 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-intersection.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-intersection.tex
@@ -176,9 +176,10 @@ Other examples: \ref{ssub:altshiller}, \ref{sub:the_figure_pappus_circle}
\label{sub:line_ellipse}
The following example is complex, but it shows the possibilities of Lua.
The designation of intersection points is a little more complicated than the previous one, as the argument characterizing the major axis must be taken into account. The principle is the same, but this argument must be subtracted. In concrete terms, you need to consider the slopes of the lines formed by the center of the ellipse and the points of intersection, and the slope of the major axis.
+\vspace{1em}
\begin{minipage}{0.5\textwidth}
-\begin{tkzexample}[code only,small]
+\begin{verbatim}
\begin{tkzelements}
scale = .5
z.a = point: new (5 , 2)
@@ -206,7 +207,7 @@ The designation of intersection points is a little more complicated than the pre
\tkzFillAngles[green!30,opacity=.4](e,c,v)
\tkzFillAngles[green!80,opacity=.4](e,c,u)
\end{tikzpicture}
-\end{tkzexample}
+\end{verbatim}
\end{minipage}
\begin{minipage}{0.5\textwidth}
\begin{tkzelements}
@@ -241,73 +242,6 @@ The designation of intersection points is a little more complicated than the pre
\end{minipage}
Other examples: \ref{ssub:function_tkzname_ellipse__foci}, \ref{sub:hexagram}
-%\caption{Intersection line and ellipse}
-
-% \begin{tkzexample}[code only,small]
-% \begin{tkzelements}
-% scale = .5
-% z.a = point: new (5 , 2)
-% z.b = point: new (-4 , 0)
-% z.m = point: new (2 , -3)
-% z.n = point: new (4 , -3)
-% L.ab = line : new (z.a,z.b)
-% L.mn = line : new (z.m,z.n)
-% z.c = L.ab. mid
-% z.e = L.ab: point (-.2)
-% E = ellipse: foci (z.a,z.b,z.e)
-% z.u,z.v = intersection (E,L.mn)
-% -- transfer to tex
-% a = E.Rx
-% b = E.Ry
-% ang = math.deg(E.slope)
-% \end{tkzelements}
-%
-% \begin{tikzpicture}
-% \tkzGetNodes
-% \tkzDrawLines[red](a,b u,v) % p,s p,t
-% \tkzDrawPoints(a,b,c,e,u,v) %
-% \tkzLabelPoints(a,b,c,u,v)
-% \tkzDrawEllipse[teal](c,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang})
-% \tkzFillAngles[green!30,opacity=.4](e,c,v)
-% \tkzDrawSegments(c,u c,v)
-% \tkzFillAngles[green!30,opacity=.4,size=1.2](e,c,v)
-% \tkzFillAngles[green!80,opacity=.4](e,c,u)
-% \end{tikzpicture}
-% \end{tkzexample}
-%
-% \begin{tkzelements}
-% scale=.5
-% z.a = point: new (5 , 2)
-% z.b = point: new (-4 , 0)
-% z.m = point: new (2 , -3)
-% z.n = point: new (4 , -3)
-% L.ab = line : new (z.a,z.b)
-% L.mn = line : new (z.m,z.n)
-% z.c = L.ab. mid
-% z.e = L.ab: point (-.2)
-% E = ellipse: foci (z.a,z.b,z.e)
-% z.u,z.v = intersection (E,L.mn)
-% -- transfer to tex
-% a = E.Rx
-% b = E.Ry
-% ang = math.deg(E.slope)
-% \end{tkzelements}
-%
-%
-% \hspace*{\fill}
-% \begin{tikzpicture}
-% \tkzGetNodes
-% \tkzDrawLines[red](a,b u,v) % p,s p,t
-% \tkzDrawPoints(a,b,c,e,u,v) %
-% \tkzLabelPoints(a,b,c,u,v)
-% \tkzDrawEllipse[teal](c,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang})
-% \tkzFillAngles[green!30,opacity=.4](e,c,v)
-% \tkzDrawSegments(c,u c,v)
-% \tkzFillAngles[green!30,opacity=.4,size=1.2](e,c,v)
-% \tkzFillAngles[green!80,opacity=.4](e,c,u)
-% \end{tikzpicture}
-% \hspace*{\fill}
-%\caption{Intersection line and ellipse}
% subsection line_ellipse (end)
% section intersections (end) \ No newline at end of file
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-main.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-main.tex
index e36bac1aa7..c4db9a8816 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-main.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-main.tex
@@ -21,10 +21,10 @@
headings = small
]{tkz-doc}
\gdef\tkznameofpack{tkz-elements}
-\gdef\tkzversionofpack{1.60c}
+\gdef\tkzversionofpack{1.72c}
\gdef\tkzdateofpack{\today}
\gdef\tkznameofdoc{tkz-elements.pdf}
-\gdef\tkzversionofdoc{1.60c}
+\gdef\tkzversionofdoc{1.72c}
\gdef\tkzdateofdoc{\today}
\gdef\tkzauthorofpack{Alain Matthes}
\gdef\tkzadressofauthor{}
@@ -168,6 +168,7 @@ sharp corners
\AtBeginDocument{\MakeShortVerb{\|}} % link to shortvrb
\begin{document}
+% \LuaCodeDebugOn
\parindent=0pt
\tkzTitleFrame{tkz-elements \tkzversionofpack\\Euclidean Geometry}
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-presentation.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-presentation.tex
index b02c8cc0ba..2dbc732666 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-presentation.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-presentation.tex
@@ -148,7 +148,7 @@ C.QA = circle: new ( z.Q, z.A)
z.P_0 = intersection (C.PC,C.AB) -- search for intersections of two circles.
z.P_1 = intersection (C.PC,C.AC) -- idem
_,z.P_2 = intersection (C.QA,C.CB) -- idem
-z.O_3 = triangle: new ( z.P_0, z.P_1, z.P_2) -- circumcenter attribute of "triangle"
+z.O_3 = triangle: new ( z.P_0, z.P_1, z.P_2).circumcenter -- circumcenter attribute of "triangle"
\end{tkzelements}
\begin{tikzpicture}
@@ -176,21 +176,21 @@ Here's another example with comments
\documentclass{standalone}
\usepackage{tkz-euclide,tkz-elements}
\begin{document}
-\begin{tkzelements} we create environment tkzelements
- z.A = point: new (2 , 4) three fixed points are used
- z.B = point: new (0 , 0)
+\begin{tkzelements}
+ z.A = point: new (2 , 4) -- we create environment tkzelements
+ z.B = point: new (0 , 0) -- three fixed points are used
z.C = point: new (8 , 0)
- T.ABC = triangle: new (z.A,z.B,z.C) we create a new triangle object
- C.ins = T.ABC: in_circle () we get the incircle of this triangle
- z.I = C.ins.center center is an attribute of the circle
- z.T = C.ins.through through is also an attribute
- -- z.I,z.T = get_points (C.ins) get_points is a shortcut
- C.cir = T.ABC : circum_circle () we get the circumscribed circle
- z.W = C.cir.center we get the center of this circle
- z.O = C.cir.south now we get the south pole of this circle
- L.AO = line: new (z.A,z.O) we create an object "line"
- L.BC = T.ABC.bc we get the line (BC)
- z.I_A = intersection (L.AO,L.BC) we search the intersection of the last lines
+ T.ABC = triangle: new (z.A,z.B,z.C) -- we create a new triangle object
+ C.ins = T.ABC: in_circle () -- we get the incircle of this triangle
+ z.I = C.ins.center -- center is an attribute of the circle
+ z.T = C.ins.through -- through is also an attribute
+ -- z.I,z.T = get_points (C.ins) -- get_points is a shortcut
+ C.cir = T.ABC : circum_circle () -- we get the circumscribed circle
+ z.W = C.cir.center -- we get the center of this circle
+ z.O = C.cir.south -- now we get the south pole of this circle
+ L.AO = line: new (z.A,z.O) -- we create an object "line"
+ L.BC = T.ABC.bc -- we get the line (BC)
+ z.I_A = intersection (L.AO,L.BC) -- we search the intersection of the last lines
\end{tkzelements}
\end{verbatim}
\begin{tkzelements}
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-transferts.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-transferts.tex
index dc177d09be..c255a1804d 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-transferts.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-transferts.tex
@@ -73,7 +73,7 @@ z.ap = z.a_1 + z.a_2
\subsubsection{Other transfers} % (fold)
\label{ssub:other_transfers}
-Sometimes it's useful to transfer angle, length measurements or boolean. For this purpose, I have created the macro (see \ref{ssub:transfer_from_lua_to_tex})
+Sometimes it's useful to transfer angle, length measurements or boolean. For this purpose, I have created the macro (see \ref{sub:transfer_from_lua_to_tex})
\IEmacro{tkzUseLua(value)}
\begin{verbatim}
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/tkz-elements.pdf b/macros/latex/contrib/tkz/tkz-elements/doc/tkz-elements.pdf
index 25c613e374..3dcaf903a2 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/tkz-elements.pdf
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/tkz-elements.pdf
Binary files differ
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz-elements.sty b/macros/latex/contrib/tkz/tkz-elements/latex/tkz-elements.sty
index f3dd61e9e8..903691bcc3 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz-elements.sty
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz-elements.sty
@@ -1,5 +1,5 @@
% encoding : utf8
-% tkz-elements.sty v1.60c
+% tkz-elements.sty v1.72c
% Copyright 2023 Alain Matthes
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -11,7 +11,7 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\ProvidesPackage{tkz-elements}[23/12/14 v1.60c Graphic Object Library]
+\ProvidesPackage{tkz-elements}[23/12/24 v1.72c Graphic Object Library]
\RequirePackage{luacode}
\directlua{require "tkz_elements_main"}
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_circle.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_circle.lua
index 6329495465..e81609f6ee 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_circle.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_circle.lua
@@ -1,6 +1,6 @@
-- tkz_elements-circles.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- Copyright 2023 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -17,6 +17,9 @@
circle = {}
function circle: new (c, t) -- c --> center t --> through
local type = 'circle'
+ local ra = line :new (c,t)
+ local anti = antipode_ (c,t)
+ local di = line : new (anti, t)
local radius = point.abs ( c - t )
local south = c - point (0,radius)
local east = c + point (radius,0)
@@ -24,6 +27,8 @@ function circle: new (c, t) -- c --> center t --> through
local west = c - point (radius,0)
local o = { center = c,
through = t,
+ ra = ra,
+ di = di,
radius = radius,
south = south,
east = east,
@@ -69,6 +74,19 @@ function circle: in_out_disk (pt)
return false
end
end
+
+function circles_position (C1,C2)
+ local d,max,min
+ d = point.mod(C1.center-C2.center)
+ max = C1.radius + C2.radius
+ min = math.abs ( C1.radius - C2.radius)
+ if d > max then return "outside"
+ elseif d == max then return "outside tangent" -- epsilon
+ elseif d == min then return "inside tangent" -- epsilon
+ elseif d < min then return "inside"
+ else return "intersect"
+ end
+end
-----------------------
-- real --
-----------------------
@@ -217,16 +235,6 @@ function circle: inversion (...)
return table.unpack ( t )
end
end
-
- function circle: set_inversion (...)
- local tp = table.pack(...)
- local i
- local t = {}
- for i=1,tp.n do
- table.insert( t , inversion_ (self.center,self.through , tp[i]) )
- end
- return table.unpack ( t )
- end
function circle: draw ()
local x,y
@@ -235,6 +243,9 @@ function circle: draw ()
local frmt = '\\draw (%0.3f,%0.3f) circle [radius=%0.3f];'
tex.sprint(string.format(frmt, x,y,r))
end
-
-
+
+function circle: midcircle(C)
+ return midcircle_ (self,C)
+end
+
return circle \ No newline at end of file
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_class.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_class.lua
index a79153db9e..9f8670a1b7 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_class.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_class.lua
@@ -1,6 +1,6 @@
-- tkz_elements_class.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- from class.lua (Simple Lua Classes from Lua-users wiki)
-- Compatible with Lua 5.1 (not 5.0).
-- http://lua-users.org/wiki/SimpleLuaClasses DavidManura
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_ellipse.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_ellipse.lua
index ecee439aa4..bb8495336b 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_ellipse.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_ellipse.lua
@@ -1,6 +1,6 @@
-- tkz_elements-ellipses.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- Copyright 2023 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_circles.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_circles.lua
index 510d73e485..cde3c027ac 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_circles.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_circles.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_circles.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- Copyright 2023 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -53,7 +53,7 @@ function inversion_ (c,p,pt)
end
function radical_axis_ (c1,p1,c2,p2)
- local d,m,m1,m2,epsilon,ci,cj,ck,cm,cn,r1,r2
+ local d,m,m1,m2,epsilon,ci,cj,ck,cm,cn,r1,r2,t
r1 = point.abs(c1-p1)
r2 = point.abs(c2-p2)
epsilon = 10^(-12)
@@ -66,8 +66,10 @@ function radical_axis_ (c1,p1,c2,p2)
cj = rotation_ (p1,-math.pi/2,c2)
return ci,cj
elseif m1 < epsilon then -- circles tangent
- ci = rotation_ (p1,math.pi/2,c2)
- cj = rotation_ (p1,-math.pi/2,c2)
+ -- z.A = point : new ( x , y ) contact
+ t,t = intersection_cc_ (c1,p1,c2,p2)
+ ci = rotation_ (t,math.pi/2,c2)
+ cj = rotation_ (t,-math.pi/2,c2)
return ci,cj
-- circles disjoints
elseif m > 0 then
@@ -75,7 +77,7 @@ function radical_axis_ (c1,p1,c2,p2)
ci,cj = intersection_cc_ (c1,p1,ck,c1)
cm,cn = intersection_cc_ (c2,p2,ck,c1)
ci = intersection_ll_ (ci,cj,cm,cn)
- cj = projection_ (c1,c2,ci)
+ cj = symmetry_axial_ (c1,c2,ci) -- projection_ (c1,c2,ci)
return ci,cj
else
ci,cj = intersection_cc_ (c1,p1,c2,p2)
@@ -112,5 +114,44 @@ function circlepoint_ (c,t,k)
return rotation_ (c,phi,t)
end
-
+-- version 1.60 new
+function midcircle_(C1,C2)
+ local state,r,s,t1,t2,T1,T2,p,a,b,c,d,Cx,Cy,i,j
+ state = circles_position(C1,C2)
+ i = barycenter_ ({C2.center,C1.radius},{C1.center,-C2.radius})
+ j = barycenter_ ({C2.center,C1.radius},{C1.center,C2.radius})
+ t1,t2 = tangent_from_ (C1.center,C1.through,i)
+ T1,T2 = tangent_from_ (C2.center,C2.through,i)
+
+ if (state == 'outside') or (state == 'outside tangent')then
+ p = math.sqrt(point.mod(i-t1)*point.mod(i-T1))
+ return circle : radius (i,p)
+ elseif state == 'intersect' then
+ r,s = intersection (C1,C2)
+ return circle : radius (i,point.mod(r-i)) , circle : radius (j,point.mod(r-j))
+ elseif (state == 'inside') or (state == 'inside tangent') then
+ a,b = intersection_lc_ (C1.center,C2.center,C1.center,C1.through)
+ c,d = intersection_lc_ (C1.center,C2.center,C2.center,C2.through)
+
+ if C1.radius < C2.radius then
+ z.u, z.v, z.r, z.s = a, b, c, d
+ else
+ z.u, z.v, z.r, z.s = c, d, a, b
+ end
+
+ if (in_segment_ (z.s,z.v,z.u) == true)
+ then
+ Cx = circle : diameter (z.r,z.v)
+ Cy = circle : diameter (z.u,z.s)
+ else
+ Cx = circle : diameter (z.s,z.v)
+ Cy = circle : diameter (z.u,z.r)
+ end
+ if (Cx.radius) < (Cy.radius) then
+ return Cy : orthogonal_from (j)
+ else
+ return Cx : orthogonal_from (j)
+ end
+ end
+end
\ No newline at end of file
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_intersections.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_intersections.lua
index a25e2ce78c..a3d5bd3a9d 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_intersections.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_intersections.lua
@@ -1,6 +1,6 @@
-- tkz_elements_intersections.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- Copyright 2023 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_lines.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_lines.lua
index 5d1dcd99ce..4b27ec821f 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_lines.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_lines.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_lines.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- Copyright 2023 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_maths.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_maths.lua
index ca948b4334..a3c2de28aa 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_maths.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_maths.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_maths.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- Copyright 2023 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_points.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_points.lua
index 23ee73f0c4..309b7c762c 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_points.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_points.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_points.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- Copyright 2023 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_regular.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_regular.lua
index 70322a3d3f..423e13a937 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_regular.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_regular.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_regular.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- Copyright 2023 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_triangles.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_triangles.lua
index ab78d29cf2..3d92bdb819 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_triangles.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_triangles.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_triangles.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- Copyright 2023 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_line.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_line.lua
index 2ea0c1fa84..1143659bfb 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_line.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_line.lua
@@ -1,6 +1,6 @@
-- tkz_elements_lines.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- Copyright 2023 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -268,7 +268,7 @@ end
function line: mediator ()
local m
m = midpoint_ (self.pa,self.pb)
- return line : new (m,rotation_ (m,math.pi/2,self.pb))
+ return line : new (rotation_ (m,-math.pi/2,self.pb),rotation_ (m,math.pi/2,self.pb))
end
-------------------
-- Result -> circle
@@ -281,6 +281,19 @@ function line: circle_swap ()
return circle : new (self.pb,self.pa)
end
+function line : diameter ()
+ local c = midpoint_ (self.pa,self.pb)
+ return circle : new (c,self.pb)
+end
+
+function line : apollonius (k)
+ local z1,z2,c
+ z1 = barycenter_ ({self.pa,1},{self.pb,k})
+ z2 = barycenter_ ({self.pa,1},{self.pb,-k})
+ c = midpoint_ (z1,z2)
+ return circle : new (c,z2)
+end
+
----------------------
-- Result -> triangle
----------------------
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_main.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_main.lua
index 7228a3396d..44842d2d9c 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_main.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_main.lua
@@ -1,6 +1,6 @@
-- tkz_elements-main.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- Copyright 2023 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_misc.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_misc.lua
index 834317aae4..ed4dd949a1 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_misc.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_misc.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_maths.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- Copyright 2023 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -55,56 +55,4 @@ function radical_circle (C1,C2,C3)
return C1 : orthogonal_from (rc)
end
end
--- version 1.60 new
-function circles_position(C1,C2)
- local d,max,min
- d = point.mod(C1.center-C2.center)
- max = C1.radius + C2.radius
- min = math.abs ( C1.radius - C2.radius)
- if d > max then return "outside"
- elseif d == max then return "outside tangent" -- epsilon
- elseif d == min then return "inside tangent" -- epsilon
- elseif d < min then return "inside"
- else return "intersect"
- end
-end
--- version 1.60 new
-function midcircle_(C1,C2)
- local state,r,s,t1,t2,T1,T2,p,a,b,c,d,Cx,Cy,i,j
- state = circles_position(C1,C2)
- i = barycenter_ ({C2.center,C1.radius},{C1.center,-C2.radius})
- j = barycenter_ ({C2.center,C1.radius},{C1.center,C2.radius})
- t1,t2 = tangent_from_ (C1.center,C1.through,i)
- T1,T2 = tangent_from_ (C2.center,C2.through,i)
-
- if (state == 'outside') or (state == 'outside tangent')then
- p = math.sqrt(point.mod(i-t1)*point.mod(i-T1))
- return circle : radius (i,p)
- elseif state == 'intersect' then
- r,s = intersection (C1,C2)
- return circle : radius (i,point.mod(r-i)) , circle : radius (j,point.mod(r-j))
- elseif (state == 'inside') or (state == 'inside tangent') then
- a,b = intersection_lc_ (C1.center,C2.center,C1.center,C1.through)
- c,d = intersection_lc_ (C1.center,C2.center,C2.center,C2.through)
-
- if C1.radius < C2.radius then
- z.u, z.v, z.r, z.s = a, b, c, d
- else
- z.u, z.v, z.r, z.s = c, d, a, b
- end
-
- if (in_segment_ (z.s,z.v,z.u) == true)
- then
- Cx = circle : diameter (z.r,z.v)
- Cy = circle : diameter (z.u,z.s)
- else
- Cx = circle : diameter (z.s,z.v)
- Cy = circle : diameter (z.u,z.r)
- end
- if (Cx.radius) < (Cy.radius) then
- return Cy : orthogonal_from (j)
- else
- return Cx : orthogonal_from (j)
- end
- end
-end \ No newline at end of file
+
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_parallelogram.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_parallelogram.lua
index 4b5124ecc0..6ed56cc828 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_parallelogram.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_parallelogram.lua
@@ -1,6 +1,6 @@
-- tkz_elements_parallelogram.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- Copyright 2023 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_point.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_point.lua
index 53e662541a..4997b857d8 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_point.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_point.lua
@@ -1,6 +1,6 @@
-- tkz_elements_point.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- Copyright 2023 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_quadrilateral.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_quadrilateral.lua
index ff144a5e5b..57d8af3aae 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_quadrilateral.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_quadrilateral.lua
@@ -1,6 +1,6 @@
-- tkz_elements_quadrilateral.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- Copyright 2023 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_rectangle.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_rectangle.lua
index 21d227a940..600d31665b 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_rectangle.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_rectangle.lua
@@ -1,6 +1,6 @@
-- tkz_elements-rectangle.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- Copyright 2023 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_regular.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_regular.lua
index d458fbe97e..c0749917f5 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_regular.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_regular.lua
@@ -1,6 +1,6 @@
-- tkz_elements_regular.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- Copyright 2023 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_square.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_square.lua
index f8cc6b14df..4c3ce73800 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_square.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_square.lua
@@ -1,6 +1,6 @@
-- tkz_elements-square.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- Copyright 2023 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_triangle.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_triangle.lua
index fb70474d22..4a0c892f60 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_triangle.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_triangle.lua
@@ -1,6 +1,6 @@
-- tkz_elements_triangles.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- Copyright 2023 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_vector.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_vector.lua
index 17aad462ed..17d5684304 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_vector.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_vector.lua
@@ -1,6 +1,6 @@
-- tkz_elements_vectors.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- Copyright 2023 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/wtref/LICENSE b/macros/latex/contrib/wtref/LICENSE
index a089635538..b9f02ad78f 100644
--- a/macros/latex/contrib/wtref/LICENSE
+++ b/macros/latex/contrib/wtref/LICENSE
@@ -1,6 +1,6 @@
The MIT License (MIT)
-Copyright 2016-2020 Takuto ASAKURA (wtsnjp)
+Copyright 2016-2023 Takuto Asakura (wtsnjp)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/macros/latex/contrib/wtref/README.md b/macros/latex/contrib/wtref/README.md
index d2af713e5f..0eb5718de0 100644
--- a/macros/latex/contrib/wtref/README.md
+++ b/macros/latex/contrib/wtref/README.md
@@ -1,6 +1,6 @@
-# WTRef Package (v0.4.0)
+# Package WTRef (v1.0.0)
-WTRef package is a small extension for LaTeX2e's cross-reference system. It introduces concepts of namespace and scope. This package is a part of the WT Series.
+The WTRef package is a small extension for the LaTeX cross-reference system. It introduces concepts of namespace and scope. This package is part of the WT bundle.
## System Requirements
@@ -15,7 +15,7 @@ Move wtref.sty file to $TEXMF/tex/latex/wtref.
## Documents
-Documents for this pacakge are available in [English](http://mirrors.ctan.org/macros/latex/contrib/wtref/wtref.pdf) and [Japanese](http://mirrors.ctan.org/macros/latex/contrib/wtref/wtref-ja.pdf).
+Documents for this package are available in [English](http://mirrors.ctan.org/macros/latex/contrib/wtref/wtref.pdf) and [Japanese](http://mirrors.ctan.org/macros/latex/contrib/wtref/wtref-ja.pdf).
## License
@@ -23,4 +23,4 @@ This package released under [the MIT license](./LICENSE).
---
-Takuto ASAKURA ([wtsnjp](https://twitter.com/wtsnjp))
+Takuto Asakura ([wtsnjp](https://twitter.com/wtsnjp))
diff --git a/macros/latex/contrib/wtref/wtref-ja.pdf b/macros/latex/contrib/wtref/wtref-ja.pdf
index 587f6a731f..77f026f670 100644
--- a/macros/latex/contrib/wtref/wtref-ja.pdf
+++ b/macros/latex/contrib/wtref/wtref-ja.pdf
Binary files differ
diff --git a/macros/latex/contrib/wtref/wtref-ja.tex b/macros/latex/contrib/wtref/wtref-ja.tex
index 87e1189380..fcebf128cf 100644
--- a/macros/latex/contrib/wtref/wtref-ja.tex
+++ b/macros/latex/contrib/wtref/wtref-ja.tex
@@ -12,7 +12,7 @@
\newcommand{\Meta}[1]{$\langle$\mbox{}\textit{#1}\mbox{}$\rangle$}
\newenvironment{syntax}{\begin{quote}\small}{\end{quote}}
-\title{\ThisPkg パッケージ (v0.4.0)}
+\title{\ThisPkg パッケージ (v1.0.0)}
\author{朝倉卓人 (wtsnjp)}
\begin{document}
diff --git a/macros/latex/contrib/wtref/wtref.pdf b/macros/latex/contrib/wtref/wtref.pdf
index 0022ff251b..b019af7f47 100644
--- a/macros/latex/contrib/wtref/wtref.pdf
+++ b/macros/latex/contrib/wtref/wtref.pdf
Binary files differ
diff --git a/macros/latex/contrib/wtref/wtref.sty b/macros/latex/contrib/wtref/wtref.sty
index 856852d69d..cb1cc9ffc5 100644
--- a/macros/latex/contrib/wtref/wtref.sty
+++ b/macros/latex/contrib/wtref/wtref.sty
@@ -1,7 +1,7 @@
%%
%% This is file `wtref.sty'.
%%
-%% Copyright 2016-2020 Takuto ASAKURA (wtsnjp)
+%% Copyright 2016-2023 Takuto Asakura (wtsnjp)
%% GitHub: https://github.com/wtsnjp
%% Twitter: @wtsnjp
%%
@@ -11,7 +11,7 @@
% Package declaration
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{wtref}
- [2020/06/15 v0.4.0 A small extension for LaTeX2e's cross-referencing]
+ [2023/12/24 v1.0.0 A small extension for LaTeX2e's cross-referencing]
\def\wtrf@pkgname{WTRef}
\RequirePackage{xparse,xkeyval}
@@ -46,7 +46,7 @@
\@tempcnta=\catcode`\Q
\catcode`\Q=3
\def\wtrf@trim@spaces#1{%
- \romannumeral-`\q\wtrf@trim@trim@\noexpand#1Q Q}
+ \romannumeral-`>\wtrf@trim@trim@\noexpand#1Q Q}
\long\def\wtrf@trim@trim@#1 Q{\wtrf@trim@trim@@#1Q}
\long\def\wtrf@trim@trim@@#1Q#2{#1}
\catcode`\Q=\@tempcnta
@@ -119,7 +119,9 @@
% the \label-like command
\wtrf@check@command{#1label}%
\expandafter\DeclareExpandableDocumentCommand\csname #1label\endcsname{m}{%
- \label{\wtrf@name@use{wtrf@#1@namespace}\wtrf@name@use{wtrf@#1@scope}##1}}%
+ \expandafter\expandafter\expandafter\label\expandafter\expandafter\expandafter
+ {\csname wtrf@#1@namespace\expandafter\endcsname
+ \romannumeral-`>\csname wtrf@#1@scope\endcsname ##1}}%
% the \ref-like command
\wtrf@check@command{#1ref}%
\expandafter\DeclareExpandableDocumentCommand\csname #1ref\endcsname{om}{%
@@ -148,7 +150,7 @@
\wtrf@name@use{wtrf@#4@refcmd}{%
\wtrf@name@use{wtrf@#4@namespace}#3\wtrf@trim@spaces@noexp{#1}}%
\expandafter\ifx\wtrf@head#2\wtrf@nil\wtrf@qmark\else
- \wtrf@construct@#2,\wtrf@qmark\wtrf@nil{#3}{#4}%
+ \wtrf@construct@#2\wtrf@nil{#3}{#4}%
\fi}
\def\wtrf@construct@#1,#2\wtrf@nil#3#4{%
\expandafter\ifx\wtrf@head#2\wtrf@nil\wtrf@qmark
@@ -159,7 +161,7 @@
\wtrf@name@use{wtrf@#4@sep}%
\wtrf@name@use{wtrf@#4@refcmd}{%
\wtrf@name@use{wtrf@#4@namespace}#3\wtrf@trim@spaces@noexp{#1}}%
- \wtrf@construct@#2,\wtrf@qmark\wtrf@nil{#3}{#4}%
+ \wtrf@construct@#2\wtrf@nil{#3}{#4}%
\fi}
% Defining \setrefstyle command
diff --git a/macros/latex/contrib/wtref/wtref.tex b/macros/latex/contrib/wtref/wtref.tex
index bfd9bfa913..583cb558b9 100644
--- a/macros/latex/contrib/wtref/wtref.tex
+++ b/macros/latex/contrib/wtref/wtref.tex
@@ -9,26 +9,26 @@
\newcommand{\ThisPkg}{\PkgName{WTRef}}
\newcommand{\Meta}[1]{$\langle$\mbox{}\textit{#1}\mbox{}$\rangle$}
\newenvironment{syntax}{\begin{quote}\small}{\end{quote}}
+\newcommand{\eg}{e.g.,\,}
+\newcommand{\ie}{i.e.,\,}
-\title{The {\ThisPkg} Package (v0.4.0)}
-\author{Takuto ASAKURA (wtsnjp)}
+\title{The {\ThisPkg} Package (v1.0.0)}
+\author{Takuto Asakura (wtsnjp)}
\begin{document}
\maketitle
\begin{abstract}
-WT Series collects macros which are useful to create {\LaTeX} documents.
-{\ThisPkg} package is a part of this WT Series that extends cross-reference
-system of {\LaTeX}. It makes enable to divide namespace and scope, further
-arrows users to customise reference formats. {\LaTeXe} on any kind of {\TeX}
-engine is supported. The package requires Package \PkgName{xparse} and
-\PkgName{xkeyval}.
+Package {\ThisPkg} is a small extension for {\LaTeXe}'s cross-referencing. It
+enables you to divide namespace and scope. It also provides a few ways to
+customise referencing formats. {\LaTeXe} on any kind of {\TeX} engine is
+supported. The package requires Package \PkgName{xparse} and \PkgName{xkeyval}.
\end{abstract}
-\section{System Requirements}
+\section{System requirements}
-System requirements of {\ThisPkg} are shown bellow:
+{\ThisPkg} requires the following.
%
\begin{itemize}
\item {\TeX} engine: any engine
@@ -37,137 +37,143 @@ System requirements of {\ThisPkg} are shown bellow:
\item Required packages: \PkgName{xparse} and \PkgName{xkeyval}
\end{itemize}
-\section{Loading the {\ThisPkg} Package}
+\section{Loading the package}
-To use {\ThisPkg} package, load \texttt{wtref.sty} file with |\usepackage| command in preamble.
-No package option is available.
+The package should be loaded in the usual {\LaTeXe} way. No package option is
+available.
%
\begin{syntax}
|\usepackage{wtref}|
\end{syntax}
-\section{Cross-Reference Commands}
+\section{Cross-reference commands}
-\subsection{Definition of New Cross-Reference Commands}
+\subsection{Declaring new cross-reference commands}
-|\newref| command creates a set of cross-reference commands. This command can only be used
-in preamble.
+The |\newref| command creates a pair of cross-reference commands. This command
+can be used in preamble only.
%
\begin{syntax}
|\newref[|\Meta{options}|]{|\Meta{ref types}|}|
\end{syntax}
%
-\Meta{ref types} are comma-separated list of \Meta{ref type}. All characters of \Meta{ref type}
-must be able to use in control sequence (only ordinary alphabet is recommended) and can not be
-empty. Notice that leading and trailing spaces and successive spaces arround commas are ignored.
+Herein, \Meta{ref types} is a comma-separated list of \Meta{ref type}. All
+characters consisting of \Meta{ref type} must be `letter' so that they can be
+used for control sequences (recommended to use ASCII alphabets only) and may
+not be empty. Notice that leading and trailing spaces and successive spaces
+around commas are ignored.
-|\newref| command defines two commands: |\|\Meta{ref type}|label|, |\|\Meta{ref type}|ref|.
-In this document, the formar are called \textbf{label commands} and the latter are called
-\textbf{reference commands}. |\newref| command overwrites existing commands, so \Meta{ref name}
-should be decided carefully.
+The |\newref| command defines pairs of cross-referencing commands, |\|\Meta{ref
+type}|label| and |\|\Meta{ref type}|ref| for each given \Meta{ref type}. In
+this document, we call the former \emph{label commands} and the latter
+\emph{reference commands}. Notice that the |\newref| command may overwrites
+existing commands (with warning messages), so \Meta{ref name} should be decided
+carefully.
-In \Meta{options}, you can set following parameters by key-value list:
+In \Meta{options}, you can set the following parameters with key-value list:
%
\begin{description}[font=\normalfont]
-\item[|namespace=|\Meta{string}]
-Set \Meta{namespace} to ``\Meta{string}:''. If neither |namespace| nor |nonamespace| are
-specified, or in case \Meta{string} of |namespace| is empty, \Meta{namespace} is set to
+\item[|namespace=|\Meta{string}] sets \Meta{namespace} to ``\Meta{string}:''.
+In case neither |namespace| nor |nonamespace| is specified, or \Meta{string} of
+|namespace| is empty, the \Meta{namespace} parts in labels are set to
``\Meta{ref type}:''.
%
-\item[|nonamespace|]
-Set \Meta{namespace} to empty. That is to say, invalidation of function that dividing
-namespace. It should be noted that you can specify value for |nonamespace| and that
-will not make any errors, but the value will simply be ignored.
+\item[|nonamespace|] sets \Meta{namespace} to empty. That is to say, the
+namespace function for the package is disabled. You can give a value for the
+|nonamespace| key without any error, but the value will be simply ignored.
%
-\item[|scope=|\Meta{counter}]
-Specify counter which used as scope. You can specify any {\LaTeX} counter to \Meta{counter}
-but one which has uniqueness in a document is desirable. This key sets \Meta{scope} to
-``|\the|\Meta{counter}:''.
+\item[|scope=|\Meta{counter}] sets counter which used as scope. Though you can
+specify arbitrary {\LaTeX} counter for \Meta{counter}, normally those which
+have uniqueness in a document are useful. The \Meta{scope} parts in labels are
+set to ``|\the|\Meta{counter}:''.
\end{description}
%
-These optional settings apply to all cross-referece commands relate to \Meta{ref type}
-in specified \Meta{ref types}.
+These optional settings apply to all pairs of cross-reference commands
+corresponding to \Meta{ref type}s in specified \Meta{ref types}.
-Identically, if any keys do not specified in \Meta{options}, \Meta{namespace} is set to
-``\Meta{ref type}'' and \Meta{scope} is set to empty. In other words, the function of
-namespace is active and function of scope is inactive as default.
+Identically, if any keys do not specified in \Meta{options}, \Meta{namespace}
+is set to ``\Meta{ref type}'', and \Meta{scope} is set to empty. In other words,
+while the namespace function is enabled by default, the scope function is not.
-\subsection{Label Commands}
+\subsection{Label commands}
-\subsubsection{Function and Usage}
-
-Label commands are used to create new labels. Usage of those are same to |\label| command
-of standard {\LaTeX}. Usage of |\exlabel| is shown bellow as an example:
+Label commands are used for making new labels. The usage of them are the same
+as the standard |\label| command of {\LaTeXe}, \eg
%
\begin{syntax}
|\exlabel{|\Meta{label}|}|
\end{syntax}
-\subsubsection{Internal Processing}
-
-Label commands finaly are expanded to following format:
+The label commands are equivalent to the following after a full-expansion:
%
\begin{syntax}
|\label{|\Meta{namespace}\Meta{scope}\Meta{label}|}|
\end{syntax}
-\subsection{Reference Commands}
+\subsection{Reference commands}
-Reference commands print contents of counters which labeled by label commands in specified
-formats. Usage of |\exref| is shown bellow as an example:
+Reference commands print contents of counters which labeled by label commands
+in specified formats. The following is the syntax of an example reference
+command |\exref|:
%
\begin{syntax}
|\exref[|\Meta{the scope}|]{|\Meta{label list}|}|
\end{syntax}
-The option argument \Meta{the scope} can be ommited when refering label exists in the
-same scope. You can refer outside of scope by writing down the output of proper
-|\the|\Meta{counter}. Notice that if the function of scope is inactive
-(i.e. in case |scope| key does not specified in \Meta{options} of |\newref|), this argument
-is always unnecessary, and in other words it will be ignored all the time.
+The option argument \Meta{the scope} can be omitted when the specified label
+exists in the same scope. You can refer to labels outside a scope by specifying
+the target scope explicitly, that is the output of proper |\the|\Meta{counter},
+in the option argument. Notice that if the function of scope is inactive (\ie
+in case |scope| key does not specified in \Meta{options} of |\newref|), this
+argument is always unnecessary, and it will be ignored all the time.
-In argument \Meta{label list}, plural labels can be written in comma-separated. Note that
-leading and trailing spaces and successive spaces arround commas are ignored. If actually
-plural labels are filled in, pertinent counters should be printed out in comma-separate
-form in default. You can change this format flexibly with |\setrefstyle| command.
+In argument \Meta{label list}, you can specify multiple labels in a form of
+comma-separated list. Note that leading and trailing spaces and successive
+spaces around commas are ignored. In the case, pertinent counters should be
+printed in comma-separate form by default. You can change this format
+flexibly with the |\setrefstyle| command.
-\section{Setting Referece Style}
+\section{Setting referencing style}
-The output format of reference commands can be customised with |\setrefstyle| command.
-The syntax of |\setrefstyle| is shown bellow:
+The output format of reference commands can be customised with the
+|\setrefstyle| command. The syntax of the command is as follows:
%
\begin{syntax}
|\setrefstyle{|\Meta{ref types}|}{|\Meta{options}|}|
\end{syntax}
-The |\setrefstyle| command can be used any place of {\LaTeX} document (not only preamble),
-and change reference format locally.
+The |\setrefstyle| command can be used anywhere in {\LaTeX} documents, not
+limited to preambles, and sets the reference format locally.
-In \Meta{options}, you can set following parameters by key-value list:
+In \Meta{options}, you can set the following parameters with a key-value list:
%
\begin{description}[font=\normalfont]
-\item[|refcmd=|\Meta{command}]
-Specified \Meta{command} repeated for the number of labels which filled in \Meta{label list}
-time. String |#1| in \Meta{command} may be replaced into appropriate label name. The default
-value is |\ref{#1}|.
-%
-\item[|sep=|\Meta{command}]
-Specified \Meta{command} is output as a separater of each |refcmd| when more than three
-labels filled in \Meta{label list}. Notice that last one separater is given by |last sep|.
-The default value is |{,\space}|.
-%
-\item[|last sep|(|=|\Meta{command})]
-Specified \Meta{command} is output as a last separater when plura labels filled in
-\Meta{label list}. Behind the |=| can be ommited, and in that case |last sep| is set
-to identical value of |sep| (and this is the default).
-%
-\item[|prefix=|\Meta{command}]
-Specified \Meta{command} put out first when referece command used. The default value is |{}|.
-%
-\item[|suffix=|\Meta{command}]
-Specified \Meta{command} put out last when referece command used. The default value is |{}|.
+\item[|refcmd=|\Meta{ref command}] sets the \Meta{ref command} to used for actual
+referencing functionality. Herein, |#1| in the \Meta{command} may be replaced
+into suitable label name. The default value is |\ref{#1}|. The \Meta{command}
+may be used repeatedly for the number of labels in the given \Meta{label list}.
+%
+\item[|sep=|\Meta{separator}] sets the \Meta{separator}, which used between
+each \Meta{ref command}, in case more than three labels are given for a
+\Meta{label list}. Notice that last one separator is set by |last sep|. The
+default value is |{,\space}|.
+%
+\item[|last sep|(|=|\Meta{last separator})] sets \Meta{last separator} to used
+for the last separator between the \Meta{ref command}s, in case multiple labels
+are given in \Meta{label list}. The part after |=| can be omitted. In that case,
+|last sep| is set to identical value of |sep|, and this is the default
+behavior.
+%
+\item[|prefix=|\Meta{prefix}]
+sets \Meta{prefix} to be put in front of the first \Meta{ref command} when the
+reference commands are used. The default value is |{}|.
+%
+\item[|suffix=|\Meta{suffix}] sets \Meta{suffix} to be put behind the last
+\Meta{ref command} when reference commands are used. The default value is |{}|.
\end{description}
%
-Parameters which do not set explicitly will not be changed.
+Values of the keys which do not set explicitly in the \Meta{options} are left
+unchanged.
\end{document}
+% vim: spell: