编辑:基于列表

编辑:基于列表

当我打印包含以下内容的文档时,\href{url}{title}我得到了title。是否可以同时打印 URL,但在查看文档时不显示 URL。如果可以,该怎么做?

尝试打印这个:

\documentclass{article}
\usepackage{hyperref}
\begin{document}
\href{http://tex.stackexchange.com/questions/178512}{My question on StackExchange}
\end{document}

你会得到 :

My question on StackExchange

当我查看我的文档时,我希望有可点击的链接,但打印我的文档时它应该打印 URL。

答案1

我尝试使用 PDF 的可选内容组来实现这一点,它允许您控制屏幕上和打印时的文本可见性。 注意::OCG 是一项尚未得到普遍支持的功能;此方法最适合(或许也只适合)Adobe Acrobat。

这里的想法是让常规文本通过包含 URL 本身的脚注/边注得到增强。我写这篇文章时假设屏幕版本是“规范”版本,而打印版本可以处理一定程度的不规则性。与此一致,屏幕上的文本“正常”显示,好像没有脚注存在,并且脚注标记放在打印的顶部。(现在,放置额外的脚注/边注会受到影响,就像脚注编号一样。 缺点是,正如许多人在评论中提到的那样,如果不重新排版整个文本,您甚至无法添加像脚注符号这样小的东西,而不会降低排版的质量。 此解决方案会将脚注符号放在文本上方而不会将文本推到一边,但结果可能会干扰周围的文本和/或显得拥挤。

我添加了[hidelinks]选项以hyperref避免在生成下面看到的示例时在 Acrobat 中出现链接框。

结果

荧幕版本:

在屏幕上

打印时:

打印预览

呈现为:

渲染打印

可以很容易地看到脚注标记的布局拥挤。

平均能量损失

\documentclass{article}
\usepackage[hidelinks]{hyperref}
\usepackage[symbol,side,perpage]{footmisc}
\usepackage{etoolbox} % for patch/preto-cmd
\usepackage{ocg-p} % http://www.ctan.org/pkg/ocg-p
\usepackage{blindtext} % for additional demo text

\makeatletter
\footnotemargin-0.4em\relax % adjust footnote in marginpar
\def\setfn#1{\raisebox{0.1em}{\smash{\hbox to 0pt{\hss\hskip .3em #1\hss}}}} % helper to set footnotemark without interruping flow of text
\patchcmd{\@makefnmark}{\hbox}{\setfn}{}{} % use \setfn
\pretocmd{\@makefnmark}{\begin{ocg}[printocg=always]{PrintVersionOnly}{printonly}{0}}{}{} % start ocg layer
\apptocmd{\@makefnmark}{\end{ocg}}{}{} % end ocg layer
\makeatother

% \printurl{<url>}{<text>}
\newcommand{\printurl}[2]{%
\href{#1}{#2}\footnote{\begin{ocg}[printocg=always]{PrintVersionOnly}{printonly}{0}\noindent\url{#1}\end{ocg}}}

\begin{document}
\blindtext
\printurl{http://tex.stackexchange.com/questions/178512}{My question on StackExchange} is really interesting!
\blindtext


\end{document}

编辑:基于列表

要做到这一点,请用 URL 本身替换 URL 标题:

\documentclass{article}
\usepackage[hidelinks]{hyperref}
\usepackage{ocg-p} % http://www.ctan.org/pkg/ocg-p
\usepackage{tikz}

% \urlitem{<url>}{<text>}
\newcommand{\urlitem}[2]{
\item\begin{tikzpicture}[baseline=0]
\tikzstyle{nome}=[anchor=base,outer sep=0,inner sep=0,minimum height=.45cm,minimum width=4.4cm]
\begin{ocg}[printocg=never]{ScreenVersionOnly}{screenonly}{1}\node[nome] (p2) {\parbox[t][][t]{\linewidth}{\href{#1}{#2}}};\end{ocg}
\begin{ocg}[printocg=always]{PrintVersionOnly}{printonly}{0}\node[nome] (p1) {\parbox[t][][t]{\linewidth}{#1}};
\end{ocg}\end{tikzpicture}}

\begin{document}

This is a list:
\begin{enumerate}
\item one
\item two
\urlitem{http://tex.stackexchange.com/questions/178512}{My question on StackExchange}
\item four
\item five
\end{enumerate}

\end{document}

相关内容