% !TeX TXS-program:compile = txs:///arara
% arara: pdflatex: {shell: no, synctex: no, interaction: batchmode}
% arara: pdflatex: {shell: no, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
\documentclass[french,11pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{DejaVuSerifCondensed}
\usepackage[scale=1.075]{inconsolata}
\usepackage{enumitem}
\usepackage{circularglyphs}
\usepackage{multicol}
\usepackage{soul}
\usepackage{multicol}
\usepackage{fontawesome5}
\usepackage{fancyvrb}
\usepackage{fancyhdr}
\usepackage{tabularx}
\usepackage{tabularray}
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\lfoot{\sffamily\small [circularglyphs]}
\cfoot{\sffamily\small - \thepage{} -}
\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}}
\usepackage{hologo}
\providecommand\tikzlogo{Ti\textit{k}Z}
\providecommand\TeXLive{\TeX{}Live\xspace}
\providecommand\PSTricks{\textsf{PSTricks}\xspace}
\let\pstricks\PSTricks
\let\TikZ\tikzlogo
\usepackage{hyperref}
\urlstyle{same}
\hypersetup{pdfborder=0 0 0}
\usepackage[margin=1.5cm]{geometry}
\setlength{\parindent}{0pt}
\def\TPversion{0.1.1}
\def\TPdate{6 octobre 2023}
\usepackage{babel}
\usepackage[most]{tcolorbox}
\tcbuselibrary{listingsutf8}
\newtcblisting{DemoCode}[1][]{%
enhanced,width=0.95\linewidth,center,%
bicolor,size=title,%
colback=cyan!2!white,%
colbacklower=cyan!1!white,%
colframe=cyan!75!black,%
listing options={%
breaklines=true,%
breakatwhitespace=true,%
style=tcblatex,basicstyle=\small\ttfamily,%
tabsize=4,%
commentstyle={\itshape\color{gray}},
keywordstyle={\color{blue}},%
classoffset=0,%
keywords={},%
alsoletter={-},%
keywordstyle={\color{blue}},%
classoffset=1,%
alsoletter={-},%
morekeywords={center,justify},%
keywordstyle={\color{violet}},%
classoffset=2,%
alsoletter={-},%
morekeywords={\CircGlyph},%
keywordstyle={\color{green!50!black}},%
classoffset=3,%
morekeywords={Ext,Inline},%
keywordstyle={\color{orange}}
},%
#1
}
\sethlcolor{lightgray!25}
\NewDocumentCommand\MontreCode{ m }{%
\hl{\vphantom{\texttt{pf}}\texttt{#1}}%
}
\begin{document}
\pagestyle{fancy}
\thispagestyle{empty}
\begin{center}
\begin{minipage}{0.75\linewidth}
\begin{tcolorbox}[colframe=yellow,colback=yellow!15]
\begin{center}
\begin{tabular}{c}
{\Huge \texttt{circularglyphs}}\\
\\
{\LARGE Alphabet Circular Glyphs,} \\
\\
{\LARGE en \LaTeX, créé avec \TikZ.} \\
\end{tabular}
\medskip
{\small \texttt{Version \TPversion{} -- \TPdate}}
\end{center}
\end{tcolorbox}
\end{minipage}
\end{center}
\vspace*{1mm}
\begin{center}
\begin{tabular}{c}
\texttt{Cédric Pierquet}\\
{\ttfamily c pierquet -- at -- outlook . fr}\\
\texttt{\url{
https://github.com/cpierquet/circularglyphs}}
\\
\texttt{\url{
https://www.deviantart.com/irolan/art/Circular-Glyphs-479352599}}
\end{tabular}
\end{center}
\hrule
\phantomsection
\hypertarget{matoc}{}
\tableofcontents
\vspace*{5mm}
\hrule
\vspace*{5mm}
\vfill
\textbf{Article n°1 de la Déclaration des Droits de l'Homme et du Citoyen de 1789 : }
\medskip
\CircGlyph{Les hommes naissent et demeurent libres et égaux en droits. Les distinctions sociales ne peuvent être fondées que sur l'utilité commune.}
\bigskip
\textbf{Article n°2 de la Déclaration des Droits de l'Homme et du Citoyen de 1789 : }
\medskip
{\LARGE\CircGlyph{Le but de toute association politique est la conservation des droits naturels et imprescriptibles de l'homme. Ces droits sont la liberté, la propriété, la sûreté, et la résistance à l'oppression.}}
\bigskip
\textbf{Article n°3 de la Déclaration des Droits de l'Homme et du Citoyen de 1789 : }
\medskip
{\large\CircGlyph[Color=purple]{Le principe de toute souveraineté réside essentiellement dans la nation. Nul corps, nul individu ne peut exercer d'autorité qui n'en émane expressément.}}
\vfill~
\pagebreak
\section{Le package circularglyphs}
\subsection{Idée}
L'idée est de proposer de quoi écrire du texte grâce à l'alphabet \textsf{Circular Glyphs}.
\smallskip
\textsf{Circular Glyphs} est un alphabet graphique de substitution basé sur une construction géométrique à base de cercles et d'arc de cercles sur une grille.
Il a été mis à disposition -- en licence libre -- par \textsf{Irolan}, sur sa page \href{
https://www.deviantart.com/irolan/art/Circular-Glyphs-479352599}{devianart}.
\subsection{Caractères disponibles}
Dans l'alphabet \textsf{Circular Glyphs}, on a les règles suivantes :
\begin{itemize}
\item les minuscules et majuscules sont identiques ;
\item les accents ne sont pas traités ;
\item les espaces, tirets et apostrophes sont traités comme un caractère \textsf{Null} ;
\item les autres caractères sont ignorés.
\end{itemize}
\bigskip
\begin{tblr}{width=\linewidth,stretch=1.5,colspec={*{13}{X[m,c]}},row{even}={font=\LARGE\ttfamily},row{odd}={font=\LARGE}}
\CircGlyph[Inline]{a}&\CircGlyph[Inline]{b}&\CircGlyph[Inline]{c}&\CircGlyph[Inline]{d}&\CircGlyph[Inline]{e}&\CircGlyph[Inline]{f}&\CircGlyph[Inline]{g}&\CircGlyph[Inline]{h}&\CircGlyph[Inline]{i}&\CircGlyph[Inline]{j}&\CircGlyph[Inline]{k}&\CircGlyph[Inline]{l}&\CircGlyph[Inline]{m}\\
A&B&C&D&E&F&G&H&I&J&K&L&M\\
\CircGlyph[Inline]{n}&\CircGlyph[Inline]{o}&\CircGlyph[Inline]{p}&\CircGlyph[Inline]{q}&\CircGlyph[Inline]{r}&\CircGlyph[Inline]{s}&\CircGlyph[Inline]{t}&\CircGlyph[Inline]{u}&\CircGlyph[Inline]{v}&\CircGlyph[Inline]{w}&\CircGlyph[Inline]{x}&\CircGlyph[Inline]{y}&\CircGlyph[Inline]{z}\\
N&O&P&Q&R&S&T&U&V&W&X&Y&Z\\
\CircGlyph[Inline]{0}&\CircGlyph[Inline]{1}&\CircGlyph[Inline]{2}&\CircGlyph[Inline]{3}&\CircGlyph[Inline]{4}&\CircGlyph[Inline]{5}&\CircGlyph[Inline]{6}&\CircGlyph[Inline]{7}&\CircGlyph[Inline]{8}&\CircGlyph[Inline]{9}\\
0&1&2&3&4&5&6&7&8&9\\
\CircGlyph[Inline]{ }&&&&&&&&&&&\\
Null&&&&&&&&&&&&&\\
\end{tblr}
\subsection{Chargement}
Le package se charge dans le préambule, via \MontreCode{\textbackslash usepackage\{circularglyphs\}}.
\begin{DemoCode}[listing only]
\usepackage{circularglyphs}
\end{DemoCode}
Les seuls packages utilisés sont :
\begin{itemize}
\item \MontreCode{tikz} ;
\item \MontreCode{xstring} ;
\item \MontreCode{calc} ;
\item \MontreCode{simplekv}.
\end{itemize}
\subsection{La police CircularGlyphs.ttf}
À noter, pour les utilisateurs de \hologo{LuaLaTeX} ou \hologo{XeLaTeX} qu'une police de caractères est disponible sur la page citée précédemment (\texttt{CircularGlyphs.ttf}), et que celle-ci sera sans doute plus pertinente que ce package pour des éventuelles transcriptions \textit{conséquentes} !!
\pagebreak
\section{Commande et fonctionnement}
\subsection{Compatibilité}
Le package est compatible (normalement) avec les compilateurs classiques (\hologo{LuaLaTeX}, \hologo{pdfLaTeX}, etc) et des tests ont été réalisés pour tester le bon fonctionnement avec des caractères spéciaux comme \MontreCode{;} ou \MontreCode{:}.
\smallskip
Attention toutefois si la commande est incluse dans un environnement ou dans une autre commande, surtout si des caractères actifs sont présents\ldots
\subsection{Commande basique}
La commande permettant de \textit{transcrire} du texte en \textsf{Circular Glyphs} est tout simplement :
\begin{DemoCode}[]
%mode paragraphe
\CircGlyph{Les hommes naissent et demeurent libres et égaux en droits. Les distinctions sociales ne peuvent être fondées que sur l'utilité commune.}
\end{DemoCode}
\begin{DemoCode}[]
%mode en ligne
\CircGlyph[Inline]{Les hommes naissent et demeurent libres et égaux en droits.}
\end{DemoCode}
La version avec la clé \MontreCode{[Inline]} (en mode \textit{en ligne}) ne permet pas d'obtenir une grille très \textit{satisfaisante}, alors que la version \textit{classique} le gère, grâce à \MontreCode{\textbackslash offinterlineskip} et \MontreCode{\textbackslash par}, donc la commande avec la clé \MontreCode{[Inline]} est à réserver pour insérer des caractères \textsf{Circular Glyphs} simples.
\medskip
Il existe également la clé \MontreCode{[Color=...]} pour permettre de colorer les glyphes de manière directe, car il n'est (pour le moment) pas possible d'utiliser la commande en parallèle de \MontreCode{\textbackslash textcolor}
\medskip
Concernant la création et disposition des glyphes :
\begin{itemize}
\item chaque caractère à une hauteur équivalente (il est un tout petit peu plus haut\ldots) à celle des lettres \MontreCode{ab...yzAB...YZ} dans la police courante ;
\item un caractère est \textit{aligné} sur les caractères \MontreCode{ab...yzAB...YZ} dans la police courante ;
\item le passage à la ligne est géré par le code, ce qui permet d'avoir une présentation sous forme de \textit{grille}.
\end{itemize}
\begin{DemoCode}[]
%positionnement des glyphes
y\CircGlyph[Inline]{ABCDEFG}S
\end{DemoCode}
\begin{DemoCode}[]
%influcence de la police
{\LARGE\sffamily q\CircGlyph[Inline]{ABCDEFG}S}
\end{DemoCode}
\pagebreak
\subsection{Caractères alternatifs}
Des caractères alternatif sont accessibles en activant la clé \MontreCode{[Ext]}, qui permet d'obtenir des glyphes complémentaires (on sort un peu du cadre \textsf{Circular} quand même !).
\begin{multicols}{4}
\begin{itemize}[label=\textbullet]
\item {\LARGE \MontreCode{,} : \CircGlyph[Inline,Ext]{,}}
\item {\LARGE \MontreCode{;} : \CircGlyph[Inline,Ext]{;}}
\item {\LARGE \MontreCode{.} : \CircGlyph[Inline,Ext]{.}}
\item {\LARGE \MontreCode{?} : \CircGlyph[Inline,Ext]{?}}
\item {\LARGE \MontreCode{!} : \CircGlyph[Inline,Ext]{!}}
\item {\LARGE \MontreCode{:} : \CircGlyph[Inline,Ext]{:}}
\item {\LARGE \MontreCode{-} : \CircGlyph[Inline,Ext]{-}}
\item {\LARGE \MontreCode{'} : \CircGlyph[Inline,Ext]{'}}
\item {\LARGE \MontreCode{+} : \CircGlyph[Inline,Ext]{+}}
\item {\LARGE \MontreCode{*} : \CircGlyph[Inline,Ext]{*}}
\item {\LARGE \MontreCode{(} : \CircGlyph[Inline,Ext]{(}}
\item {\LARGE \MontreCode{)} : \CircGlyph[Inline,Ext]{)}}
\item {\LARGE \MontreCode{=} : \CircGlyph[Inline,Ext]{=}}
\item {\LARGE \MontreCode{/} : \CircGlyph[Inline,Ext]{/}}
\item {\LARGE \MontreCode{<} : \CircGlyph[Inline,Ext]{<}}
\item {\LARGE \MontreCode{>} : \CircGlyph[Inline,Ext]{>}}
\end{itemize}
\end{multicols}
%{\renewcommand\arraystretch{1.5}\begin{tabularx}{\linewidth}{*{13}{c}}
% {\LARGE\CircGlyph[Inline,Ext]{,}}&{\LARGE\CircGlyph[Ext,Inline]{;}}&\CircGlyph[Ext,Inline]{.}&\CircGlyph[Ext,Inline]{?}&\CircGlyph[Ext,Inline]{!}&\CircGlyph[Ext,Inline]{:}&\CircGlyph[Ext,Inline]{-}&\CircGlyph[Ext,Inline]{'}&\CircGlyph[Ext,Inline]{+}&\CircGlyph[Ext,Inline]{+}&\CircGlyph[Ext,Inline]{(}&\CircGlyph[Ext,Inline]{)}&\CircGlyph[Ext,Inline]{=}\\
% ,&;&.&?&!&:&-&'&+&*&(&)&= \\
%\end{tabularx}}
%\begin{tblr}{width=\linewidth,stretch=1.5,colspec={*{13}{X[m,c]}}}
% {\LARGE\CircGlyph[Inline,Ext]{,}}&{\LARGE\CircGlyph[Ext,Inline]{;}}&\CircGlyph[Ext,Inline]{.}&\CircGlyph[Ext,Inline]{?}&\CircGlyph[Ext,Inline]{!}&\CircGlyph[Ext,Inline]{:}&\CircGlyph[Ext,Inline]{-}&\CircGlyph[Ext,Inline]{'}&\CircGlyph[Ext,Inline]{+}&\CircGlyph[Ext,Inline]{+}&\CircGlyph[Ext,Inline]{(}&\CircGlyph[Ext,Inline]{)}&\CircGlyph[Ext,Inline]{=}\\
%% ,&;&.&?&!&:&-&'&+&*&(&)&= \\
%% \CircGlyph[Ext,Inline]{/}&\CircGlyph[Ext,Inline]{<}&\CircGlyph[Ext,Inline]{>} \\
%% /&<&> \\
%\end{tblr}
\begin{DemoCode}[]
%texte sans glyphes etendus, mode en ligne
\CircGlyph[Inline]{Moi, auteur ; je : tu ! il ! nous ?}
\end{DemoCode}
\begin{DemoCode}[]
%texte sans glyphes etendus, mode hors ligne
\CircGlyph{Moi, auteur ; je : tu ! il ! nous ?}
\end{DemoCode}
\begin{DemoCode}[]
%texte avec glyphes etendus, mode en ligne
\CircGlyph[Ext,Inline]{Moi, auteur ; je : tu ! il ! nous ?}
\end{DemoCode}
\begin{DemoCode}[]
%texte avec glyphes etendus, mode hors ligne
\CircGlyph[Ext]{Moi, auteur ; je : tu ! il ! nous ?}
\end{DemoCode}
\begin{DemoCode}[]
%un peu de Maths ?
\CircGlyph[Ext,Inline]{2+3+5=10 et 1<9}
\end{DemoCode}
\subsection{Conseils et compléments}
Pour les caractères spéciaux et/ou accentués, il est conseillé d'utiliser les encodages \MontreCode{T1} et \MontreCode{utf8}, ainsi que le package \MontreCode{babel}.
\smallskip
Pour des problèmes de compatibilité avec les \texttt{catcodes}, il est conseillé de limiter l'utilisation de symboles de ponctuation comme \texttt{;} ou \texttt{:}, en utilisant par exemple un éditeur de texte pour les remplacer ou supprimer.
\smallskip
L'utilisation de \MontreCode{\textbackslash noindent} est recommandée en mode paragraphe pour que la \textit{grille} soit correctement affichée.
\smallskip
Pour de \textit{longs} paragraphes, le temps de compilation peut être relativement long, du fait de l'analyse caractère par caractère\ldots
\smallskip
Il est à noter que certains caractères peuvent poser des soucis en fonction du compilateur et/ou des environnements utilisés (ceci étant dû aux caractères actifs\ldots)
\pagebreak
\section{Historique}
\verb|v0.1.1|~:~~~~Compatibilité accrue avec \hologo{pdfLaTeX} et les caractères actifs + Clé \MontreCode{[Color]}
\verb|v0.1.0|~:~~~~Version initiale
\end{document}