[Tex/LaTex] Url with fragments in bold

boldtext-decorationsurls

I need to write document containing a lot of URLs but some fragments of these URLs have to be in bold. How can I accomplished this? For urls I use \nolinkurl but I can't use \bf in it.

Best Answer

You can select the font used for URL using \urlstyle. However bold font isn't supported out-of-the-box. You need to patch the required style definitions as shown below. You need to use a font which supports a bold+text-typer style (expect you want to have the URLs in normal Roman style).

You need to mark the parts of the URL which is different with a different macro. You can define these macros using \DefineUrlCommand from the url package. Note that \url is defined by the url package which is loaded by hyperref which then redefines this macro to an hyperlinked version and provides \nolinkurl as replacement.

Update: I added underline style as now requested. This can be done with the help of the ulem package. I also added other fancy URL styles.

Update 2: Simplified code. Added color example.

\documentclass{article}

\usepackage{hyperref}
%% works with `url` only as well:
%\usepackage{url}

% Use a font which gives you bold text-typer:
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\DeclareUrlCommand{\tturl}{\urlstyle{tt}}
\DeclareUrlCommand{\bftturl}{\def\UrlFont{\bfseries}}
\DeclareUrlCommand{\bfurl}{\def\UrlFont{\bfseries\ttfamily}}

% Colors:
\usepackage{xcolor}
\DeclareUrlCommand{\redurl}{\def\UrlFont{\ttfamily\color{red}}}

% More fancy URL styles:
\usepackage[normalem]{ulem}

\makeatletter
\newcommand*\DeclareFancyUrlCommand[2]{%
    \expandafter\DeclareFancy@UrlCommand
    \expandafter{\csname fancyurl@\expandafter\@gobble\string#2\endcsname}{#1}{#2}%
}
\def\DeclareFancy@UrlCommand#1#2#3{%
    \let#1\empty % must not be \relax
    \useunder{#3}{#1}{}%
    \DeclareUrlCommand{#2}{\def\UrlFont{\ttfamily#1}}%
}
\makeatother

\DeclareFancyUrlCommand{\ulurl}{\uline}
\DeclareFancyUrlCommand{\uulurl}{\uuline}
\DeclareFancyUrlCommand{\uwurl}{\uwave}
\DeclareFancyUrlCommand{\sourl}{\sout}
\DeclareFancyUrlCommand{\xourl}{\xout}
\DeclareFancyUrlCommand{\daurl}{\dashuline}
\DeclareFancyUrlCommand{\dourl}{\dotuline}

\begin{document}

\par\bfurl{http://www.example.com/allbold-onlybold}
\par\bftturl{http://www.example.com/allbold-intexttyper}
\par\tturl{http://www.example.com/}\bftturl{onlythisisbold}
\par\tturl{http://www.example.com/}\ulurl{special$_%part}\tturl{/normal/%$^_/again}
\par\tturl{http://www.example.com/}\uulurl{special$_%part}\tturl{/normal/%$^_/again}
\par\tturl{http://www.example.com/}\uwurl{special$_%part}\tturl{/normal/%$^_/again}
\par\tturl{http://www.example.com/}\sourl{special$_%part}\tturl{/normal/%$^_/again}
\par\tturl{http://www.example.com/}\xourl{special$_%part}\tturl{/normal/%$^_/again}
\par\tturl{http://www.example.com/}\daurl{special$_%part}\tturl{/normal/%$^_/again}
\par\tturl{http://www.example.com/}\dourl{special$_%part}\tturl{/normal/%$^_/again}
\par\tturl{http://www.example.com/}\redurl{special$_%part}\tturl{/normal/%$^_/again}

\end{document}

Result:

Result