====== Comment générer des QR codes? ======

Les [[wpfr>Code_QR|QR codes]] (pour //Quick Response Code//) sont un type de code-barres
en deux dimensions constitué de points noirs disposés dans un carré à fond blanc.
L'agencement de ces points décrit l'information que contient le code.
Ils peuvent être lus par un lecteur de code-barre ou un smartphone.

Le package [[ctanpkg>qrcode]] permet de générer des QR-codes directement depuis LaTeX:

<code latex>
\documentclass{article}
  \usepackage[utf8]{inputenc}
  \usepackage{qrcode}
 
\begin{document}
  \qrcode{Données à coder}
\end{document}
</code>

qui donne:

<latexdoc>
\documentclass{article}
  \usepackage[utf8]{inputenc}
  \usepackage{qrcode}
  \pagestyle{empty}

\begin{document}
  \qrcode{Données à coder}
\end{document}
</latexdoc>

Dans la plupart des cas, c’est une URL que vous voudrez inclure dans le QR code.
Par exemple:

<code latex>
  \qrcode{https://www.latex-fr.net/}
</code>

<latexdoc>
\documentclass{article}
  \usepackage[utf8]{inputenc}
  \usepackage{qrcode}
  \pagestyle{empty}

\begin{document}
  \qrcode{https://www.latex-fr.net/}
\end{document}
</latexdoc>

Note : si vous utilisez [[ctanpkg>hyperref]], ''qrcode'' mettra automatiquement un lien cliquable
vers l'adresse en question, à moins de spécifier l’option ''nolink'' à la commande.

Il est possible de spécifier la hauteur du QR code, avec l’option ''height''
(sachant que les QR codes sont obligatoirement carrés...).


===== Versions des QR codes =====

Vous noterez la différence de résolution entre les deux QR codes précédents. Ceci s’explique
par le fait que la chaîne de caractère à coder dans le second exemple est plus longue que
dans le premier. Les QR codes sont définis suivant différentes tailles de grille, chaque
taille correspondant à une «version» : de 21×21 points (version 1) jusqu’à 177×177 points (version 40).

Ainsi, la version 1 permet de coder au maximum 25 caractères alphanumériques tandis que la version 40
peut en coder 4296.

Le package en question calcule automatiquement la version minimale à utiliser pour chaque chaîne
(ça se voit dans le log de compilation), mais il est possible de forcer cette valeur
(pour augmenter la version, évidemment), par exemple pour un aspect esthétique
(si vous avez deux QR codes côte à côte):

<code latex>
  \qrcode[version=3]{Données à coder}
</code>

<latexdoc>
\documentclass{article}
  \usepackage[utf8]{inputenc}
  \usepackage{qrcode}
  \pagestyle{empty}

\begin{document}
  \qrcode[version=3]{Données à coder}
\end{document}
</latexdoc>

===== Des QR codes plus marrants =====

Le package [[ctanpkg>fancyqr]] permet de jouer sur le motif à l'intérieur du QR code
(forme des points, couleurs...) et d'ajouter une image au centre:

<WRAP column 60ex>
<code latex>
\documentclass{article}
  \usepackage{fontawesome}
  \usepackage{fancyqr}

\begin{document}
\FancyQrLoad{glitch}
\fancyqr[ image=\Large\faStackOverflow, image padding=1,
          gradient=true, gradient angle=135,
          right color=orange, left color=purple
        ]{https://www.latex-fr.net/4_domaines_specialises/commerce/generer_des_qr_codes}
\end{document}
</code>
</WRAP>
<WRAP column 40ex>
<latexdoc>
\documentclass{article}
  \usepackage[utf8]{inputenc}
  \usepackage[width=6cm]{geometry}
  \usepackage{fontawesome}
  \usepackage{fancyqr}
  \pagestyle{empty}

\begin{document}
\FancyQrLoad{glitch}
\fancyqr[ image=\Large\faStackOverflow, image padding=0,
          gradient=true, gradient angle=135,
          right color=orange, left color=purple
        ]{https://www.latex-fr.net/4_domaines_specialises/commerce/generer_des_qr_codes}
\end{document}
</latexdoc>

<note>Ici, l'image choisie vient du package [[ctanpkg>fontawesome]],
mais vous pouvez insérer ce que vous souhaitez.</note>
</WRAP>
<WRAP clear />

Il propose six styles de QR code différents:

<latexdoc>
\documentclass{article}
  \usepackage[utf8]{inputenc}
  \usepackage{fancyqr}
  \pagestyle{empty}

\begin{document}
\begin{tabular}{p{8ex}p{3cm} p{8ex}p{3cm}}
\texttt{flat} &
  \FancyQrLoad{flat}\fancyqr{https://www.latex-fr.net/3_composition/start} &
\texttt{frame} &
  \FancyQrLoad{frame}\fancyqr{https://www.latex-fr.net/3_composition/start} \\
\end{tabular}
\end{document}
</latexdoc>
<WRAP clear />

<latexdoc>
\documentclass{article}
  \usepackage[utf8]{inputenc}
  \usepackage{fancyqr}
  \pagestyle{empty}

\begin{document}
\begin{tabular}{p{8ex}p{3cm} p{8ex}p{3cm}}
\texttt{blobs} &
  \FancyQrLoad{blobs}\fancyqr{https://www.latex-fr.net/3_composition/start} &
\texttt{glitch} &
  \FancyQrLoad{glitch}\fancyqr{https://www.latex-fr.net/3_composition/start} \\
\end{tabular}
\end{document}
</latexdoc>
<WRAP clear />

<latexdoc>
\documentclass{article}
  \usepackage[utf8]{inputenc}
  \usepackage{fancyqr}
  \pagestyle{empty}

\begin{document}
\begin{tabular}{p{8ex}p{3cm} p{8ex}p{3cm}}
\texttt{swift} &
  \FancyQrLoad{swift}\fancyqr{https://www.latex-fr.net/3_composition/start} &
\texttt{dots} &
  \FancyQrLoad{dots}\fancyqr{https://www.latex-fr.net/3_composition/start} \\
\end{tabular}
\end{document}
</latexdoc>


===== Afficher dans la marge le QR-code de chaque URL =====

Le package [[ctanpkg>hvqrurl]] fournit un moyen rapide de faire apparaître
dans la marge le QR-code correspondant à une URL insérée dans le document:

<WRAP column 50ex>
<code latex>
\documentclass{article}
  \usepackage{hvqrurl}
 
\begin{document}
Vous pouvez consulter la FAQ à l'adresse
\hvqrurl{https://www.latex-fr.net/}
et y ajouter vos propres astuces.
\end{document}
</code>
</WRAP>
<WRAP column 40ex>
<latexdoc>
\documentclass{article}
  \usepackage[utf8]{inputenc}
  \usepackage[width=6cm]{geometry}
  \usepackage{hvqrurl}
  \pagestyle{empty}

\begin{document}
Vous pouvez consulter la FAQ à l'adresse \hvqrurl{https://www.latex-fr.net/}
et y ajouter vos propres astuces.
\end{document}
</latexdoc>
</WRAP>
<WRAP clear />

FIXME Nécessite deux compilations pour faire apparaître le QR-code.

===== QR-factures =====

Le package [[ctanpkg>qrbill]] permet de générer les [[wpfr>QR-facture|QR-factures utilisées en Suisse depuis 2020]],
qui incluent un QR-code particulier, avec le dessin d'une croix suisse en leur centre (🇨🇭).
Il s'utilise avec ''lualatex'' ou ''xelatex'' (versions de 2020 et ultérieures),
car il appelle [[ctanpkg>fontspec]]((Sa documentation indique cependant une façon de l'utiliser avec ''pdflatex'', en redéfinissant la commande ''\qrbillfont''.)).

-----
//Sources://
  * [[https://blog.dorian-depriester.fr/latex/generer-des-qr-codes-directement-dans-latex|Générer des QR codes directement dans LaTeX]],
  * [[https://www.paymentstandards.ch/dam/downloads/style-guide-en.pdf|Style Guide QR-bill]].

{{htmlmetatags>metatag-keywords=(LaTeX,code-barre,QR code,URL,smartphone,QR-facture,QR-Rechnung)
metatag-og:title=(Comment générer des QR codes?)
metatag-og:site_name=(FAQ LaTeX francophone)
}}
