我希望文档的打印版本有写出的链接或 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}