%% $Id: hvqrurl.tex 1118 2019-11-29 07:56:18Z herbert $
\listfiles
\errorcontextlines=100
\documentclass[twoside,usegeometry]{scrartcl}
\usepackage{libertinus-otf}
\setmonofont[Scale=MatchLowercase,FakeStretch=0.9]{DejaVu Sans Mono}
\usepackage{microtype}
\usepackage[english]{babel}
\usepackage[automark]{scrlayer-scrpage}
\pagestyle{scrheadings}

\usepackage[showframe=false]{geometry}
\usepackage{listings}
%
\lstset{%
    language=[LaTeX]TeX,%
    showstringspaces=false,%
    tabsize=5,%
    frame=single,%
%    lineskip=-1pt,%
    extendedchars=true,%
    basicstyle={\small\ttfamily},%
%    numbers=left,%
%    stepnumber=1,%
%    numberstyle=\tiny,%
%    xleftmargin=2em,%
    breaklines=true}
%

\usepackage{ragged2e}
\usepackage{hvqrurl}
\usepackage{xindex}

\usepackage{hvdoctools}

\usepackage{hyperref}
\hypersetup{urlcolor=blue, linktocpage, colorlinks=true}%

\begin{document}
\title{Package \texttt{hvqrurl}\\Creating a QR-code of an URL in the margin \\ver 0.01}
\author{Herbert Voß\thanks{\protect\url{hvoss@tug.org}}}
\date{\today}
\maketitle


\begin{abstract}
This package allows to draw an URL as a QR code into the margin of a one- or twosided
document. The following packages are loaded by default:
\LPack{qrcode}, \LPack{marginnote}, \LPack{url}, \LPack{xcolor},
and 
\LPack{xkeyval}.
\end{abstract}


\section{The macro}


\begin{BDef}
\Lcs{hvqrset}\Largb{key=value list}\\
\Lcs{hvqrurl}\Largb{key=value list}\Largb{URL}\\
\Lcs{hvqrurl*}\Largb{key=value list}\Largb{URL}
\end{BDef}

With the default macro \Lcs{hvqrurl} the URL is printed as as QR code into the margin and
in the the text as usual with the macro \Lcs{url}, for example \hvqrurl{https://mirror.ctan.org/pkg/hvqrurl}.
With \LPack{hyperref} you'll get the the same color for the QR code as for  the URL link and, of course,
is also a link. This example shows the default setting for a QR code.


\section{Optional arguments}

\subsection{No link with \LPack{hyperref}}

\begin{lstlisting}
With \Lkeyset{qrlink=nolink} the QR code is no link: \hvqrurl[qrlink=nolink]{https://mirror.ctan.org/pkg/hvqrurl}.
The default setting is \Lkeyset{qrlink=link}.
\end{lstlisting}

With \Lkeyset{qrlink=nolink} the QR code is no link: \hvqrurl[qrlink=nolink]{https://mirror.ctan.org/pkg/hvqrurl}.
The default setting is \Lkeyset{qrlink=link}. Without using \LPack{hyperref} this optional argument
has no meaning.

\subsection{Color of the QR code}
Without using \LPack{hyperref} the default color is \Lkeyval{black}. It can be changed by
the optional argument \Lkeyword{qrcolor}. The package \LPack{xcolor}\hvqrurl*[qrlink=nolink,qrcolor=red!40!white]{http://mirror.ctan.org/pkg/xcolor}
 is loaded by default, 
the reason why an extended color definition is possible. For this example we used

\begin{lstlisting}
The package \LPack{xcolor}\hvqrurl*[qrcolor=red!40!white]{http://mirror.ctan.org/pkg/xcolor}
 is loaded by default, ...
\end{lstlisting}

\subsection{Vertical position of the QR code}
By default the baseline of the QR code is nearly at the same height as the baseline of the textline.
However, when changing the size of the QR code it may be nessesary to move up or down the QR code.
The default value of \Lkeyword{qradjust} is \verb|-1.5\normalbaselineskip|. Setting the value
to 0pt the QR code \hvqrurl*[qrlink=nolink,qradjust=0pt]{http://ctan.org/} is moved down which is the default
setting without a vertical adjustment.

\begin{lstlisting}
The default value of \Lkeyword{qradjust} is \verb|-1.5\normalbaselineskip|. Setting the value
to 0pt the QR code \hvqrurl*[qradjust=0pt]{http://ctan.org/} is moved down which is the default
setting without a vertical adjustment.
\end{lstlisting}


\subsection{Size of the QR code}
By default the QR code is a square with height and width of 1cm.
it can be changed by setting \Lkeyword{qrheight} to another value, for example to 2cm:
\hvqrurl*[qrlink=nolink,qrheight=2cm]{https://identity.fu-berlin.de/idp-fub/profile/SAML2/Redirect/SSO;jsessionid=71C984647E3B8F2E716CA067CB13387E?execution=e1s1}
This is an exetremely long url where it may make sense to use a larger QR code.

\begin{lstlisting}
it can be changed by setting \Lkeyword{qrheight} to another value, for example to 2cm:
\hvqrurl*[qrheight=2cm]{https://identity.fu-berlin.de/idp-fub/profile/SAML2/Redirect/SSO;jsessionid=71C984647E3B8F2E716CA067CB13387E?execution=e1s1}
This is an exetremely long url where it may make sense to use a larger QR code.
\end{lstlisting}


\subsection{QR code level}
The QR code specification includes four levels of encoding: 
Low (L) (\hvqrurl[qrlink=nolink]{https://www.tug.org/}), Medium (M), Quality (Q), 
and High (H) (\hvqrurl[qrlink=nolink,qradjust=0pt,qrlevel=H]{https://www.tug.org/}), 
in increasing order of error-correction capability. 
In general, for a given text a higher error-correction level requires 
more bits of information in the QR code. 

\begin{lstlisting}
The QR code specification includes four levels of encoding: 
Low (L) (\hvqrurl{https://www.tug.org/}), Medium (M), Quality (Q), 
and High (H) (\hvqrurl[qradjust=0pt,qrlevel=H]{https://www.tug.org/}), 
in increasing order of error-correction capability. 
\end{lstlisting}

The first QR code has the default level \Lkeyval{M} and the last one the
level \Lkeyval{H}. In general the user has not to set this keyword it will be
controlled internally by the package.



\printindex


\section{The Package Source}
\lstinputlisting[basicstyle=\ttfamily\footnotesize,tabsize=3,numbers=left,numberstyle=\tiny]{hvqrurl.sty}


\end{document} 

