summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdfbin860401 -> 801869 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex710
-rw-r--r--macros/latex/contrib/proflycee/tex/ProfLycee.sty165
-rw-r--r--macros/latex/contrib/tagpdf/README.md4
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-backend.dtx8
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-checks.dtx6
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-code.pdfbin1532339 -> 1488604 bytes
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-data.dtx18
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx6
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx6
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx4
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-roles.dtx4
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-space.dtx4
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-struct.dtx40
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-tree.dtx92
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-user.dtx5
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf.dtx13
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf.pdfbin757067 -> 854620 bytes
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf.tex116
-rw-r--r--macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty24
-rw-r--r--macros/luatex/latex/luaquotes/README3
-rw-r--r--macros/luatex/latex/luaquotes/luaquotes-documentation.pdfbin104899 -> 60240 bytes
-rw-r--r--macros/luatex/latex/luaquotes/luaquotes-documentation.tex119
-rw-r--r--macros/luatex/latex/luaquotes/luaquotes.sty84
24 files changed, 891 insertions, 540 deletions
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
index 06baecf4b6..cb926b1f64 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
index d8d6c134da..c10242ef59 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
@@ -5,8 +5,8 @@
% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
\documentclass{article}
-\def\PLversion{2.1.7}
-\def\PLdate{23 Janvier 2023}
+\def\PLversion{2.1.8}
+\def\PLdate{25 Janvier 2023}
\usepackage[pythontex]{ProfLycee}
\usepackage{mathtools}
\usepackage{lualatex-math}
@@ -225,7 +225,7 @@
{\deblst} travailler sur les statistiques à deux variables (algébriques et graphiques) \\
{\deblst} convertir entre bin/dec/hex avec détails \\
{\deblst} présenter un calcul de PGCD \\
-{\deblst} créer un pixelart avec correction éventuelle \\
+%{\deblst} créer un pixelart avec correction éventuelle \\
{\deblst} effectuer des calculs de probas (lois binomiale, exponentielle, de Poisson, normale) \\
{\deblst} créer des arbres de probas \og classiques \fg \\
{\deblst} générer des listes d'entiers aléatoires (avec ou sans répétitions)\\
@@ -710,9 +710,6 @@ Elles sont présentées de manière \textit{succincte}, mais elles sont présent
\end{codetex}
\begin{codetex}[listing only]
-%pixelart, dans un environnement tikz
-\PixelArtTikz[clés]{fichier.csv}
-
%sudomaths
\SudoMaths[options]{liste}
\begin{EnvSudoMaths}[options]{grille}...\end{EnvSudoMaths}
@@ -5742,346 +5739,346 @@ $\MesurePrincipale[Crochets]{14pi/7}$
\part{Jeux et récréations}
-\section{PixelART via un fichier csv, en \TikZ}\label{pixelart}
-
-\subsection{Introduction}
-
-\begin{codeidee}
-L'idée est de \textit{proposer}, dans un environnement \TikZ, une commande permettant de générer des grilles PixelART.
-
-Les données sont \textit{lues} à partir d'un fichier \textsf{csv}, externe au fichier \textsf{tex} ou déclaré en interne grâce à l'environnement \ctex{filecontents}.
-\end{codeidee}
-
-\begin{codeinfo}
-Avant toute chose, quelques petites infos sur les données au format \textsf{csv}, surtout dans l'optique de sa lecture et de son traitement par \ctex{ProfLycee} :
-
-\begin{itemize}
- \item le fichier de données \textsf{csv} doit être formaté avec le séparateur décimal \og , \fg ;
- \item des cases vides seront codées par \og \texttt{-} \fg.
-\end{itemize}
-
-Le fichier \textsf{csv} peut être déclaré directement dans le fichier \textsf{tex}, grâce à l'environnement \ctex{filecontents} (intégré en natif sur les dernières versions de \LaTeX) :
-
-\begin{Verbatim}[tabsize=2,fontsize=\scriptsize]
-\begin{filecontents*}{<nomfichier>.csv}
-A,B,C,D
-A,B,D,C
-B,A,C,D
-B,A,D,C
-\end{filecontents*}
-\end{Verbatim}
-
-À la compilation, le fichier \textsf{<nomfichier>.csv} sera créé automatiquement, et l'option \Cle{[overwrite]} permet (logiquement) de propager les modifications au fichier \textsf{csv}.
-\end{codeinfo}
-
-\subsection{Package csvsimple et option}
-
-\begin{codeinfo}
-Le package \textit{central} est ici \ctex{csvsimple}, qui permet de lire et traiter le fichier \textsf{csv}.
-
-Il est \og disponible \fg{} en version \LaTeXe{} ou en version \LaTeXIII. Par défaut, \ctex{ProfLycee} le charge en version \LaTeXIII{}, mais une \Cle{option} est disponible pour une \textit{rétro-compatibilité} avec la version \LaTeXe.
-
-\smallskip
-
-L'option \Cle{csvii} permet de passer l'appel au package en version \LaTeXe.
-\end{codeinfo}
-
-\begin{codetex}[listing only]
-\usepackage{ProfLycee} %chargement du package version 3
-%qui charge :
-%\RequirePackage{expl3}
-%\RequirePackage[l3]{csvsimple}
-
-\usepackage[csvii]{ProfLycee} %chargement du package version 2
-%qui charge :
-%\RequirePackage[legacy]{csvsimple}
-\end{codetex}
-
-\subsection{Exemple simple, clés et options}
-
-\begin{codetex}[listing only]
-%déclaration du fichier csv
-\begin{filecontents*}[overwrite]{basique.csv}
-A,B,C,D
-A,B,D,C
-B,A,D,C
-C,A,B,D
-\end{filecontents*}
-
-\begin{tikzpicture}%avec lettres
- \PixelArtTikz[Codes=ABCD,Style=\large\sffamily]{basique.csv}
-\end{tikzpicture}
-\begin{tikzpicture}%avec chiffres
- \PixelArtTikz[Codes=ABCD,Symboles={45,22,1,7},Symb,Style=\large\sffamily]{basique.csv}
-\end{tikzpicture}
-\begin{tikzpicture}%avec correction
- \PixelArtTikz[codes=ABCD,Couleurs={Black,Green,Yellow,Red},Correction]{basique.csv}
-\end{tikzpicture}
-\begin{tikzpicture}%avec correction sans bordure
- \PixelArtTikz[Codes=ABCD,Couleurs={Black,Green,Yellow,Red},Correction,BordCases=false]{basique.csv}
-\end{tikzpicture}
-\end{codetex}
-
-\begin{codesortie}
-\begin{filecontents*}[overwrite]{basique.csv}
-A,B,C,D
-A,B,D,C
-B,A,D,C
-C,A,B,D
-\end{filecontents*}
-
-\begin{center}
- \begin{tblr}{colspec={*{4}{Q[1.25cm,c,m]}},hlines,vlines,rows={1.15em}}
- \SetCell[c=4]{c} Notice & & & \\
- A & B & C & D \\
- 45 & 22 & 1 & 7 \\
- Noir & Vert & Jaune & Rouge \\
- \end{tblr}
-\end{center}
-
-\hfill\begin{tikzpicture}[scale=0.9]
- %avec lettres
- \PixelArtTikz[Codes=ABCD,Style=\large\sffamily]{basique.csv}
-\end{tikzpicture}
-\begin{tikzpicture}[scale=0.9]
- %avec chiffres
- \PixelArtTikz[Codes=ABCD,Symboles={45,22,1,7},Symb,Style=\large\sffamily]{basique.csv}
-\end{tikzpicture}
-\begin{tikzpicture}[scale=0.9]
- %avec correction
- \PixelArtTikz[Codes=ABCD,Couleurs={Black,Green,Yellow,Red},Correction]{basique.csv}
-\end{tikzpicture}
-\begin{tikzpicture}[scale=0.9]
- %avec correction
- \PixelArtTikz[Codes=ABCD,Couleurs={Black,Green,Yellow,Red},Correction,BordCases=false]{basique.csv}
-\end{tikzpicture}
-\hfill~
-\end{codesortie}
-
-\begin{codeinfo}
-La commande \ctex{PixelArtTikz} nécessite de connaître :
-
-\begin{itemize}
- \item le fichier \textsf{csv} à traiter ;
- \item la liste (en fait sous forme de chaîne) des codes utilisés dans le fichier \textsf{csv} (comme \ctex{234679} ou \ctex{ABCDJK}\ldots);
- \item la liste des symboles (éventuellement !) à afficher dans les cases s'il y a ambiguïté, comme \ctex{25,44,12} ou \ctex{AA,AB,AC};
- \item la liste des couleurs (si la correction est demandée), dans le même ordre que la liste des caractères.
-\end{itemize}
-\end{codeinfo}
-
-\begin{codetex}[listing only]
-%environnement tikz
-\PixelArtTikz[clés]{<fichier>.csv}
-\end{codetex}
-
-\begin{codecles}
-Quelques \Cle{Clés} sont nécessaires au bon fonctionnement de la commande :
-
-\begin{itemize}
- \item la clé \Cle{Codes} contient la \textsf{chaîne} des codes \textit{simples} du fichier \textsf{csv} ;
- \item la clé \Cle{Couleurs} qui contient la \textsf{liste} des couleurs associées ;
- \item la clé \Cle{Symboles} qui contient la \textsf{liste éventuelles} des caractères alternatifs à afficher dans les cases ;
- \item la clé booléenne \Cle{Correction} qui permet de colorier le PixelART ;\hfill{}défaut \Cle{false}
- \item la clé booléenne \Cle{Symb} qui permet d'afficher les caractères \textit{alternatifs} ;\hfill{}défaut \Cle{false}
- \item la clé booléenne \Cle{BordCases} qui permet d'afficher les bords des cases de la correction ;\hfill{}défaut \Cle{true}
- \item la clé \Cle{Style} qui permet de spécifier le style des caractères. \hfill{}défaut \Cle{scriptsize}
-\end{itemize}
-\end{codecles}
-
-\begin{codetex}[listing only]
-%codes simples et sans ambiguïté
-%une case vide sera codée par -
-
-\begin{filecontents*}[overwrite]{perroquet.csv}
--,-,-,-,-,-,4,4,4,4,-,-,-,-,-,-
--,-,-,-,4,4,1,1,1,1,4,4,-,-,-,-
--,-,-,4,1,1,1,1,1,1,1,1,4,-,-,-
--,-,4,1,1,1,1,1,1,1,1,1,1,4,-,-
--,-,4,1,1,1,1,1,1,1,1,1,1,4,-,-
--,4,1,9,9,1,1,1,1,1,1,9,9,1,4,-
--,4,9,9,9,9,4,4,4,4,9,9,9,9,4,-
--,4,9,4,9,9,4,4,4,4,9,4,9,9,4,-
--,4,1,9,9,9,4,4,4,4,9,9,9,1,4,-
--,-,4,1,1,9,4,4,4,4,9,1,1,4,-,-
--,-,4,1,1,1,4,4,4,4,1,1,1,4,-,-
--,-,-,4,1,1,1,4,4,1,1,1,4,-,-,-
--,-,4,3,1,1,1,1,1,1,1,1,3,4,-,-
--,4,6,3,1,1,1,1,1,1,1,1,3,6,4,-
--,4,6,6,1,1,1,1,1,1,1,1,6,6,4,-
--,4,6,6,1,1,1,1,1,1,1,1,6,6,4,-
--,4,6,4,1,1,1,4,4,1,1,1,4,6,4,-
-2,2,4,2,4,4,4,2,2,4,4,4,2,4,2,2
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
--,-,-,-,-,4,1,1,1,1,4,-,-,-,-,-
--,-,-,-,-,-,4,1,1,4,-,-,-,-,-,-
--,-,-,-,-,-,-,4,4,-,-,-,-,-,-,-
-\end{filecontents*}
-
-\begin{tikzpicture}[x=0.35cm,y=0.35cm]
- \PixelArtTikz[Codes=123469,Style=\ttfamily]{perroquet.csv}
-\end{tikzpicture}
-
-\begin{tikzpicture}[x=0.35cm,y=0.35cm]
- \PixelArtTikz[Codes=123469,Couleurs={Red,Brown,Yellow,Black,Blue,White},Correction]{perroquet.csv}
-\end{tikzpicture}
-\end{codetex}
-
-\subsection{Exemples complémentaires}
-
-\begin{codeinfo}
-Les symboles affichés dans les cases sont situés aux nœuds de coordonnées $(c\,;\,-l)$ où $l$ et $c$ sont les numéros de ligne et de colonne correspondants à la position de la donnée dans le fichier \textsf{csv}.
-\end{codeinfo}
-
-\begin{codesortie}
-\begin{filecontents*}[overwrite]{perroquet.csv}
--,-,-,-,-,-,4,4,4,4,-,-,-,-,-,-
--,-,-,-,4,4,1,1,1,1,4,4,-,-,-,-
--,-,-,4,1,1,1,1,1,1,1,1,4,-,-,-
--,-,4,1,1,1,1,1,1,1,1,1,1,4,-,-
--,-,4,1,1,1,1,1,1,1,1,1,1,4,-,-
--,4,1,9,9,1,1,1,1,1,1,9,9,1,4,-
--,4,9,9,9,9,4,4,4,4,9,9,9,9,4,-
--,4,9,4,9,9,4,4,4,4,9,4,9,9,4,-
--,4,1,9,9,9,4,4,4,4,9,9,9,1,4,-
--,-,4,1,1,9,4,4,4,4,9,1,1,4,-,-
--,-,4,1,1,1,4,4,4,4,1,1,1,4,-,-
--,-,-,4,1,1,1,4,4,1,1,1,4,-,-,-
--,-,4,3,1,1,1,1,1,1,1,1,3,4,-,-
--,4,6,3,1,1,1,1,1,1,1,1,3,6,4,-
--,4,6,6,1,1,1,1,1,1,1,1,6,6,4,-
--,4,6,6,1,1,1,1,1,1,1,1,6,6,4,-
--,4,6,4,1,1,1,4,4,1,1,1,4,6,4,-
-2,2,4,2,4,4,4,2,2,4,4,4,2,4,2,2
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
--,-,-,-,-,4,1,1,1,1,4,-,-,-,-,-
--,-,-,-,-,-,4,1,1,4,-,-,-,-,-,-
--,-,-,-,-,-,-,4,4,-,-,-,-,-,-,-
-\end{filecontents*}
-
-\begin{center}
- \begin{tblr}{colspec={*{6}{Q[1.25cm,c,m]}},hlines,vlines,rows={1.15em}}
- \SetCell[c=6]{c} Notice & & & & & \\
- 1 & 2 & 3 & 5 & 6 & 9 \\
- Rouge & Marron & Jaune & Noir & Bleu & Blanc \\
- \end{tblr}
-% \renewcommand\arraystretch{1.25}
-% \begin{tabular}{|c|c|c|c|c|c|}
-% \hline
-% \multicolumn{6}{|c|}{Notice} \\ \hline
-% 1 & 2 & 3 & 5 & 6 & 9 \\ \hline
-% Rouge & Marron & Jaune & Noir & Bleu & Blanc \\ \hline
-% \end{tabular}
-\end{center}
-
-\begin{center}
- \begin{tikzpicture}[x=0.35cm,y=0.35cm]
- \PixelArtTikz[Codes=123469,Style=\ttfamily]{perroquet.csv}
- \end{tikzpicture}
- \begin{tikzpicture}[x=0.35cm,y=0.35cm]
- \PixelArtTikz[Codes=123469,Couleurs={Red,Brown,Yellow,Black,Blue,White},Correction]{perroquet.csv}
- \end{tikzpicture}
-\end{center}
-
-\begin{center}
- \begin{tikzpicture}[x=0.35cm,y=0.35cm]
- \draw[very thin,gray,xstep=1,ystep=1] (0,0) grid (17,-24) ;
- \foreach \x in {0,1,...,17} \draw[very thin,gray] (\x,-3pt)--(\x,3pt) node[above,font=\scriptsize\sffamily] {\x} ;
- \foreach \y in {0,-1,...,-24} \draw[very thin,gray] (3pt,\y)--(-3pt,\y) node[left,font=\scriptsize\sffamily] {\y} ;
- \PixelArtTikz[Codes=123469,Couleurs={Red,Brown,Yellow,Black,Blue,White},Correction]{perroquet.csv}
- \filldraw[Blue] (14,-1) circle[radius=1] ;
- \filldraw[Yellow] (14,-1) circle[radius=0.8] ;
- \draw[ForestGreen,very thick,<-,>=latex] (15,-1) to[bend left=30] (18,-2) node[right,font=\scriptsize\sffamily] {rajouté en \TikZ} ;
- \end{tikzpicture}
-\end{center}
-\end{codesortie}
-
-\begin{codetex}[listing only]
-%code tikz et pixelart
-\filldraw[Blue] (14,-1) circle[radius=1] ;
-\filldraw[Yellow] (14,-1) circle[radius=0.8] ;
-\draw[ForestGreen,very thick,<-,>=latex] (15,-1) to[bend left=30] (18,-2)
- node[right,font=\scriptsize\sffamily] {rajouté en \TikZ} ;
-\end{codetex}
-
-\pagebreak
-
-\begin{codetex}[listing only]
-%codes avec ambiguïté
-
-\begin{filecontents*}[overwrite]{cap.csv}
--,-,-,-,-,-,-,-,D,-,D,-,D,-,-,-,-,-,-,-,-,-
--,D,D,-,-,-,-,D,D,D,D,D,D,-,-,D,D,D,D,-,-,-
-D,-,-,D,-,D,D,F,F,F,F,F,F,D,D,-,-,-,-,D,-,-
--,D,-,-,D,F,F,F,-,-,F,F,F,F,F,D,-,D,D,-,-,-
--,-,D,D,F,F,F,-,F,F,-,F,F,F,F,F,D,D,-,-,-,-
--,-,-,D,F,F,F,F,F,F,F,F,F,F,F,F,D,-,-,-,-,-
--,-,-,D,F,J,J,J,J,J,J,J,F,F,F,F,D,-,-,-,-,-
--,-,-,D,J,-,-,-,J,-,-,-,J,J,F,F,D,-,-,-,-,-
--,-,-,D,J,-,D,-,J,-,D,-,J,J,B,B,D,-,-,-,-,-
--,-,-,D,J,-,-,-,J,-,-,-,J,J,B,B,D,-,-,-,-,-
--,-,-,D,C,J,J,J,J,J,J,J,J,C,C,C,D,-,-,-,-,-
--,-,-,D,C,C,C,C,C,C,C,C,C,C,C,D,D,D,-,-,-,-
--,-,-,D,C,C,C,D,D,D,D,D,D,C,D,A,A,A,D,-,-,-
--,-,-,D,F,C,C,C,C,C,C,C,C,D,A,-,-,-,A,D,-,-
--,-,-,D,F,C,F,C,C,C,C,F,D,A,-,A,A,A,-,A,D,-
--,-,D,C,F,F,F,F,C,C,F,D,A,-,A,F,F,F,A,-,A,D
--,-,D,C,F,F,F,F,F,F,F,D,A,-,A,F,-,F,A,-,A,D
--,-,D,A,D,-,A,-,A,-,A,D,A,-,A,F,F,F,A,-,A,D
--,-,-,D,D,-,A,-,A,-,A,-,D,A,-,A,A,A,-,A,D,-
--,-,-,-,-,D,D,F,D,D,D,D,F,D,A,-,-,-,A,D,-,-
--,-,-,-,-,-,D,A,D,-,-,D,-,-,D,A,A,A,D,-,-,-
--,-,-,-,-,-,D,D,D,-,-,D,D,D,D,D,D,D,-,-,-,-
-\end{filecontents*}
-
-\begin{tikzpicture}[x=0.35cm,y=0.35cm]
- \PixelArtTikz[Codes=ABCDFJ,Symboles={1,2,3,4,6,10},Symb,Style=\tiny\sffamily]{cap.csv}
-\end{tikzpicture}
-
-\begin{tikzpicture}[x=0.35cm,y=0.35cm]
- \PixelArtTikz[Codes=ABCDFJ,Couleurs={Red,Brown,Yellow,Black,Blue,Gray},Correction]{cap.csv}
-\end{tikzpicture}
-\end{codetex}
-
-\begin{codesortie}
-\begin{filecontents*}[overwrite]{cap.csv}
--,-,-,-,-,-,-,-,D,-,D,-,D,-,-,-,-,-,-,-,-,-
--,D,D,-,-,-,-,D,D,D,D,D,D,-,-,D,D,D,D,-,-,-
-D,-,-,D,-,D,D,F,F,F,F,F,F,D,D,-,-,-,-,D,-,-
--,D,-,-,D,F,F,F,-,-,F,F,F,F,F,D,-,D,D,-,-,-
--,-,D,D,F,F,F,-,F,F,-,F,F,F,F,F,D,D,-,-,-,-
--,-,-,D,F,F,F,F,F,F,F,F,F,F,F,F,D,-,-,-,-,-
--,-,-,D,F,J,J,J,J,J,J,J,F,F,F,F,D,-,-,-,-,-
--,-,-,D,J,-,-,-,J,-,-,-,J,J,F,F,D,-,-,-,-,-
--,-,-,D,J,-,D,-,J,-,D,-,J,J,B,B,D,-,-,-,-,-
--,-,-,D,J,-,-,-,J,-,-,-,J,J,B,B,D,-,-,-,-,-
--,-,-,D,C,J,J,J,J,J,J,J,J,C,C,C,D,-,-,-,-,-
--,-,-,D,C,C,C,C,C,C,C,C,C,C,C,D,D,D,-,-,-,-
--,-,-,D,C,C,C,D,D,D,D,D,D,C,D,A,A,A,D,-,-,-
--,-,-,D,F,C,C,C,C,C,C,C,C,D,A,-,-,-,A,D,-,-
--,-,-,D,F,C,F,C,C,C,C,F,D,A,-,A,A,A,-,A,D,-
--,-,D,C,F,F,F,F,C,C,F,D,A,-,A,F,F,F,A,-,A,D
--,-,D,C,F,F,F,F,F,F,F,D,A,-,A,F,-,F,A,-,A,D
--,-,D,A,D,-,A,-,A,-,A,D,A,-,A,F,F,F,A,-,A,D
--,-,-,D,D,-,A,-,A,-,A,-,D,A,-,A,A,A,-,A,D,-
--,-,-,-,-,D,D,F,D,D,D,D,F,D,A,-,-,-,A,D,-,-
--,-,-,-,-,-,D,A,D,-,-,D,-,-,D,A,A,A,D,-,-,-
--,-,-,-,-,-,D,D,D,-,-,D,D,D,D,D,D,D,-,-,-,-
-\end{filecontents*}
-
-\begin{center}
- \begin{tikzpicture}[x=0.35cm,y=0.35cm]
- \PixelArtTikz[Codes=ABCDFJ,Symboles={1,2,3,4,6,10},Symb,Style=\tiny\sffamily]{cap.csv}
- \end{tikzpicture}
- ~~
- \begin{tikzpicture}[x=0.35cm,y=0.35cm]
- \PixelArtTikz[Codes=ABCDFJ,Couleurs={Red,Brown,Yellow,Black,Blue,Gray},Correction]{cap.csv}
- \end{tikzpicture}
-\end{center}
-\end{codesortie}
-
-\newpage
+%\section{PixelART via un fichier csv, en \TikZ}\label{pixelart}
+%
+%\subsection{Introduction}
+%
+%\begin{codeidee}
+%L'idée est de \textit{proposer}, dans un environnement \TikZ, une commande permettant de générer des grilles PixelART.
+%
+%Les données sont \textit{lues} à partir d'un fichier \textsf{csv}, externe au fichier \textsf{tex} ou déclaré en interne grâce à l'environnement \ctex{filecontents}.
+%\end{codeidee}
+%
+%\begin{codeinfo}
+%Avant toute chose, quelques petites infos sur les données au format \textsf{csv}, surtout dans l'optique de sa lecture et de son traitement par \ctex{ProfLycee} :
+%
+%\begin{itemize}
+% \item le fichier de données \textsf{csv} doit être formaté avec le séparateur décimal \og , \fg ;
+% \item des cases vides seront codées par \og \texttt{-} \fg.
+%\end{itemize}
+%
+%Le fichier \textsf{csv} peut être déclaré directement dans le fichier \textsf{tex}, grâce à l'environnement \ctex{filecontents} (intégré en natif sur les dernières versions de \LaTeX) :
+%
+%\begin{Verbatim}[tabsize=2,fontsize=\scriptsize]
+%\begin{filecontents*}{<nomfichier>.csv}
+%A,B,C,D
+%A,B,D,C
+%B,A,C,D
+%B,A,D,C
+%\end{filecontents*}
+%\end{Verbatim}
+%
+%À la compilation, le fichier \textsf{<nomfichier>.csv} sera créé automatiquement, et l'option \Cle{[overwrite]} permet (logiquement) de propager les modifications au fichier \textsf{csv}.
+%\end{codeinfo}
+%
+%\subsection{Package csvsimple et option}
+%
+%\begin{codeinfo}
+%Le package \textit{central} est ici \ctex{csvsimple}, qui permet de lire et traiter le fichier \textsf{csv}.
+%
+%Il est \og disponible \fg{} en version \LaTeXe{} ou en version \LaTeXIII. Par défaut, \ctex{ProfLycee} le charge en version \LaTeXIII{}, mais une \Cle{option} est disponible pour une \textit{rétro-compatibilité} avec la version \LaTeXe.
+%
+%\smallskip
+%
+%L'option \Cle{csvii} permet de passer l'appel au package en version \LaTeXe.
+%\end{codeinfo}
+%
+%\begin{codetex}[listing only]
+%\usepackage{ProfLycee} %chargement du package version 3
+%%qui charge :
+%%\RequirePackage{expl3}
+%%\RequirePackage[l3]{csvsimple}
+%
+%\usepackage[csvii]{ProfLycee} %chargement du package version 2
+%%qui charge :
+%%\RequirePackage[legacy]{csvsimple}
+%\end{codetex}
+%
+%\subsection{Exemple simple, clés et options}
+%
+%\begin{codetex}[listing only]
+%%déclaration du fichier csv
+%\begin{filecontents*}[overwrite]{basique.csv}
+%A,B,C,D
+%A,B,D,C
+%B,A,D,C
+%C,A,B,D
+%\end{filecontents*}
+%
+%\begin{tikzpicture}%avec lettres
+% \PixelArtTikz[Codes=ABCD,Style=\large\sffamily]{basique.csv}
+%\end{tikzpicture}
+%\begin{tikzpicture}%avec chiffres
+% \PixelArtTikz[Codes=ABCD,Symboles={45,22,1,7},Symb,Style=\large\sffamily]{basique.csv}
+%\end{tikzpicture}
+%\begin{tikzpicture}%avec correction
+% \PixelArtTikz[codes=ABCD,Couleurs={Black,Green,Yellow,Red},Correction]{basique.csv}
+%\end{tikzpicture}
+%\begin{tikzpicture}%avec correction sans bordure
+% \PixelArtTikz[Codes=ABCD,Couleurs={Black,Green,Yellow,Red},Correction,BordCases=false]{basique.csv}
+%\end{tikzpicture}
+%\end{codetex}
+%
+%\begin{codesortie}
+%\begin{filecontents*}[overwrite]{basique.csv}
+%A,B,C,D
+%A,B,D,C
+%B,A,D,C
+%C,A,B,D
+%\end{filecontents*}
+%
+%\begin{center}
+% \begin{tblr}{colspec={*{4}{Q[1.25cm,c,m]}},hlines,vlines,rows={1.15em}}
+% \SetCell[c=4]{c} Notice & & & \\
+% A & B & C & D \\
+% 45 & 22 & 1 & 7 \\
+% Noir & Vert & Jaune & Rouge \\
+% \end{tblr}
+%\end{center}
+%
+%\hfill\begin{tikzpicture}[scale=0.9]
+% %avec lettres
+% \PixelArtTikz[Codes=ABCD,Style=\large\sffamily]{basique.csv}
+%\end{tikzpicture}
+%\begin{tikzpicture}[scale=0.9]
+% %avec chiffres
+% \PixelArtTikz[Codes=ABCD,Symboles={45,22,1,7},Symb,Style=\large\sffamily]{basique.csv}
+%\end{tikzpicture}
+%\begin{tikzpicture}[scale=0.9]
+% %avec correction
+% \PixelArtTikz[Codes=ABCD,Couleurs={Black,Green,Yellow,Red},Correction]{basique.csv}
+%\end{tikzpicture}
+%\begin{tikzpicture}[scale=0.9]
+% %avec correction
+% \PixelArtTikz[Codes=ABCD,Couleurs={Black,Green,Yellow,Red},Correction,BordCases=false]{basique.csv}
+%\end{tikzpicture}
+%\hfill~
+%\end{codesortie}
+%
+%\begin{codeinfo}
+%La commande \ctex{PixelArtTikz} nécessite de connaître :
+%
+%\begin{itemize}
+% \item le fichier \textsf{csv} à traiter ;
+% \item la liste (en fait sous forme de chaîne) des codes utilisés dans le fichier \textsf{csv} (comme \ctex{234679} ou \ctex{ABCDJK}\ldots);
+% \item la liste des symboles (éventuellement !) à afficher dans les cases s'il y a ambiguïté, comme \ctex{25,44,12} ou \ctex{AA,AB,AC};
+% \item la liste des couleurs (si la correction est demandée), dans le même ordre que la liste des caractères.
+%\end{itemize}
+%\end{codeinfo}
+%
+%\begin{codetex}[listing only]
+%%environnement tikz
+%\PixelArtTikz[clés]{<fichier>.csv}
+%\end{codetex}
+%
+%\begin{codecles}
+%Quelques \Cle{Clés} sont nécessaires au bon fonctionnement de la commande :
+%
+%\begin{itemize}
+% \item la clé \Cle{Codes} contient la \textsf{chaîne} des codes \textit{simples} du fichier \textsf{csv} ;
+% \item la clé \Cle{Couleurs} qui contient la \textsf{liste} des couleurs associées ;
+% \item la clé \Cle{Symboles} qui contient la \textsf{liste éventuelles} des caractères alternatifs à afficher dans les cases ;
+% \item la clé booléenne \Cle{Correction} qui permet de colorier le PixelART ;\hfill{}défaut \Cle{false}
+% \item la clé booléenne \Cle{Symb} qui permet d'afficher les caractères \textit{alternatifs} ;\hfill{}défaut \Cle{false}
+% \item la clé booléenne \Cle{BordCases} qui permet d'afficher les bords des cases de la correction ;\hfill{}défaut \Cle{true}
+% \item la clé \Cle{Style} qui permet de spécifier le style des caractères. \hfill{}défaut \Cle{scriptsize}
+%\end{itemize}
+%\end{codecles}
+%
+%\begin{codetex}[listing only]
+%%codes simples et sans ambiguïté
+%%une case vide sera codée par -
+%
+%\begin{filecontents*}[overwrite]{perroquet.csv}
+%-,-,-,-,-,-,4,4,4,4,-,-,-,-,-,-
+%-,-,-,-,4,4,1,1,1,1,4,4,-,-,-,-
+%-,-,-,4,1,1,1,1,1,1,1,1,4,-,-,-
+%-,-,4,1,1,1,1,1,1,1,1,1,1,4,-,-
+%-,-,4,1,1,1,1,1,1,1,1,1,1,4,-,-
+%-,4,1,9,9,1,1,1,1,1,1,9,9,1,4,-
+%-,4,9,9,9,9,4,4,4,4,9,9,9,9,4,-
+%-,4,9,4,9,9,4,4,4,4,9,4,9,9,4,-
+%-,4,1,9,9,9,4,4,4,4,9,9,9,1,4,-
+%-,-,4,1,1,9,4,4,4,4,9,1,1,4,-,-
+%-,-,4,1,1,1,4,4,4,4,1,1,1,4,-,-
+%-,-,-,4,1,1,1,4,4,1,1,1,4,-,-,-
+%-,-,4,3,1,1,1,1,1,1,1,1,3,4,-,-
+%-,4,6,3,1,1,1,1,1,1,1,1,3,6,4,-
+%-,4,6,6,1,1,1,1,1,1,1,1,6,6,4,-
+%-,4,6,6,1,1,1,1,1,1,1,1,6,6,4,-
+%-,4,6,4,1,1,1,4,4,1,1,1,4,6,4,-
+%2,2,4,2,4,4,4,2,2,4,4,4,2,4,2,2
+%2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+%2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+%-,-,-,-,-,4,1,1,1,1,4,-,-,-,-,-
+%-,-,-,-,-,-,4,1,1,4,-,-,-,-,-,-
+%-,-,-,-,-,-,-,4,4,-,-,-,-,-,-,-
+%\end{filecontents*}
+%
+%\begin{tikzpicture}[x=0.35cm,y=0.35cm]
+% \PixelArtTikz[Codes=123469,Style=\ttfamily]{perroquet.csv}
+%\end{tikzpicture}
+%
+%\begin{tikzpicture}[x=0.35cm,y=0.35cm]
+% \PixelArtTikz[Codes=123469,Couleurs={Red,Brown,Yellow,Black,Blue,White},Correction]{perroquet.csv}
+%\end{tikzpicture}
+%\end{codetex}
+%
+%\subsection{Exemples complémentaires}
+%
+%\begin{codeinfo}
+%Les symboles affichés dans les cases sont situés aux nœuds de coordonnées $(c\,;\,-l)$ où $l$ et $c$ sont les numéros de ligne et de colonne correspondants à la position de la donnée dans le fichier \textsf{csv}.
+%\end{codeinfo}
+%
+%\begin{codesortie}
+%\begin{filecontents*}[overwrite]{perroquet.csv}
+%-,-,-,-,-,-,4,4,4,4,-,-,-,-,-,-
+%-,-,-,-,4,4,1,1,1,1,4,4,-,-,-,-
+%-,-,-,4,1,1,1,1,1,1,1,1,4,-,-,-
+%-,-,4,1,1,1,1,1,1,1,1,1,1,4,-,-
+%-,-,4,1,1,1,1,1,1,1,1,1,1,4,-,-
+%-,4,1,9,9,1,1,1,1,1,1,9,9,1,4,-
+%-,4,9,9,9,9,4,4,4,4,9,9,9,9,4,-
+%-,4,9,4,9,9,4,4,4,4,9,4,9,9,4,-
+%-,4,1,9,9,9,4,4,4,4,9,9,9,1,4,-
+%-,-,4,1,1,9,4,4,4,4,9,1,1,4,-,-
+%-,-,4,1,1,1,4,4,4,4,1,1,1,4,-,-
+%-,-,-,4,1,1,1,4,4,1,1,1,4,-,-,-
+%-,-,4,3,1,1,1,1,1,1,1,1,3,4,-,-
+%-,4,6,3,1,1,1,1,1,1,1,1,3,6,4,-
+%-,4,6,6,1,1,1,1,1,1,1,1,6,6,4,-
+%-,4,6,6,1,1,1,1,1,1,1,1,6,6,4,-
+%-,4,6,4,1,1,1,4,4,1,1,1,4,6,4,-
+%2,2,4,2,4,4,4,2,2,4,4,4,2,4,2,2
+%2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+%2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+%-,-,-,-,-,4,1,1,1,1,4,-,-,-,-,-
+%-,-,-,-,-,-,4,1,1,4,-,-,-,-,-,-
+%-,-,-,-,-,-,-,4,4,-,-,-,-,-,-,-
+%\end{filecontents*}
+%
+%\begin{center}
+% \begin{tblr}{colspec={*{6}{Q[1.25cm,c,m]}},hlines,vlines,rows={1.15em}}
+% \SetCell[c=6]{c} Notice & & & & & \\
+% 1 & 2 & 3 & 5 & 6 & 9 \\
+% Rouge & Marron & Jaune & Noir & Bleu & Blanc \\
+% \end{tblr}
+%% \renewcommand\arraystretch{1.25}
+%% \begin{tabular}{|c|c|c|c|c|c|}
+%% \hline
+%% \multicolumn{6}{|c|}{Notice} \\ \hline
+%% 1 & 2 & 3 & 5 & 6 & 9 \\ \hline
+%% Rouge & Marron & Jaune & Noir & Bleu & Blanc \\ \hline
+%% \end{tabular}
+%\end{center}
+%
+%\begin{center}
+% \begin{tikzpicture}[x=0.35cm,y=0.35cm]
+% \PixelArtTikz[Codes=123469,Style=\ttfamily]{perroquet.csv}
+% \end{tikzpicture}
+% \begin{tikzpicture}[x=0.35cm,y=0.35cm]
+% \PixelArtTikz[Codes=123469,Couleurs={Red,Brown,Yellow,Black,Blue,White},Correction]{perroquet.csv}
+% \end{tikzpicture}
+%\end{center}
+%
+%\begin{center}
+% \begin{tikzpicture}[x=0.35cm,y=0.35cm]
+% \draw[very thin,gray,xstep=1,ystep=1] (0,0) grid (17,-24) ;
+% \foreach \x in {0,1,...,17} \draw[very thin,gray] (\x,-3pt)--(\x,3pt) node[above,font=\scriptsize\sffamily] {\x} ;
+% \foreach \y in {0,-1,...,-24} \draw[very thin,gray] (3pt,\y)--(-3pt,\y) node[left,font=\scriptsize\sffamily] {\y} ;
+% \PixelArtTikz[Codes=123469,Couleurs={Red,Brown,Yellow,Black,Blue,White},Correction]{perroquet.csv}
+% \filldraw[Blue] (14,-1) circle[radius=1] ;
+% \filldraw[Yellow] (14,-1) circle[radius=0.8] ;
+% \draw[ForestGreen,very thick,<-,>=latex] (15,-1) to[bend left=30] (18,-2) node[right,font=\scriptsize\sffamily] {rajouté en \TikZ} ;
+% \end{tikzpicture}
+%\end{center}
+%\end{codesortie}
+%
+%\begin{codetex}[listing only]
+%%code tikz et pixelart
+%\filldraw[Blue] (14,-1) circle[radius=1] ;
+%\filldraw[Yellow] (14,-1) circle[radius=0.8] ;
+%\draw[ForestGreen,very thick,<-,>=latex] (15,-1) to[bend left=30] (18,-2)
+% node[right,font=\scriptsize\sffamily] {rajouté en \TikZ} ;
+%\end{codetex}
+%
+%\pagebreak
+%
+%\begin{codetex}[listing only]
+%%codes avec ambiguïté
+%
+%\begin{filecontents*}[overwrite]{cap.csv}
+%-,-,-,-,-,-,-,-,D,-,D,-,D,-,-,-,-,-,-,-,-,-
+%-,D,D,-,-,-,-,D,D,D,D,D,D,-,-,D,D,D,D,-,-,-
+%D,-,-,D,-,D,D,F,F,F,F,F,F,D,D,-,-,-,-,D,-,-
+%-,D,-,-,D,F,F,F,-,-,F,F,F,F,F,D,-,D,D,-,-,-
+%-,-,D,D,F,F,F,-,F,F,-,F,F,F,F,F,D,D,-,-,-,-
+%-,-,-,D,F,F,F,F,F,F,F,F,F,F,F,F,D,-,-,-,-,-
+%-,-,-,D,F,J,J,J,J,J,J,J,F,F,F,F,D,-,-,-,-,-
+%-,-,-,D,J,-,-,-,J,-,-,-,J,J,F,F,D,-,-,-,-,-
+%-,-,-,D,J,-,D,-,J,-,D,-,J,J,B,B,D,-,-,-,-,-
+%-,-,-,D,J,-,-,-,J,-,-,-,J,J,B,B,D,-,-,-,-,-
+%-,-,-,D,C,J,J,J,J,J,J,J,J,C,C,C,D,-,-,-,-,-
+%-,-,-,D,C,C,C,C,C,C,C,C,C,C,C,D,D,D,-,-,-,-
+%-,-,-,D,C,C,C,D,D,D,D,D,D,C,D,A,A,A,D,-,-,-
+%-,-,-,D,F,C,C,C,C,C,C,C,C,D,A,-,-,-,A,D,-,-
+%-,-,-,D,F,C,F,C,C,C,C,F,D,A,-,A,A,A,-,A,D,-
+%-,-,D,C,F,F,F,F,C,C,F,D,A,-,A,F,F,F,A,-,A,D
+%-,-,D,C,F,F,F,F,F,F,F,D,A,-,A,F,-,F,A,-,A,D
+%-,-,D,A,D,-,A,-,A,-,A,D,A,-,A,F,F,F,A,-,A,D
+%-,-,-,D,D,-,A,-,A,-,A,-,D,A,-,A,A,A,-,A,D,-
+%-,-,-,-,-,D,D,F,D,D,D,D,F,D,A,-,-,-,A,D,-,-
+%-,-,-,-,-,-,D,A,D,-,-,D,-,-,D,A,A,A,D,-,-,-
+%-,-,-,-,-,-,D,D,D,-,-,D,D,D,D,D,D,D,-,-,-,-
+%\end{filecontents*}
+%
+%\begin{tikzpicture}[x=0.35cm,y=0.35cm]
+% \PixelArtTikz[Codes=ABCDFJ,Symboles={1,2,3,4,6,10},Symb,Style=\tiny\sffamily]{cap.csv}
+%\end{tikzpicture}
+%
+%\begin{tikzpicture}[x=0.35cm,y=0.35cm]
+% \PixelArtTikz[Codes=ABCDFJ,Couleurs={Red,Brown,Yellow,Black,Blue,Gray},Correction]{cap.csv}
+%\end{tikzpicture}
+%\end{codetex}
+%
+%\begin{codesortie}
+%\begin{filecontents*}[overwrite]{cap.csv}
+%-,-,-,-,-,-,-,-,D,-,D,-,D,-,-,-,-,-,-,-,-,-
+%-,D,D,-,-,-,-,D,D,D,D,D,D,-,-,D,D,D,D,-,-,-
+%D,-,-,D,-,D,D,F,F,F,F,F,F,D,D,-,-,-,-,D,-,-
+%-,D,-,-,D,F,F,F,-,-,F,F,F,F,F,D,-,D,D,-,-,-
+%-,-,D,D,F,F,F,-,F,F,-,F,F,F,F,F,D,D,-,-,-,-
+%-,-,-,D,F,F,F,F,F,F,F,F,F,F,F,F,D,-,-,-,-,-
+%-,-,-,D,F,J,J,J,J,J,J,J,F,F,F,F,D,-,-,-,-,-
+%-,-,-,D,J,-,-,-,J,-,-,-,J,J,F,F,D,-,-,-,-,-
+%-,-,-,D,J,-,D,-,J,-,D,-,J,J,B,B,D,-,-,-,-,-
+%-,-,-,D,J,-,-,-,J,-,-,-,J,J,B,B,D,-,-,-,-,-
+%-,-,-,D,C,J,J,J,J,J,J,J,J,C,C,C,D,-,-,-,-,-
+%-,-,-,D,C,C,C,C,C,C,C,C,C,C,C,D,D,D,-,-,-,-
+%-,-,-,D,C,C,C,D,D,D,D,D,D,C,D,A,A,A,D,-,-,-
+%-,-,-,D,F,C,C,C,C,C,C,C,C,D,A,-,-,-,A,D,-,-
+%-,-,-,D,F,C,F,C,C,C,C,F,D,A,-,A,A,A,-,A,D,-
+%-,-,D,C,F,F,F,F,C,C,F,D,A,-,A,F,F,F,A,-,A,D
+%-,-,D,C,F,F,F,F,F,F,F,D,A,-,A,F,-,F,A,-,A,D
+%-,-,D,A,D,-,A,-,A,-,A,D,A,-,A,F,F,F,A,-,A,D
+%-,-,-,D,D,-,A,-,A,-,A,-,D,A,-,A,A,A,-,A,D,-
+%-,-,-,-,-,D,D,F,D,D,D,D,F,D,A,-,-,-,A,D,-,-
+%-,-,-,-,-,-,D,A,D,-,-,D,-,-,D,A,A,A,D,-,-,-
+%-,-,-,-,-,-,D,D,D,-,-,D,D,D,D,D,D,D,-,-,-,-
+%\end{filecontents*}
+%
+%\begin{center}
+% \begin{tikzpicture}[x=0.35cm,y=0.35cm]
+% \PixelArtTikz[Codes=ABCDFJ,Symboles={1,2,3,4,6,10},Symb,Style=\tiny\sffamily]{cap.csv}
+% \end{tikzpicture}
+% ~~
+% \begin{tikzpicture}[x=0.35cm,y=0.35cm]
+% \PixelArtTikz[Codes=ABCDFJ,Couleurs={Red,Brown,Yellow,Black,Blue,Gray},Correction]{cap.csv}
+% \end{tikzpicture}
+%\end{center}
+%\end{codesortie}
+%
+%\newpage
\section{SudoMaths, en \TikZ}\label{sudomaths}
@@ -6094,8 +6091,7 @@ L'environnement créé, lié à \TikZ, trace la grille de SudoMaths (avec les bl
\end{codeidee}
\begin{codetex}[listing only]
-%grille classique non remplie, avec légendes H et V
-%les {} non nécessaires pour préciser que les cases seront "vides"
+%grille classique non remplie, avec légendes H/V, {} nécessaires pour préciser que les cases seront "vides"
\SudoMaths{}
\end{codetex}
@@ -6108,16 +6104,16 @@ La commande \ctex{SudoMaths} crée donc la grille (remplie ou non), dans un envi
\smallskip
-Si on veut exploiter le tracé de la grille, on peut utiliser l'\textit{environnement} \ctex{EnvSudoMaths} dans lequel on peut rajouter toute commande en \TikZ{} !
+On peut également utiliser l'\textit{environnement} \ctex{EnvSudoMaths} dans lequel on peut rajouter du code \TikZ{} !
\end{codeinfo}
\begin{codetex}[listing only]
%grille "toute seule"
-\SudoMaths[options]{liste}
+\SudoMaths[clés]{liste}
%grille avec ajout de code
-\begin{EnvSudoMaths}[options]{grille}
- commandes tikz
+\begin{EnvSudoMaths}[clés]{grille}
+ %commandes tikz
\end{EnvSudoMaths}
\end{codetex}
@@ -6170,8 +6166,8 @@ La \Cle{CouleurCase} est gérée -- en interne -- par le caractère \ctex{*} qui
/ / / (q)* / / §%
}
-\PLsudomaths[unite=0.75cm,nbcol=6,nbsubcol=2,nblig=6,nbsublig=3,police=\small\bfseries\ttfamily,%
- couleurtexte=red,couleurcase=yellow!50,legendes=false]{\grilleSuMa}
+\SudoMaths[Unite=0.75cm,NbCol=6,NbSubCol=2,NbLig=6,NbSubLig=3,%
+ Police=\small\bfseries\ttfamily,CouleurTexte=red,CouleurCase=yellow!50,Legendes=false]{\grilleSuMa}
\end{codetex}
\begin{codesortie}
@@ -6242,6 +6238,8 @@ La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0
\part{Historique}
+{\small \bverb|v 2.1.8|~:~~~~Suppression des commandes de PixelArt, désormais dans le package \textsf{PixelArtTikz}
+
{\small \bverb|v 2.1.7|~:~~~~Ajout d'une clé \textsf{Math} pour les sommets des figures de l'espace (pages \pageref{pave} et \pageref{tetra})
{\small \bverb|v 2.1.6|~:~~~~Correction d'un bug lié au chargement de \textsf{hvlogos}, remplacé par \textsf{hologo}
@@ -6302,7 +6300,7 @@ La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0
{\small \bverb|v 1.3.2|~:~~~~Correction d'un bug sur les conversions bintohex avec lualatex (page \pageref{conversions})
-{\small \bverb|v 1.3.1|~:~~~~Ajout d'une option pour ne pas afficher les bordures des corrections de pixelart (page \pageref{pixelart})
+{\small \bverb|v 1.3.1|~:~~~~Ajout d'une option pour ne pas afficher les bordures des corrections de pixelart
{\small \bverb|v 1.3.0|~:~~~~Commande pour présenter une conversion depuis la base 10 (page \pageref{convrestes})
@@ -6322,7 +6320,7 @@ La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0
{\small \bverb|v 1.2.1|~:~~~~Amélioration de la gestion du csv pour Pixelart
-{\small \bverb|v 1.1.9|~:~~~~Pixelart en \TikZ{} (page \pageref{pixelart})
+{\small \bverb|v 1.1.9|~:~~~~Pixelart en \TikZ{}
{\small \bverb|v 1.1.8|~:~~~~Style "Mainlevée" basique pour \TikZ (page \pageref{mainlevee})
diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee.sty b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
index ba4d2535df..676f054d70 100644
--- a/macros/latex/contrib/proflycee/tex/ProfLycee.sty
+++ b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
@@ -3,7 +3,8 @@
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfLycee}[2023/01/23 2.1.7 Aide pour l'utilisation de LaTeX en lycee]
+\ProvidesPackage{ProfLycee}[2023/01/25 2.1.8 Aide pour l'utilisation de LaTeX en lycee]
+% 2.1.8 Suppression des pixelarts, désormais dans le package "PixelArtTikz" !
% 2.1.7 Option booléenne Math pour les figures pave/tetraèdre
% 2.1.6 Chargement de hologo à la place de hvlogos (bug potentiel avec \bm)
% 2.1.5 Ajout de commandes pour calculer arrangements et combinaisons
@@ -68,8 +69,8 @@
\DeclareOption{build}{\@buildtrue}
\newif\if@pythontex \@pythontexfalse
\DeclareOption{pythontex}{\@pythontextrue}
-\newif\if@csvii \@csviifalse
-\DeclareOption{csvii}{\@csviitrue}
+%\newif\if@csvii \@csviifalse
+%\DeclareOption{csvii}{\@csviitrue}
\DeclareOption*{}
\ProcessOptions\relax
@@ -103,12 +104,12 @@
group-minimum-digits=4%
}%
\RequirePackage{fontawesome5}
-\if@csvii
- \RequirePackage[legacy]{csvsimple}
-\else
- \RequirePackage{expl3}
- \RequirePackage[l3]{csvsimple}
-\fi
+%\if@csvii
+% \RequirePackage[legacy]{csvsimple}
+%\else
+% \RequirePackage{expl3}
+% \RequirePackage[l3]{csvsimple}
+%\fi
%librairies tikz
\usetikzlibrary{calc}
\usetikzlibrary{decorations}
@@ -1711,79 +1712,79 @@
mainlevee/.default={5mm et 0.6pt}
}
-%==============PixelArt TikZ=========== OK !!
-\defKV[pixelarttkz]{%
- Codes=\def\PATlettres{#1},%
- Couleurs=\def\PATcouleurs{#1},%
- Symboles=\def\PATchiffres{#1},%
- Style=\def\PATtaille{#1}
-}
-
-\setKVdefault[pixelarttkz]{%
- Style=\scriptsize,%
- Correction=false,%
- Symb=false,%
- BordCases=true
-}
-
-\newcommand\PixelArtTikz[2][]{%
- \useKVdefault[pixelarttkz]
- \setKV[pixelarttkz]{#1}
- %affichage du corrigé
- \ifboolKV[pixelarttkz]{Correction}
- {%
- \csvloop{file=#2,no head,command={%
- \foreach \l [count=\n] in \csvline {%
- \StrDel{\l}{ }[\l]
- \setsepchar{,}
- \readlist*\LCPA\PATcouleurs
- \StrPosition{\PATlettres}{\l}[\pixcnt]%
- \xintifboolexpr{\pixcnt>0}%
- {%
- \itemtomacro\LCPA[\pixcnt]\pixcol%
- \ifboolKV[pixelarttkz]{BordCases}%
- {\draw[fill=\pixcol] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}%
- {\filldraw[\pixcol] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}%
- %
- }%
- {}
- }
- }
- }
- }
- {%
- \ifboolKV[pixelarttkz]{Symb}
- {%affichage du pixelart versions chiffres si besoin
- \csvloop{file=#2,no head,command={%
- \foreach \l [count=\n] in \csvline {%
- \StrDel{\l}{ }[\l]
- \setsepchar{,}
- \readlist*\LCNA\PATchiffres
- \StrPosition{\PATlettres}{\l}[\pixpos]%
- \xintifboolexpr{\pixpos>0}%
- {%
- \itemtomacro\LCNA[\pixpos]\pixchf%
- \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\pixchf} ;%
- }
- {}%
- }
- }
- }
- }
- {%affichage du pixelart versions lettres ou chiffres simples (<=9)
- \csvloop{file=#2,no head,command={%
- \foreach \l [count=\n] in \csvline {%
- \StrDel{\l}{ }[\l]
- \IfSubStr{\PATlettres}{\l}%
- {%
- \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\l};}
- {}
- }
- }
- }
- }
- }
-}
+%%==============PixelArt TikZ=========== OK !! :=> vers le package PixelArtTikz !!
+%\defKV[pixelarttkz]{%
+% Codes=\def\PATlettres{#1},%
+% Couleurs=\def\PATcouleurs{#1},%
+% Symboles=\def\PATchiffres{#1},%
+% Style=\def\PATtaille{#1}
+%}
+%
+%\setKVdefault[pixelarttkz]{%
+% Style=\scriptsize,%
+% Correction=false,%
+% Symb=false,%
+% BordCases=true
+%}
+%
+%\newcommand\PixelArtTikz[2][]{%
+% \useKVdefault[pixelarttkz]
+% \setKV[pixelarttkz]{#1}
+% %affichage du corrigé
+% \ifboolKV[pixelarttkz]{Correction}
+% {%
+% \csvloop{file=#2,no head,command={%
+% \foreach \l [count=\n] in \csvline {%
+% \StrDel{\l}{ }[\l]
+% \setsepchar{,}
+% \readlist*\LCPA\PATcouleurs
+% \StrPosition{\PATlettres}{\l}[\pixcnt]%
+% \xintifboolexpr{\pixcnt>0}%
+% {%
+% \itemtomacro\LCPA[\pixcnt]\pixcol%
+% \ifboolKV[pixelarttkz]{BordCases}%
+% {\draw[fill=\pixcol] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}%
+% {\filldraw[\pixcol] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}%
+% %
+% }%
+% {}
+% }
+% }
+% }
+% }
+% {%
+% \ifboolKV[pixelarttkz]{Symb}
+% {%affichage du pixelart versions chiffres si besoin
+% \csvloop{file=#2,no head,command={%
+% \foreach \l [count=\n] in \csvline {%
+% \StrDel{\l}{ }[\l]
+% \setsepchar{,}
+% \readlist*\LCNA\PATchiffres
+% \StrPosition{\PATlettres}{\l}[\pixpos]%
+% \xintifboolexpr{\pixpos>0}%
+% {%
+% \itemtomacro\LCNA[\pixpos]\pixchf%
+% \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\pixchf} ;%
+% }
+% {}%
+% }
+% }
+% }
+% }
+% {%affichage du pixelart versions lettres ou chiffres simples (<=9)
+% \csvloop{file=#2,no head,command={%
+% \foreach \l [count=\n] in \csvline {%
+% \StrDel{\l}{ }[\l]
+% \IfSubStr{\PATlettres}{\l}%
+% {%
+% \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\l};}
+% {}
+% }
+% }
+% }
+% }
+% }
+%}
%=========STATS2VAR=========
%variables directement dans tikzpicture
diff --git a/macros/latex/contrib/tagpdf/README.md b/macros/latex/contrib/tagpdf/README.md
index 8f562a8716..654c5ec695 100644
--- a/macros/latex/contrib/tagpdf/README.md
+++ b/macros/latex/contrib/tagpdf/README.md
@@ -1,6 +1,6 @@
#tagpdf — A package to create tagged pdf
-Packageversion: 0.98a
-Packagedate: 2022/12/22
+Packageversion: 0.98b
+Packagedate: 2023/01/24
Author: Ulrike Fischer
## License
diff --git a/macros/latex/contrib/tagpdf/tagpdf-backend.dtx b/macros/latex/contrib/tagpdf/tagpdf-backend.dtx
index e8fac1f6ec..0028f72397 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-backend.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-backend.dtx
@@ -47,13 +47,13 @@
% }^^A
% }
%
-% \date{Version 0.98a, released 2022-12-22}
+% \date{Version 0.98b, released 2023-01-24}
% \maketitle
% \begin{implementation}
% \begin{macrocode}
%<@@=tag>
%<*luatex>
-\ProvidesExplFile {tagpdf-luatex.def} {2022-12-22} {0.98a}
+\ProvidesExplFile {tagpdf-luatex.def} {2023-01-24} {0.98b}
{tagpdf~driver~for~luatex}
% \end{macrocode}
% \section{Loading the lua}
@@ -158,8 +158,8 @@
local ProvidesLuaModule = {
name = "tagpdf",
- version = "0.98a", --TAGVERSION
- date = "2022-12-22", --TAGDATE
+ version = "0.98b", --TAGVERSION
+ date = "2023-01-24", --TAGDATE
description = "tagpdf lua code",
license = "The LATEX Project Public License 1.3c"
}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-checks.dtx b/macros/latex/contrib/tagpdf/tagpdf-checks.dtx
index 6ec0e6aadc..fae3e853d3 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-checks.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-checks.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Version 0.98a, released 2022-12-22}
+% \date{Version 0.98b, released 2023-01-24}
% \maketitle
% \begin{documentation}
% \section{Commands}
@@ -63,7 +63,7 @@
% This is a generic command to retrieve data for the current structure or
% mc-chunk. Currently
% the only sensible values for the argument \meta{keyword}
-% are |mc_tag| and |struct_tag| and |struct_num|.
+% are |mc_tag|, |struct_tag|, |struct_id| and |struct_num|.
% \end{function}
%
% \section{Description of log messages}
@@ -295,7 +295,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-checks-code} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-checks-code} {2023-01-24} {0.98b}
{part of tagpdf - code related to checks, conditionals, debugging and messages}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-code.pdf b/macros/latex/contrib/tagpdf/tagpdf-code.pdf
index b0bb3a8290..5b954258dd 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-code.pdf
+++ b/macros/latex/contrib/tagpdf/tagpdf-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/tagpdf-data.dtx b/macros/latex/contrib/tagpdf/tagpdf-data.dtx
index 379c2114d7..93bf80667b 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-data.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-data.dtx
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Version 0.98a, released 2022-12-22}
+% \date{Version 0.98b, released 2023-01-24}
% \maketitle
% \begin{documentation}
% This files contains a various data files which are read in
@@ -60,7 +60,7 @@
% It lists the new tag, the rolemap and the namespace of the rolemap.
% \begin{macrocode}
%<*ns-latex>
-%% \ProvidesExplFile {tagpdf-ns-latex.def} {2022-12-22} {0.98a}
+%% \ProvidesExplFile {tagpdf-ns-latex.def} {2023-01-24} {0.98b}
%% {latex} {https://www.latex-project.org/ns/dflt/2022}{}
title, Title, pdf2,
part, Title, pdf2,
@@ -86,7 +86,7 @@ footnotelabel,Lbl, pdf2,
% It is bound to change
% \begin{macrocode}
%<*ns-latex-book>
-%% \ProvidesExplFile {tagpdf-ns-latex-book.def} {2022-12-22} {0.98a}
+%% \ProvidesExplFile {tagpdf-ns-latex-book.def} {2023-01-24} {0.98b}
%% {latex-book} {https://www.latex-project.org/ns/book/2022}{}
chapter, H1,pdf2,
section, H2,pdf2,
@@ -102,7 +102,7 @@ subparagraph, H6,pdf2,
% It is bound to change a lot!
% \begin{macrocode}
%<*ns-latex-inline>
-%% \ProvidesExplFile {tagpdf-ns-latex-inline.def} {2022-12-22} {0.98a}
+%% \ProvidesExplFile {tagpdf-ns-latex-inline.def} {2023-01-24} {0.98b}
%% {latex-inline} {https://www.latex-project.org/ns/inline/2022}{}
chapter, Span, pdf2,
section, Span, pdf2,
@@ -116,7 +116,7 @@ P, Span, pdf2,
% \section{The pdf namespace data}
% \begin{macrocode}
%<*ns-pdf>
-%% \ProvidesExplFile {tagpdf-ns-pdf.def} {2022-12-22} {0.98a}
+%% \ProvidesExplFile {tagpdf-ns-pdf.def} {2023-01-24} {0.98b}
%% {pdf} {http://iso.org/pdf/ssn}{}
StructTreeRoot,StructTreeRoot,pdf,D,
Document,Document,pdf,D,
@@ -184,7 +184,7 @@ Strong,Span,pdf,I,
% \section{The pdf 2.0 namespace data}
% \begin{macrocode}
%<*ns-pdf2>
-%% \ProvidesExplFile {tagpdf-ns-pdf2.def} {2022-12-22} {0.98a}
+%% \ProvidesExplFile {tagpdf-ns-pdf2.def} {2023-01-24} {0.98b}
%% {pdf2} {http://iso.org/pdf2/ssn}{}
Document,Document,pdf2,D,
Part,Part,pdf2,G,
@@ -240,7 +240,7 @@ Strong,Strong,pdf2,I,
% \section{The mathml namespace data}
% \begin{macrocode}
%<*ns-mathml>
-%% \ProvidesExplFile {tagpdf-ns-mathml.def} {2022-12-22} {0.98a}
+%% \ProvidesExplFile {tagpdf-ns-mathml.def} {2023-01-24} {0.98b}
% {mathml}{http://www.w3.org/1998/Math/MathML}{}
abs,,,
and,,,
@@ -475,7 +475,7 @@ xor,,,
% This will perhaps change in future.
% \begin{macrocode}
%<*parent-child>
-%% \ProvidesExplFile {tagpdf-parent-child.csv} {2022-12-22} {0.98a}
+%% \ProvidesExplFile {tagpdf-parent-child.csv} {2023-01-24} {0.98b}
,,,StructTreeRoot,Document,Art,Part,Div,Sect,BlockQuote,NonStruct,TOC,TOCI,Index,Private,Quote,Note,Reference,BibEntry,P,Hn,H,Lbl,Code,Span,Link,Annot,Form,Ruby,RB,RT,RP,Warichu,WT,WP,L,LI,LBody,Table,TR,TH,TD,THead,TBody,TFoot,Caption,Figure,Formula,MC
Document,both,document level,1,0..n,∅,‡,‡,∅,0..n,‡,∅,∅,∅,0..n,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅
Art,1.7,grouping,∅,0..n,∅,‡,‡,0..n,0..n,‡,∅,∅,∅,0..n,∅,0..n,∅,∅,∅,0..1,0..1,∅,∅,∅,0..n,0..n,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,0..n,∅,∅,0..n,0..n,∅,∅,∅,0..n,0..n,∅,∅
@@ -530,7 +530,7 @@ MC,both,---,∅,∅,∅,∅,∅,∅,0..n,‡,∅,∅,∅,0..n,0..n,0..n,0..n,0..
% This will perhaps change in future.
% \begin{macrocode}
%<*parent-child-2>
-%% \ProvidesExplFile {tagpdf-parent-child-2.csv} {2022-12-22} {0.98a}
+%% \ProvidesExplFile {tagpdf-parent-child-2.csv} {2023-01-24} {0.98b}
,,,StructTreeRoot,Document,DocumentFragment,Art,Part,Div,Sect,Aside,BlockQuote,NonStruct,TOC,TOCI,Index,Private,Title,Sub,Quote,Note,Reference,BibEntry,P,Hn,H,Lbl,Code,Em,Strong,Span,Link,Annot,Form,Ruby,RB,RT,RP,Warichu,WT,WP,FENote,L,LI,LBody,Table,TR,TH,TD,THead,TBody,TFoot,Caption,Figure,Formula,math,mathml,Artifact,MC
Document,both,document level,1,0..n,0..n,∅,‡,‡,∅,0..n,0..n,‡,∅,∅,∅,0..n,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,0..n,∅
DocumentFragment,2.0,document level,∅,0..n,0..n,0..n,‡,‡,0..n,0..n,0..n,‡,∅,∅,∅,0..n,∅,∅,∅,∅*,∅,∅,∅,∅,∅,∅,∅*,∅,∅,∅,∅*,∅*,∅,∅,∅,∅,∅,∅,∅,∅,∅*,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅*,∅,∅,∅,∅,0..n,∅
diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
index 573604fa87..fd3409c73b 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98a, released 2022-12-22}
+% \date{Version 0.98b, released 2023-01-24}
% \maketitle
% \begin{documentation}
% \end{documentation}
@@ -55,11 +55,11 @@
% \begin{macrocode}
%<@@=tag>
%<*generic>
-\ProvidesExplPackage {tagpdf-mc-code-generic} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-mc-code-generic} {2023-01-24} {0.98b}
{part of tagpdf - code related to marking chunks - generic mode}
%</generic>
%<*debug>
-\ProvidesExplPackage {tagpdf-debug-generic} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-debug-generic} {2023-01-24} {0.98b}
{part of tagpdf - debugging code related to marking chunks - generic mode}
%</debug>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
index 6195218abf..de5fe42739 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98a, released 2022-12-22}
+% \date{Version 0.98b, released 2023-01-24}
% \maketitle
% \begin{implementation}
% The code is splitted into three parts: code shared by all engines,
@@ -86,7 +86,7 @@
% \begin{macrocode}
%<@@=tag>
%<*luamode>
-\ProvidesExplPackage {tagpdf-mc-code-lua} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-mc-code-lua} {2023-01-24} {0.98b}
{tagpdf - mc code only for the luamode }
%</luamode>
% \end{macrocode}
@@ -165,7 +165,7 @@
=
{\lua_now:e
{
- tex.print(tex.getattribute(luatexbase.attributes.g__tag_mc_type_attr))
+ tex.print(\int_use:N \c_document_cctab,tex.getattribute(luatexbase.attributes.g__tag_mc_type_attr))
}
}
{ \prg_return_false: }
diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
index 66ad8a922c..e693242d1b 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98a, released 2022-12-22}
+% \date{Version 0.98b, released 2023-01-24}
% \maketitle
% \begin{documentation}
% \section{Public Commands}
@@ -174,7 +174,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-mc-code-shared} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-mc-code-shared} {2023-01-24} {0.98b}
{part of tagpdf - code related to marking chunks -
code shared by generic and luamode }
%</header>
diff --git a/macros/latex/contrib/tagpdf/tagpdf-roles.dtx b/macros/latex/contrib/tagpdf/tagpdf-roles.dtx
index d24fae960e..60ba857294 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-roles.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-roles.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98a, released 2022-12-22}
+% \date{Version 0.98b, released 2023-01-24}
% \maketitle
% \begin{documentation}
% \begin{function}
@@ -90,7 +90,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-roles-code} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-roles-code} {2023-01-24} {0.98b}
{part of tagpdf - code related to roles and structure names}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-space.dtx b/macros/latex/contrib/tagpdf/tagpdf-space.dtx
index 26602a96b0..f450520a48 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-space.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-space.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98a, released 2022-12-22}
+% \date{Version 0.98b, released 2023-01-24}
% \maketitle
% \begin{documentation}
% \begin{function}{interwordspace (setup-key)}
@@ -64,7 +64,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-space-code} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-space-code} {2023-01-24} {0.98b}
{part of tagpdf - code related to real space chars}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-struct.dtx b/macros/latex/contrib/tagpdf/tagpdf-struct.dtx
index 1299cc10e9..2e83d51280 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-struct.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-struct.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98a, released 2022-12-22}
+% \date{Version 0.98b, released 2023-01-24}
% \maketitle
% \begin{documentation}
% \section{Public Commands}
@@ -242,7 +242,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-struct-code} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-struct-code} {2023-01-24} {0.98b}
{part of tagpdf - code related to storing structure}
%</header>
% \end{macrocode}
@@ -507,6 +507,24 @@
% \end{macrocode}
% \end{variable}
%
+% \subsection{Adding the /ID key}
+% Every structure gets automatically an ID which is currently
+% simply calculated from the structure number.
+% \begin{macro}{\@@_struct_get_id:n}
+% \begin{macrocode}
+\cs_new:Npn \@@_struct_get_id:n #1 %#1=struct num
+ {
+ (
+ ID.
+ \prg_replicate:nn
+ { \int_abs:n{\g_@@_tree_id_pad_int - \tl_count:e { \int_to_arabic:n { #1 } }} }
+ { 0 }
+ \int_to_arabic:n { #1 }
+ )
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Filling in the tag info}
% \begin{macro}{\@@_struct_set_tag_info:nnn }
@@ -808,7 +826,8 @@
{ @@/struct/#1 }
{dict}
{
- \l_@@_tmpa_tl
+ \l_@@_tmpa_tl\c_space_tl
+ /ID~\@@_struct_get_id:n{#1}
}
}
{
@@ -884,7 +903,7 @@
%
% \begin{macro}{\@@_get_data_struct_tag:}
% this command allows \cs{tag_get:n} to get the current
-% structure tag with the keyword |struct_tag|. We will need to handle nesting
+% structure tag with the keyword |struct_tag|.
% \begin{macrocode}
\cs_new:Npn \@@_get_data_struct_tag:
{
@@ -894,6 +913,17 @@
\prop_item:cn {g_@@_struct_\g_@@_struct_stack_current_tl _prop}{S}
}
}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_get_data_struct_id:}
+% this command allows \cs{tag_get:n} to get the current
+% structure id with the keyword |struct_id|.
+% \begin{macrocode}
+\cs_new:Npn \@@_get_data_struct_id:
+ {
+ \@@_struct_get_id:n {\g_@@_struct_stack_current_tl}
+ }
%</package>
% \end{macrocode}
% \end{macro}
@@ -1480,7 +1510,7 @@
% \section{Attributes and attribute classes}
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage {tagpdf-attr-code} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-attr-code} {2023-01-24} {0.98b}
{part of tagpdf - code related to attributes and attribute classes}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-tree.dtx b/macros/latex/contrib/tagpdf/tagpdf-tree.dtx
index f8c7aa27d7..2a02a7c5df 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-tree.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-tree.dtx
@@ -47,13 +47,13 @@
% }^^A
% }
%
-% \date{Version 0.98a, released 2022-12-22}
+% \date{Version 0.98b, released 2023-01-24}
% \maketitle
% \begin{implementation}
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-tree-code} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-tree-code} {2023-01-24} {0.98b}
{part of tagpdf - code related to writing trees and dictionaries to the pdf}
%</header>
% \end{macrocode}
@@ -119,6 +119,73 @@
}
% \end{macrocode}
%
+% \subsection{Writing the IDtree}
+%
+% The ID are currently quite simple: every structure has an ID build from
+% the prefix ID together with the structure number padded with enough zeros to
+% that we get directly an lexical order. We ship them out in bundles
+% At first a seq to hold the references for the kids
+% \begin{variable}{\g_@@_tree_id_pad_int}
+% \begin{macrocode}
+\int_new:N\g_@@_tree_id_pad_int
+% \end{macrocode}
+% \end{variable}
+% Now we get the needed padding
+% \begin{macrocode}
+\cs_generate_variant:Nn \tl_count:n {e}
+\hook_gput_code:nnn{begindocument}{tagpdf}
+ {
+ \int_gset:Nn\g_@@_tree_id_pad_int
+ {\tl_count:e { \@@_ref_value_lastpage:nn{tagstruct}{1000}}+1}
+ }
+
+% \end{macrocode}
+% This is the main code to write the tree it basically splits the
+% existing structure numbers in chunks of length 50
+% TODO consider is 50 is a good length.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_tree_write_idtree:
+ {
+ \tl_clear:N \l_@@_tmpa_tl
+ \tl_clear:N \l_@@_tmpb_tl
+ \int_zero:N \l_@@_tmpa_int
+ \int_step_inline:nn {\c@g_@@_struct_abs_int}
+ {
+ \int_incr:N\l_@@_tmpa_int
+ \tl_put_right:Nx \l_@@_tmpa_tl
+ {
+ \@@_struct_get_id:n{##1}~\pdf_object_ref:n{@@/struct/##1}~
+ }
+ \int_compare:nNnF {\l_@@_tmpa_int}<{50} %
+ {
+ \pdf_object_unnamed_write:nx {dict}
+ { /Limits~[\@@_struct_get_id:n{##1-\l_@@_tmpa_int+1}~\@@_struct_get_id:n{##1}]
+ /Names~[\l_@@_tmpa_tl]
+ }
+ \tl_put_right:Nx\l_@@_tmpb_tl {\pdf_object_ref_last:\c_space_tl}
+ \int_zero:N \l_@@_tmpa_int
+ \tl_clear:N \l_@@_tmpa_tl
+ }
+ }
+ \tl_if_empty:NF \l_@@_tmpa_tl
+ {
+ \pdf_object_unnamed_write:nx {dict}
+ {
+ /Limits~
+ [\@@_struct_get_id:n{\c@g_@@_struct_abs_int-\l_@@_tmpa_int+1}~
+ \@@_struct_get_id:n{\c@g_@@_struct_abs_int}]
+ /Names~[\l_@@_tmpa_tl]
+ }
+ \tl_put_right:Nx\l_@@_tmpb_tl {\pdf_object_ref_last:}
+ }
+ \pdf_object_unnamed_write:nx {dict}{/Kids~[\l_@@_tmpb_tl]}
+ \@@_prop_gput:cnx
+ { g_@@_struct_0_prop }
+ { IDTree }
+ { \pdf_object_ref_last: }
+ }
+% \end{macrocode}
+%
% \subsection{Writing structure elements}
% The following commands are needed to write out the structure.
% \begin{macro}{\@@_tree_write_structtreeroot:}
@@ -135,8 +202,15 @@
\@@_prop_gput:cnx
{ g_@@_struct_0_prop }
{ RoleMap }
- { \pdf_object_ref:n { @@/tree/rolemap } }
- \@@_struct_write_obj:n { 0 }
+ { \pdf_object_ref:n { @@/tree/rolemap } }
+ \@@_struct_fill_kid_key:n { 0 }
+ \@@_struct_get_dict_content:nN { 0 } \l_@@_tmpa_tl
+ \pdf_object_write:nnx
+ { @@/struct/0 }
+ {dict}
+ {
+ \l_@@_tmpa_tl
+ }
}
}
% \end{macrocode}
@@ -149,7 +223,14 @@
{ g_@@_struct_0_prop }
{ ParentTree }
{ \pdf_object_ref:n { @@/tree/parenttree } }
- \@@_struct_write_obj:n { 0 }
+ \@@_struct_fill_kid_key:n { 0 }
+ \@@_struct_get_dict_content:nN { 0 } \l_@@_tmpa_tl
+ \pdf_object_write:nnx
+ { @@/struct/0 }
+ {dict}
+ {
+ \l_@@_tmpa_tl
+ }
}
}
% \end{macrocode}
@@ -459,6 +540,7 @@
\hook_use:n {tagpdf/finish/before}
\@@_tree_final_checks:
\@@_tree_write_parenttree:
+ \@@_tree_write_idtree:
\@@_tree_write_rolemap:
\@@_tree_write_classmap:
\@@_tree_write_namespaces:
diff --git a/macros/latex/contrib/tagpdf/tagpdf-user.dtx b/macros/latex/contrib/tagpdf/tagpdf-user.dtx
index a2a0475ccf..309b62a6c1 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-user.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-user.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98a, released 2022-12-22}
+% \date{Version 0.98b, released 2023-01-24}
% \maketitle
% \begin{documentation}
% \section{Setup commands}
@@ -246,7 +246,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-user} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-user} {2023-01-24} {0.98b}
{tagpdf - user commands}
%</header>
% \end{macrocode}
@@ -639,6 +639,7 @@
% \begin{macrocode}
\AddToHook{begindocument/before}
{
+ \@ifundefined{@mult@ptagging@hook}{\RequirePackage{output-patches-tmp-ltx}}{} %
\bool_if:NF \g_@@_mode_lua_bool
{
\cs_if_exist:NT \@kernel@before@footins
diff --git a/macros/latex/contrib/tagpdf/tagpdf.dtx b/macros/latex/contrib/tagpdf/tagpdf.dtx
index 59795d78a3..c264123ebc 100644
--- a/macros/latex/contrib/tagpdf/tagpdf.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf.dtx
@@ -34,7 +34,7 @@
% \end{function}
%
% \begin{function}{ \tag_stop_group_begin:, \tag_stop_group_end:,
-% \tag_stop:, \tag_start:, \tag_stop:n, \tag_start:n }
+% \tag_stop:, \tag_start: }
% We need commands to stop tagging in some places.
% There simply switches the two local booleans. The grouping commands
% can be used to group the effect.
@@ -92,7 +92,7 @@
% \begin{macrocode}
%<@@=tag>
%<*package>
-\ProvidesExplPackage {tagpdf} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf} {2023-01-24} {0.98b}
{ A package to experiment with pdf tagging }
\bool_if:nF
@@ -118,7 +118,7 @@
% \end{macrocode}
%<*debug>
% \begin{macrocode}
-\ProvidesExplPackage {tagpdf-debug} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-debug} {2023-01-24} {0.98b}
{ debug code for tagpdf }
\@ifpackageloaded{tagpdf}{}{\PackageWarning{tagpdf-debug}{tagpdf~not~loaded,~quitting}\endinput}
% \end{macrocode}
@@ -159,7 +159,7 @@
% \end{macrocode}
% \begin{macrocode}
%<*base>
-\ProvidesExplPackage {tagpdf-base} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdf-base} {2023-01-24} {0.98b}
{part of tagpdf - provide base, no-op versions of the user commands }
%</base>
% \end{macrocode}
@@ -197,6 +197,7 @@
{
{abspage} { \int_use:N \g_shipout_readonly_int}
{tagmcabs}{ \int_use:N \c@g_@@_MCID_abs_int }
+ {tagstruct}{\int_use:N \c@g_@@_struct_abs_int }
}
}
}
@@ -518,8 +519,8 @@
%<*base>
\cs_new_protected:Npn \tag_stop:{}
\cs_new_protected:Npn \tag_start:{}
-\cs_new_protected:Npn \tag_stop:n{}
-\cs_new_protected:Npn \tag_start:n{}
+\cs_new_protected:Npn \tag_stop:n #1 {}
+\cs_new_protected:Npn \tag_start:n #1 {}
%</base>
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/tagpdf/tagpdf.pdf b/macros/latex/contrib/tagpdf/tagpdf.pdf
index 08ec9e590c..a77e88d3c5 100644
--- a/macros/latex/contrib/tagpdf/tagpdf.pdf
+++ b/macros/latex/contrib/tagpdf/tagpdf.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/tagpdf.tex b/macros/latex/contrib/tagpdf/tagpdf.tex
index fc096c338d..e36b3e9197 100644
--- a/macros/latex/contrib/tagpdf/tagpdf.tex
+++ b/macros/latex/contrib/tagpdf/tagpdf.tex
@@ -1,11 +1,22 @@
% !Mode:: "TeX:DE:UTF-8:Main"
\PassOptionsToPackage{check-declarations,enable-debug}{expl3}
-%\RequirePackage{pdfmanagement-testphase}
-\DocumentMetadata{pdfversion=2.0,lang=en-UK,testphase=phase-II,testphase=toc-tagging,testphase=sec-tagging,pdfstandard=a-2b}
+
+% Note on the compilation of the documentation:
+% The documentation uses for the tagging sometimes code
+% that is under development and/or not public yet.
+% To compile an *untagged* documentation, comment the line with
+% the testphase keys in the following \DocumentMetadata command.
+
+\DocumentMetadata
+ {
+ % comment the following line to compile an untagged documentation:
+ testphase=phase-II,testphase=toc-tagging,testphase=sec-tagging,
+ pdfversion=2.0,lang=en-UK,pdfstandard=a-2b
+ }
\makeatletter
-\def\UlrikeFischer@package@version{0.98a}
-\def\UlrikeFischer@package@date{2022-12-22}
+\def\UlrikeFischer@package@version{0.98b}
+\def\UlrikeFischer@package@date{2023-01-24}
\makeatother
\documentclass[DIV=12,parskip=half-,bibliography=totoc,a4paper]{article}
@@ -48,6 +59,10 @@
escapechar=*,
commentstyle=\color{green!50!black}\bfseries}
+% this allow to get real spaces in the code parts.
+% This should perhaps be combined in a new listings key
+\lstset{showspaces}
+\makeatletter \def\lst@visiblespace{\lst@ttfamily{\char32}{\char32}}\makeatother
\tagpdfsetup{
@@ -56,8 +71,7 @@
%show-spaces
}
-\usepackage[pdfdisplaydoctitle=true,%hyperfootnotes=false,
- ]{hyperref}
+\usepackage[pdfdisplaydoctitle=true]{hyperref}
\hypersetup{
pdftitle={The tagpdf package, v\csname UlrikeFischer@package@version\endcsname},
@@ -65,6 +79,8 @@
colorlinks}
\tcbuselibrary{documentation}
+%less space between docCommand
+\tcbset{nosep/.style={doc raster command={raster after skip=-10pt}}}
\definecolor{Definition}{rgb}{0,0.2,0.6}
\newcommand\PrintKeyName[1]{\textsf{#1}}
\newcommand\pkg[1]{\texttt{#1}}
@@ -433,8 +449,8 @@ Small bug fixes.
\item a new option \texttt{paratag} allows to change the tag name used for the
automatically tagged paragraphs.
-\item the commands |\tag_start:|, |\tag_stop:n| and |\tag_start:n| allow
- to stop and start tagging for example in trial typesetting.
+\item the commands |\tag_start:|, |\tag_stop:|, |\tag_stop:n| and |\tag_start:n| allow
+ to stop and start tagging (for example in trial typesetting).
\item Small bug fixes.
\end{itemize}
@@ -461,6 +477,14 @@ can improve the html export.
\end{itemize}
+\subsection{Changes in version 0.98a}
+Small bug fixes in code and documentation.
+
+\subsection{Changes in version 0.98b}
+The main change is from now on every structure has an ID and an IDtree is
+added. The ID of a structure can be retrieved with |\tag_get:n|
+see~\ref{sec:retrieve}.
+
\subsection{Proof of concept: the tagging of the documentation itself}
@@ -975,7 +999,7 @@ executed on the same page as the begin command. So think carefully how to
place them. For strategies how to handle paragraphs that split over pages see
subsection~\ref{sec:splitpara}.
-\begin{docCommand}{tagmcbegin}{\marg{key-val-list}}\end{docCommand}
+\begin{docCommand}[nosep]{tagmcbegin}{\marg{key-val-list}}\end{docCommand}
\begin{docCommand}{tag_mc_begin:n}{\marg{key-val-list}}\end{docCommand}
@@ -1072,7 +1096,7 @@ The key-val list understands the following keys:
\end{description}
-\begin{docCommand}{tagmcend}{}\end{docCommand}
+\begin{docCommand}[nosep]{tagmcend}{}\end{docCommand}
\begin{docCommand}{tag_mc:end}{}\end{docCommand}
These commands insert the end code of the marked content. They don't end a
@@ -1102,7 +1126,7 @@ the command, as the effect of the begin command ends with a new
%\end{tcolorbox}
-\begin{docCommand}{tagmcuse}{}\end{docCommand}
+\begin{docCommand}[nosep]{tagmcuse}{}\end{docCommand}
\begin{docCommand}{tag_mc_use:n}{}\end{docCommand}
@@ -1111,7 +1135,7 @@ into the current structure. Be aware that a marked content can be used only
once -- the command will warn you if you try to use it a second time.
-\begin{docCommand}{tag_mc_end_push:}{}\end{docCommand}
+\begin{docCommand}[nosep]{tag_mc_end_push:}{}\end{docCommand}
\begin{docCommand}{tag_mc_begin_pop:n}{\marg{key-val-list}}\end{docCommand}
If there is an open mc chunk,
@@ -1123,7 +1147,7 @@ definitions so there is only an expl3 version. Perhaps other content of the mc-d
-\begin{docCommand}{tagmcifinTF}{\marg{true code}\marg{false code}}\end{docCommand}
+\begin{docCommand}[nosep]{tagmcifinTF}{\marg{true code}\marg{false code}}\end{docCommand}
\begin{docCommand}{tag_mc_if_in:TF}{\marg{true code}\marg{false code}}\end{docCommand}
@@ -1133,10 +1157,14 @@ In \emph{generic mode}, where marked content command shouldn't be nested, it wor
In \emph{lua mode} it tests if the mc-attribute is currently unset. You can't test the nesting level with it!
+\subsubsection{Retrieving data} \label{sec:retrieve}
+With more elaborate tagging the need arise to retrieve and store current data.
\begin{docCommand}{tag_get:n}{\marg{key word}}\end{docCommand}
-This command give back some variables. Currently the only working key words are \verb+mc_tag+, \verb+struct_tag+ and \verb+struct_num+. The last returns a number and works also if only \pkg{tagpdf-base} has been loaded, but then doesn't give the same output: if \pkg{tagpdf} is loaded and tagging is active, \verb+struct_num+ gives the number of currently
+This (expandable) command give back some variables. Currently the working key words are \verb+mc_tag+, \verb+struct_tag+,
+\verb+struct_id+ and \verb+struct_num+. The ID is a string and returned including parentheses.
+\verb+struct_num+ returns a number and works also if only \pkg{tagpdf-base} has been loaded, but then doesn't give the same output: if \pkg{tagpdf} is loaded and tagging is active, \verb+struct_num+ gives the number of currently
active structure, so it reverts to the parent number if a structure is closed. If only \pkg{tagpdf-base} is loaded
nesting of structure is not tracked and so the command gives back the number of the last structure that has been created.
@@ -1230,11 +1258,11 @@ the needed code.
\tagstructbegin{tag=Figure,alt={Illustration of link annotation structure},attribute=bbox}\tagmcbegin{tag=Figure}
\ExplSyntaxOn
-\tag_stop_group_begin:
+\tag_stop:
\ExplSyntaxOff
\input{link-figure-input}
\ExplSyntaxOn
-\tag_stop_group_end:
+\tag_start:
\ExplSyntaxOff
\tagmcend\tagstructend
@@ -1408,7 +1436,7 @@ rerun.
\subsubsection{Automatic tagging of paragraphs}\label{sec:paratagging}
-\begin{docCommand}{tagpdfparaOn}{}\end{docCommand}
+\begin{docCommand}[nosep]{tagpdfparaOn}{}\end{docCommand}
\begin{docCommand}{tagpdfparaOff}{}\end{docCommand}
Another feature that emerged from the \LaTeX{} tagged PDF project are hooks at the begin and end of paragraphs.
@@ -1491,7 +1519,7 @@ The flat version is more \LaTeX-like and it is rather straightforward to patch \
The following commands can be used to define the tree structure:
-\begin{docCommand}{tagstructbegin}{\marg{key-val-list}}\end{docCommand}
+\begin{docCommand}[nosep]{tagstructbegin}{\marg{key-val-list}}\end{docCommand}
\begin{docCommand}{tag_struct_begin:n}{\marg{key-val-list}}\end{docCommand}
These commands start a new structure. They don't start a group. They set all their values globally.
@@ -1629,12 +1657,12 @@ The key-val list understands the following keys:
This key sets the |/E| key, the expanded form of an abbreviation or an acronym (I couldn't think of a better name, so I sticked to E).
\end{description}
-\begin{docCommand}{tagstructend}{}\end{docCommand}
+\begin{docCommand}[nosep]{tagstructend}{}\end{docCommand}
\begin{docCommand}{tag_struct_end:}{}\end{docCommand}
These commands end a structure. They don't end a group and it doesn't matter if they are in another group as the starting commands.
-\begin{docCommand}{tagstructuse}{\marg{label}}\end{docCommand}
+\begin{docCommand}[nosep]{tagstructuse}{\marg{label}}\end{docCommand}
\begin{docCommand}{tag_struct_use:n}{\marg{label}}\end{docCommand}
@@ -1769,22 +1797,54 @@ The following shows the marking needed for a section, a sentence and a list with
\end{document}
\end{lstlisting}
+\subsection{Interrupting the tagging}
-\subsection{Lazy and automatic tagging}\label{sec:lazy}
+Experience showed that it must be possible to interrupt tagging in some places.
+For example various packages do trial typesetting to measure text and this shouldn't create
+structures. There are therefore a number of commands for various use cases\footnote{it is
+quite possible that some of the commands will disappear again if we realize that they are not fitting!}
-A number of features of \PDF{} readers need a fully tagged \PDF{}. As an example screen readers tend to ignore alternative text (see section~\ref{sec:alt}) if the \PDF{} is not fully tagged. Also reflowing a \PDF{} only works for me (even if real space chars are in the \PDF{}) if the \PDF{} is fully tagged.
+\begin{docCommand}[nosep]{tag_stop:}{}\end{docCommand}
+\begin{docCommand}[nosep]{tag_start:}{}\end{docCommand}
+\begin{docCommand}[nosep]{tag_stop_group_begin:}{}\end{docCommand}
+\begin{docCommand}{tag_start_group_end:}{}\end{docCommand}
-This means that even if you don't care about a proper structure you should try to add at least some minimal tagging. With pdflatex this is not easy due to the page break problem. But with lualatex you can use an \texttt{Document} structure and inside it rather large mc-chunks. This minimizes the needed work.
+This commands stop and start tagging in the current group
+by switching \emph{local} booleans.
+The grouping commands also open and close a group.
-One could ask if in lua mode the code couldn't try to mark up unmarked parts e.g. as P-type chunks, like it marks them up as artifacts currently. Sadly this is not so easy, as it is quite difficult to reliably identify the structure and the place in the kids array where such chunks belongs too. I also don't think that it is really needed. It is not so difficult to define user macros which e.g. opens a structure and start an mc-chunk or which close an open mc-chunk before issuing the next \verb+\tagmcbegin+.
+\begin{docCommand}[nosep]{tag_stop:n}{\marg{label}}\end{docCommand}
+\begin{docCommand}{tag_start:n}{\marg{label}}\end{docCommand}
+This commands stop and start tagging in the current group
+by switching \emph{local} booleans, but |\tag_start:n|
+only restarts if the corresponding |tag_stop:n| actually
+stopped something. This is meant for a situation like the following,
+where you don't want that the inner |\tag_start:n| restarts tagging.
+\begin{lstlisting}
+\tag_stop:n{outer}
+ ...
+ \tag_stop:n{inner}
+ ...
+ \tag_start:n{inner}
+ ...
+\tag_start:n{outer}
+\end{lstlisting}
+
+\subsection{Lazy and automatic tagging}\label{sec:lazy}
-\subsection{Adding tagging to commands}
+
+A number of features of \PDF{} readers need a fully tagged \PDF{}. As an example screen readers tend to ignore alternative text (see section~\ref{sec:alt}) if the \PDF{} is not fully tagged. Also reflowing a \PDF{} only works for me (even if real space chars are in the \PDF{}) if the \PDF{} is fully tagged (recent versions of the adobe reader manage to
+reflow also not tagged \PDF{} but it is very slow).
+
+This means that even if you don't care about a proper structure you should try to add at least some minimal tagging. With the now available automatic tagging of paragraphs all that is needed, is to use |testphase=phase-II| in |\DocumentMetadata|. With lualatex this can work quite OK if you don't have unbalanced paragraphs in your document (pdflatex is more fragile).
+\subsection{Adding tagging to commands}
+
As mentioned above the mc-markers should not be nested. Basically you write:
@@ -1796,9 +1856,7 @@ As mentioned above the mc-markers should not be nested. Basically you write:
\end{lstlisting}
-This is quite workable as long as you mark everything manually. But how to write commands, e.g for a tabular or a graphic, that do tagging automatically without breaking the flow and the structure?
-
-
+This is quite workable as long as you mark everything manually. But when defining commands you have to ensure that they correctly push and pop the mc-chunks where needed.
\section{Alternative text, ActualText and text-to-speech software}\label{sec:alt}
@@ -2133,7 +2191,7 @@ This command takes as argument a key-val list which implements a number of show
-\printbibliography
+\printbibliography[heading=bibintoc]
diff --git a/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty b/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
index cc4eb9f4b7..3ad0e3de74 100644
--- a/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
+++ b/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
@@ -1,33 +1,36 @@
%\RequirePackage[enable-debug]{expl3}[2018/06/14]
-\ProvidesExplPackage {tagpdfdocu-patches} {2022-12-22} {0.98a}
+\ProvidesExplPackage {tagpdfdocu-patches} {2023-01-24} {0.98b}
{patches/commands for the tagpdf documentation}
\RequirePackage{etoolbox,xpatch}
+% latex-lab experiments
+\providecommand\tagtool[1]{}
%vLogos
\ExplSyntaxOn
\DeclareRobustCommand\TeX{
+ \leavevmode
\tag_mc_end_push:
\tag_struct_begin:n{tag=Span,alt=TeX,actualtext=TeX}
\tagmcbegin{}
- T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\@
+ T\kern-.1667em\lower.5ex\hbox{E}\kern-.05emX\@ %changed from -.125em
\tagmcend
\tag_struct_end:
\tag_mc_begin_pop:n{}}
-\DeclareRobustCommand{\LaTeX}{L\kern-.36em%
- {
+\DeclareRobustCommand{\LaTeX}{
+ \leavevmode
\tag_mc_end_push:
\tag_struct_begin:n{tag=Span,alt=LaTeX,actualtext=LaTeX}
\tagmcbegin{}
+ L\kern-.25em % %changed from -0.36em
\sbox\z@ T%
\vbox to\ht\z@{\hbox{\check@mathfonts
\fontsize\sf@size\z@
\math@fontsfalse\selectfont
A}%
\vss}%
- }%
- \kern-.15em%
- T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\@
+ \kern-.1em % %changed from 0.15em
+ T\kern-.1667em\lower.5ex\hbox{E}\kern-.05emX\@ %changed from -0.125
\tagmcend
\tag_struct_end:
\tag_mc_begin_pop:n{}
@@ -39,6 +42,13 @@
\AddToHook{cmd/textbf/after}
{\tag_mc_end:\tag_struct_end:\tag_mc_begin_pop:n{}}
+
+% emph
+\AddToHook{cmd/emph/before}
+ {\leavevmode\tag_mc_end_push:\tag_struct_begin:n{tag=Em}\tagmcbegin{}}
+
+\AddToHook{cmd/emph/after}
+ {\tag_mc_end:\tag_struct_end:\tag_mc_begin_pop:n{}}
\newcommand\minisec[1]{%
diff --git a/macros/luatex/latex/luaquotes/README b/macros/luatex/latex/luaquotes/README
index 89663013c2..86303cf8c2 100644
--- a/macros/luatex/latex/luaquotes/README
+++ b/macros/luatex/latex/luaquotes/README
@@ -1,6 +1,6 @@
luaquotes - smart quotes with lua
-version: 1.3.0
+version: 1.4.0
This package automatically creates smart quotes using lua filters and provides auxiliary commands for typesetting specific lua punctuation
@@ -12,6 +12,7 @@ For suggestions, feature requests, and bug reports, please use the project's
GitHub site: https://github.com/ezgranet/luaquotes
Version history:
+25/01/2023—added support for Swiss German quotations
15/01/2023—fixed single quotations within parentheses
12/12/2022-added degm function
23/11/2022-walking back automatic elision for now
diff --git a/macros/luatex/latex/luaquotes/luaquotes-documentation.pdf b/macros/luatex/latex/luaquotes/luaquotes-documentation.pdf
index 9017157b1a..a331cac8dc 100644
--- a/macros/luatex/latex/luaquotes/luaquotes-documentation.pdf
+++ b/macros/luatex/latex/luaquotes/luaquotes-documentation.pdf
Binary files differ
diff --git a/macros/luatex/latex/luaquotes/luaquotes-documentation.tex b/macros/luatex/latex/luaquotes/luaquotes-documentation.tex
index 0ac2417deb..4f8b67c6af 100644
--- a/macros/luatex/latex/luaquotes/luaquotes-documentation.tex
+++ b/macros/luatex/latex/luaquotes/luaquotes-documentation.tex
@@ -68,7 +68,7 @@ breaklines,
{latex}
\usepackage{luaquotes}
\end{minted}
-The French and German options, for those languages' punctuation, are called by the following respective commands.
+The French, German, German (guillemets), and Swiss German options, for those languages' punctuation, are called by the following respective commands.
\begin{minted}[
frame=lines,
framesep=2mm,
@@ -80,7 +80,8 @@ breaklines,
{latex}
\usepackage[fr]{luaquotes} %French
\usepackage[de]{luaquotes} % German
-\usepackage[degm]{luaquotes} % German with French-style quotes
+\usepackage[degm]{luaquotes} % German with guillemets
+\usepackage[dech]{luaquotes} %Swiss German
\end{minted}
\subsubsection{English Features}
The English features are designed to smartly recognise English punctuation:
@@ -88,7 +89,7 @@ The English features are designed to smartly recognise English punctuation:
\renewcommand{\arraystretch}{2}
\begin{tabular}{ccc}
\ttfamily Feature & User input & Output\\
- Double Quotes & \LARGE\texttt{"Salut!"}%
+ Double Quotes & \LARGE\texttt{"Hello!"}%
&
\LARGE "Hello"\\
Single Quotes& \LARGE\texttt{'Hello!'}%
@@ -124,8 +125,8 @@ The German option produces the following output:
\end{tabular}
\end{center}
-\subsubsection{The German (\texttt{degm}) option}
-The German (\texttt{degm}) option produces the following output:
+\subsubsection{The German (guillemets) option}
+The German (guillemets) option produces the following output:
\begin{center}
\renewcommand{\arraystretch}{2}
@@ -139,7 +140,20 @@ The German (\texttt{degm}) option produces the following output:
\end{tabular}
\end{center}
+\subsubsection{The Swiss German option}
+The Swiss German option produces the following output:
+\begin{center}
+\renewcommand{\arraystretch}{2}
+\begin{tabular}{cc}
+\ttfamily User input &Output\\
+\LARGE\texttt{"Hallo!"}%
+& \LARGE \glmtl Hallo!\glmtr\\
+\LARGE\texttt{'Hallo!'}%
+& \LARGE \sglmtl Hallo!\sglmtr\\
+
+\end{tabular}
+\end{center}
\subsection{Activation and De-activation}
The package automatically activates the smart quotes function at the beginning of the document. To deactivate the smart quotes function within a document, the following commands are used:
@@ -291,9 +305,10 @@ firstnumber=last
]
{latex}
-\def\luaquotesversionnumber{1.3.0}
+
+\def\luaquotesversionnumber{1.4.0}
\ProvidesPackage{luaquotes}
- [2023/15/15\luaquotesversionnumber smart quotes with lua]
+ [2023/01/25\luaquotesversionnumber smart quotes with lua]
% !TeX program = lualatex
% !TeX encoding = utf8
% This work may be distributed and/or modified under the
@@ -475,6 +490,33 @@ luatexbase.add_to_callback (
\newcommand\frsinglequotespcloseoff{\directlua{luatexbase.remove_from_callback (
"process_input_buffer" , "frpsinglequotesclose" )}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% DECH Parentheses
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\sglmtlpdech}{{\addfontfeature{RawFeature={-qtbye,-tlig}}‹}}
+\newcommand{\sglmtrpdech}{{\addfontfeature{RawFeature={-qtbye,-tlig}}›}}
+
+\luaexec{function dechpsinglequotes ( s )
+ return ( s:gsub ( "\%('",[[(\sglmtlpdech]]) )
+ end}
+\luaexec{function dechpsinglequotesclose ( s )
+ return ( s:gsub ( "'\%)",[[\sglmtrpdech)]]) )
+ end}
+
+\newcommand\dechsinglequotespon{\directlua{
+luatexbase.add_to_callback (
+ "process_input_buffer" , dechpsinglequotes , "dechpsinglequotes" )
+ }}
+\newcommand\dechsinglequotespoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "dechpsinglequotes" )}}
+\newcommand\dechsinglequotespcloseon{\directlua{
+luatexbase.add_to_callback (
+ "process_input_buffer" , dechpsinglequotesclose , "dechpsinglequotesclose" )
+ }}
+\newcommand\dechsinglequotespcloseoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "dechpsinglequotesclose" )}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -530,8 +572,7 @@ luatexbase.add_to_callback (
}
\DeclareOption{en}{
-\AtBeginDocument{\frsmartquotes\frdumbquotes%
-\desmartquotes\dedumbquotes\degmsmartquotes\degmdumbquotes\smartquotes}
+\AtBeginDocument{\dechsmartquotes\dechdumbquotes\frsmartquotes\frdumbquotes\desmartquotes\dedumbquotes\degmsmartquotes\degmdumbquotes\smartquotes}
\renewcommand{\texttt}[1]{{\ttfamily\addfontfeature{RawFeature={+qtbye,-tlig}} #1}}
}
@@ -654,6 +695,7 @@ return ( s:gsub ( " '(..-)'", " ‚\%1`" ) )
}
\DeclareOption{de}{
\AtBeginDocument{
+\dechsmartquotes\dechdumbquotes
\frsmartquotes
\frdumbquotes
\smartquotes
@@ -698,6 +740,7 @@ return ( s:gsub ( " '(..-)'", " ‚\%1‹" ) )
\degmsinglequotescloseoff}
\DeclareOption{degm}{
\AtBeginDocument{
+\dechsmartquotes\dechdumbquotes
\frsmartquotes
\frdumbquotes
\smartquotes
@@ -747,16 +790,60 @@ return ( s:gsub ( " '(..-)'", " ‹\\,\%1\\,›" ) )
\frsinglequotelinestartoff
\frsinglequotescloseoff}
\DeclareOption{fr}{
-\AtBeginDocument{\desmartquotes\dedumbquotes%
-\degmsmartquotes\degmdumbquotes%
-\smartquotes\dumbquotes%
-\dumbquotes\frsmartquotes}
+\AtBeginDocument{\dechsmartquotes\dechdumbquotes\desmartquotes\dedumbquotes\degmsmartquotes\degmdumbquotes\smartquotes\dumbquotes\dumbquotes\frsmartquotes}
\renewcommand{\texttt}[1]{{\ttfamily\addfontfeature{RawFeature={+qtbye,-tlig}} #1}}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Deutsch (Schweiz)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\luaexec{function dechdoublequotes ( s )
+ return ( s:gsub ( '"(..-)"' , "«\%1»" ) )
+ end}
+
+
+\luaexec{function dechsinglequotelinestart ( s )
+ return (s:gsub ("^'","'" ) )
+ end}
+\luaexec{function dechsinglequotesclose( s )
+return ( s:gsub ( " '(..-)'", " ‹\%1›" ) )
+ end}
+%% Two utility macros to activate/deactivate the Lua function:
+\newcommand\dechdoublequoteson{\directlua{luatexbase.add_to_callback (
+ "process_input_buffer" ,dechdoublequotes , "dechdoublequotes" )}}
+\newcommand\dechdoublequotesoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "dechdoublequotes" )}}
+\newcommand\dechsinglequotelinestarton{\directlua{luatexbase.add_to_callback (
+ "process_input_buffer" ,dechsinglequotelinestart , "dechsinglequotelinestart" )}}
+\newcommand\dechsinglequotelinestartoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "dechsinglequotelinestart" )}}
+ \newcommand\dechsinglequotescloseon{\directlua{luatexbase.add_to_callback (
+ "process_input_buffer" ,dechsinglequotesclose , "dechsinglequotesclose" )}}
+\newcommand\dechsinglequotescloseoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "dechsinglequotesclose" )}}
+ \newcommand{\dechsmartquotes}{\dechdoublequoteson
+ \dechsinglequotespon
+ \dechsinglequotespcloseon
+\dechsinglequotelinestarton
+\dechsinglequotescloseon}
+ \newcommand{\dechdumbquotes}{\dechdoublequotesoff
+ \dechsinglequotespoff
+ \dechsinglequotespcloseoff
+\dechsinglequotelinestartoff
+\dechsinglequotescloseoff}
+ \DeclareOption{dech}{
+\AtBeginDocument{\desmartquotes\dedumbquotes\degmsmartquotes\degmdumbquotes\smartquotes\dumbquotes\dumbquotes\frsmartquotes\frdumbquotes\dechsmartquotes}
+\renewcommand{\texttt}[1]{{\ttfamily\addfontfeature{RawFeature={+qtbye,-tlig}} #1}}
+
+
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Default option is English
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -766,8 +853,14 @@ return ( s:gsub ( " '(..-)'", " ‹\\,\%1\\,›" ) )
+
+
\end{minted}
\section{Version History}
+\subsection*{\normalfont\texttt{1.4.0}}
+\ttfamily Added support for Swiss German options, on user request
+
+
\subsection*{\normalfont\texttt{1.3.0}}
\ttfamily 15 January 2023 fixed single quotes and parentheses
diff --git a/macros/luatex/latex/luaquotes/luaquotes.sty b/macros/luatex/latex/luaquotes/luaquotes.sty
index 7b93a4f9c0..c2033499ee 100644
--- a/macros/luatex/latex/luaquotes/luaquotes.sty
+++ b/macros/luatex/latex/luaquotes/luaquotes.sty
@@ -1,6 +1,6 @@
-\def\luaquotesversionnumber{1.3.0}
+\def\luaquotesversionnumber{1.4.0}
\ProvidesPackage{luaquotes}
- [2023/15/15\luaquotesversionnumber smart quotes with lua]
+ [2023/01/25\luaquotesversionnumber smart quotes with lua]
% !TeX program = lualatex
% !TeX encoding = utf8
% This work may be distributed and/or modified under the
@@ -182,6 +182,33 @@ luatexbase.add_to_callback (
\newcommand\frsinglequotespcloseoff{\directlua{luatexbase.remove_from_callback (
"process_input_buffer" , "frpsinglequotesclose" )}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% DECH Parentheses
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\sglmtlpdech}{{\addfontfeature{RawFeature={-qtbye,-tlig}}‹}}
+\newcommand{\sglmtrpdech}{{\addfontfeature{RawFeature={-qtbye,-tlig}}›}}
+
+\luaexec{function dechpsinglequotes ( s )
+ return ( s:gsub ( "\%('",[[(\sglmtlpdech]]) )
+ end}
+\luaexec{function dechpsinglequotesclose ( s )
+ return ( s:gsub ( "'\%)",[[\sglmtrpdech)]]) )
+ end}
+
+\newcommand\dechsinglequotespon{\directlua{
+luatexbase.add_to_callback (
+ "process_input_buffer" , dechpsinglequotes , "dechpsinglequotes" )
+ }}
+\newcommand\dechsinglequotespoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "dechpsinglequotes" )}}
+\newcommand\dechsinglequotespcloseon{\directlua{
+luatexbase.add_to_callback (
+ "process_input_buffer" , dechpsinglequotesclose , "dechpsinglequotesclose" )
+ }}
+\newcommand\dechsinglequotespcloseoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "dechpsinglequotesclose" )}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -237,7 +264,7 @@ luatexbase.add_to_callback (
}
\DeclareOption{en}{
-\AtBeginDocument{\frsmartquotes\frdumbquotes\desmartquotes\dedumbquotes\degmsmartquotes\degmdumbquotes\smartquotes}
+\AtBeginDocument{\dechsmartquotes\dechdumbquotes\frsmartquotes\frdumbquotes\desmartquotes\dedumbquotes\degmsmartquotes\degmdumbquotes\smartquotes}
\renewcommand{\texttt}[1]{{\ttfamily\addfontfeature{RawFeature={+qtbye,-tlig}} #1}}
}
@@ -360,6 +387,7 @@ return ( s:gsub ( " '(..-)'", " ‚\%1`" ) )
}
\DeclareOption{de}{
\AtBeginDocument{
+\dechsmartquotes\dechdumbquotes
\frsmartquotes
\frdumbquotes
\smartquotes
@@ -404,6 +432,7 @@ return ( s:gsub ( " '(..-)'", " ‚\%1‹" ) )
\degmsinglequotescloseoff}
\DeclareOption{degm}{
\AtBeginDocument{
+\dechsmartquotes\dechdumbquotes
\frsmartquotes
\frdumbquotes
\smartquotes
@@ -453,13 +482,60 @@ return ( s:gsub ( " '(..-)'", " ‹\\,\%1\\,›" ) )
\frsinglequotelinestartoff
\frsinglequotescloseoff}
\DeclareOption{fr}{
-\AtBeginDocument{\desmartquotes\dedumbquotes\degmsmartquotes\degmdumbquotes\smartquotes\dumbquotes\dumbquotes\frsmartquotes}
+\AtBeginDocument{\dechsmartquotes\dechdumbquotes\desmartquotes\dedumbquotes\degmsmartquotes\degmdumbquotes\smartquotes\dumbquotes\dumbquotes\frsmartquotes}
\renewcommand{\texttt}[1]{{\ttfamily\addfontfeature{RawFeature={+qtbye,-tlig}} #1}}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Deutsch (Schweiz)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\luaexec{function dechdoublequotes ( s )
+ return ( s:gsub ( '"(..-)"' , "«\%1»" ) )
+ end}
+
+
+\luaexec{function dechsinglequotelinestart ( s )
+ return (s:gsub ("^'","'" ) )
+ end}
+\luaexec{function dechsinglequotesclose( s )
+return ( s:gsub ( " '(..-)'", " ‹\%1›" ) )
+ end}
+%% Two utility macros to activate/deactivate the Lua function:
+\newcommand\dechdoublequoteson{\directlua{luatexbase.add_to_callback (
+ "process_input_buffer" ,dechdoublequotes , "dechdoublequotes" )}}
+\newcommand\dechdoublequotesoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "dechdoublequotes" )}}
+\newcommand\dechsinglequotelinestarton{\directlua{luatexbase.add_to_callback (
+ "process_input_buffer" ,dechsinglequotelinestart , "dechsinglequotelinestart" )}}
+\newcommand\dechsinglequotelinestartoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "dechsinglequotelinestart" )}}
+ \newcommand\dechsinglequotescloseon{\directlua{luatexbase.add_to_callback (
+ "process_input_buffer" ,dechsinglequotesclose , "dechsinglequotesclose" )}}
+\newcommand\dechsinglequotescloseoff{\directlua{luatexbase.remove_from_callback (
+ "process_input_buffer" , "dechsinglequotesclose" )}}
+ \newcommand{\dechsmartquotes}{\dechdoublequoteson
+ \dechsinglequotespon
+ \dechsinglequotespcloseon
+\dechsinglequotelinestarton
+\dechsinglequotescloseon}
+ \newcommand{\dechdumbquotes}{\dechdoublequotesoff
+ \dechsinglequotespoff
+ \dechsinglequotespcloseoff
+\dechsinglequotelinestartoff
+\dechsinglequotescloseoff}
+ \DeclareOption{dech}{
+\AtBeginDocument{\desmartquotes\dedumbquotes\degmsmartquotes\degmdumbquotes\smartquotes\dumbquotes\dumbquotes\frsmartquotes\frdumbquotes\dechsmartquotes}
+\renewcommand{\texttt}[1]{{\ttfamily\addfontfeature{RawFeature={+qtbye,-tlig}} #1}}
+
+
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Default option is English
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%