Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I want the print version of a document have links or URLs written out but the online version have the abbreviated tag/name. So the switch, set at the beginning, will choose between two alternatives, e.g.

    \url{http://tex.stackexchange.com/questions/ask}
    \href{http://tex.stackexchange.com/questions/ask}{Questions}
share|improve this question
add comment

2 Answers

up vote 2 down vote accepted

It should be as simple as: (the macro is taken almost verbatim from bidi package)

\documentclass{article}
\newif\ifprint
\usepackage{hyperref}
\makeatletter
\begingroup
  \catcode`\$=6 %
  \catcode`\#=12 %
  \gdef\href@$1{\expandafter\href@split$1##\\}%
  \gdef\href@split$1#$2#$3\\$4{%
    \hyper@@link{$1}{$2}{\ifprint$1\else$4\fi}%
    \endgroup
  }%
\endgroup
\makeatother
\newcommand*\PrintOn{\printtrue}
\begin{document}
\PrintOn
This is \href{http://google.com}{Google}
\end{document}
share|improve this answer
add comment

Besides the links, there might be other things you need to set for screen viewing or printing, so you will need some sort of a switch. This would normally go in the preamble of the document as shown below.

I will use the ifthen package for the boolean as people still find its syntax useful:

\usepackage{ifthen}
\newboolean{ForPrinting}

You then set the various parameters as:

\ifthenelse{\boolean{ForPrinting}}{}{}

What you normally need to take care of, is margins, link colors and the typing of urls. For the links you can define a command as:

\newcommand\link[2][1]{%
  \ifthenelse{\boolean{ForPrinting}}{\url{#1}}
    {\href{#1}{#2}}
}

The following MWE illustrates the technique and some typical values for settings:

\documentclass{article}
\usepackage[latin1]{inputenc}
\usepackage{ifthen}
\newboolean{ForPrinting}

%\setboolean{ForPrinting}{true}

%% Initialize values to ForPrinting=false
\newcommand{\Margins}{hmarginratio=1:1}     % Symmetric margins
\newcommand{\HLinkColor}{blue}              % Hyperlink color
\newcommand{\PDFPageLayout}{SinglePage}
%% Re-set if ForPrinting=true
\ifthenelse{\boolean{ForPrinting}}{%
  \renewcommand{\Margins}{hmarginratio=2:3} % Asymmetric margins
  \renewcommand{\HLinkColor}{black}         % Hyperlink color
  \renewcommand{\PDFPageLayout}{TwoPageRight}
  \usepackage[body={5.25in,8.4in},\Margins]{geometry}

\usepackage[pdftex,
  hyperfootnotes=false,
  pdftitle={Project Name},
  pdfauthor={Your name},
  pdfkeywords={maths,equations},
  pdfstartview=Fit,    % default value
  pdfstartpage=1,      % default value
  pdfpagemode=UseNone, % default value
  bookmarks=true,      % default value
  linktocpage=false,   % default value
  pdfpagelayout=\PDFPageLayout,
  pdfdisplaydoctitle,
  pdfpagelabels=true,
  bookmarksopen=true,
  bookmarksopenlevel=1,
  colorlinks=true,
  linkcolor=\HLinkColor]{hyperref}}
  \newcommand\link[2][1]{%
    \ifthenelse{\boolean{ForPrinting}}{\url{#1}}
    {\href{#1}{#2}}
   }
\begin{document}
\section{One}
  \link[http://tex.stackexchange.com/questions/ask]{Questions}
\section{Two}
\end{document}
share|improve this answer
    
I guess usepackage{hyperef} is to be added to the MWE. –  Maesumi May 30 '12 at 21:10
    
Is the switch to be turned by \setboolean{ForPrinting}{false} ? I get same output in both cases. –  Maesumi May 30 '12 at 21:15
    
@Maesumi The hyperref is added in the MWE above near the linkcolor.You need to setboolean{ForPrinting}{true}, uncomment the line. –  Yiannis Lazarides May 30 '12 at 21:27
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.