% \iffalse meta-comment
% (The MIT License)
%
% Copyright (c) 2021-2024 Yegor Bugayenko
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the 'Software'), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
%
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
% \fi

% \CheckSum{0}
%
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}

% \GetFileInfo{href-ul.dtx}
% \DoNotIndex{\endgroup,\begingroup,\let,\else,\fi,\newcommand,\newenvironment}

% \iffalse
%<*driver>
\ProvidesFile{href-ul.dtx}
%</driver>
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{href-ul}
%<*package>
[09.01.20240 0.4.0 Underlined Hyperlinks]
%</package>
%<*driver>
\documentclass{ltxdoc}
\usepackage[tt=false, type1=true]{libertine}
\usepackage{microtype}
\AddToHook{env/verbatim/begin}{\microtypesetup{protrusion=false}}
\usepackage{href-ul}
\usepackage{xcolor}
\usepackage[dtx]{docshots}
\PageIndex
\EnableCrossrefs
\CodelineIndex
\RecordChanges
\begin{document}
	\DocInput{href-ul.dtx}
	\PrintChanges
	\PrintIndex
\end{document}
%</driver>
% \fi

% \title{|href-ul|: \LaTeX{} Package \\ That Makes Underscored Links\thanks{The sources are in GitHub at \href{https://github.com/yegor256/href-ul}{yegor256/href-ul}}}
% \author{Yegor Bugayenko \\ \texttt{yegor256@gmail.com}}
% \date{\filedate, \fileversion}
%
% \maketitle
%
% \section{Introduction}
%
% This package helps you make your hyperlinks underlined, using |\href| command:
%
% \begin{docshot}
% \documentclass{article}
% \pagestyle{empty}
% \usepackage{href-ul}
% \begin{document}
% Go to
%   \href{https://google.com}{Google}!
% \end{document}
% \end{docshot}

% Changing the color of the text also changes the color of the line:
% \begin{docshot}
% \documentclass{article}
% \pagestyle{empty}
% \usepackage{href-ul}
% \usepackage{xcolor}
% \begin{document}
% Go to {\color{red}
%   \href{https://google.com}{Google}}!
% \end{document}
% \end{docshot}

% Changing the size of the text doesn't change the height of the line:
% \begin{docshot}
% \documentclass{article}
% \pagestyle{empty}
% \usepackage{href-ul}
% \begin{document}
% You can always find \\ anything in
% {\Large \href{https://google.com}{Google}},
% but \\ it's better to learn
% something \\ from a school too!
% \end{document}
% \end{docshot}

% With the help of the |plain| package option, it's possible to avoid underscores:
% \docshotOptions{firstline=3,lastline=7}
% \begin{docshot}
% \documentclass{article}
% \pagestyle{empty}
% \usepackage[plain]{href-ul}
% \begin{document}
% This link has no underscore: \\
% \href{https://google.com}{Google}.
% \end{document}
% \end{docshot}

% \StopEventually{}

% \section{Implementation}
% \changes{v0.2.0}{2021/06/11}{Initial version}
% \changes{v0.3.0}{2022/10/31}{We started using "docshots" package for better rendering of examples.}

% First, we process package options:
% \changes{0.4.0}{2024/01/09}{Package options processing introduced with a single \texttt{plain} option.}
%    \begin{macrocode}
\RequirePackage{pgfopts}
\pgfkeys{
  /href/.cd,
  plain/.store in=\href@plain
}
\ProcessPgfPackageOptions{/href}
%    \end{macrocode}

% Then, we include the |ulem| package in order to enable underscores:
%    \begin{macrocode}
\makeatletter
\ifdefined\href@plain\else
\PassOptionsToPackage{normalem}{ulem}
\RequirePackage{ulem}
\fi
\makeatother
%    \end{macrocode}

% Then, we include the |hyperref| package for PDF hyperlinks:
%    \begin{macrocode}
\PassOptionsToPackage{hidelinks}{hyperref}
\RequirePackage{hyperref}
%    \end{macrocode}

% \begin{macro}{\href}
% Then, we define the |\href| command:
%    \begin{macrocode}
\makeatletter%
\begingroup%
\catcode`\$=6 %
\catcode`\#=12 %
\gdef\href@split$1#$2#$3\\$4{%
  \hyper@@link{$1}{$2}{%
  	\ifdefined\href@plain$4\else\uline{$4}\fi}%
  \endgroup%
}%
\endgroup%
\makeatother%
%    \end{macrocode}
% \end{macro}

% \Finale

%\clearpage
%
%\PrintChanges
%\clearpage
%\PrintIndex
