如何根据链接/URL 切换文档的打印版本和显示版本

如何根据链接/URL 切换文档的打印版本和显示版本

我希望文档的打印版本有写出的链接或 URL,而在线版本有缩写的标签/名称。因此,在开始时设置的开关将在两种选择之间进行选择,例如

    \url{http://tex.stackexchange.com/questions/ask}
    \href{http://tex.stackexchange.com/questions/ask}{Questions}

答案1

它应该很简单:(宏几乎逐字逐句地取自bidi包裹)

\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}

答案2

除了链接之外,您可能还需要设置其他内容以进行屏幕查看或打印,因此您需要某种开关。这通常会放在文档的序言中,如下所示。

我将使用ifthen布尔包,因为人们仍然发现它的语法很有用:

\usepackage{ifthen}
\newboolean{ForPrinting}

然后,将各种参数设置为:

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

您通常需要注意的是边距、链接颜色和 URL 的输入。对于链接,您可以将命令定义为:

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

以下 MWE 说明了该技术和一些典型的设置值:

\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}

相关内容