使用这个出色的hyperref
软件包,我一直在编写 PDF 文件,我对此非常满意,其中包含指向基于 Web 的 URL 的链接,这样在使用 PDF 查看器阅读 PDF 文件时,当读者单击 PDF 文件中的链接时,她的 Web 浏览器就会打开并带她到 PDF 中链接的页面。我有大量这样的文件,我无法花时间以任何耗时的方式重新处理。
但现在我第一次需要发送这些文档的打印版本。显然,将 PDF 打印到纸上会将 PDF 中嵌入的活动超文本(如果在 PDF 查看器中查看)浓缩为纸上的彩色墨水,这会导致链接中嵌入的 URL 在打印版本中不存在。
在编译这样的 PDF 时,是否有任何方法(对我已经制作的文档进行最少的更改)来指示制作这个特定的 PDF(我打算发送到打印机),而不是在 PDF 中制作嵌入链接,而应该制作带有引用注释和参考书目(仅包含打印的 URL)的文档?
这是产生超文本的 TeX 文件的 MWE:
\PassOptionsToPackage{svgnames}{xcolor}
\documentclass[11pt]{article}
\usepackage[margin=2.54cm]{geometry}
\usepackage{tikz}
\usepackage{lipsum,xcolor,graphicx}
\usepackage{booktabs}
\usepackage[latin]{babel}
\usepackage{pullquote}
\usepackage{xcolor}
\usepackage{calc}
\definecolor{my-purple}{RGB}{105,60,94}
\definecolor{my-ltblue}{RGB}{0,92,184}
\colorlet{MyColorA}{my-ltblue}
\colorlet{MyColorB}{my-purple}
\usepackage{fancyhdr}
\usepackage{lastpage}
\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing}
\usepackage{eso-pic}
\usepackage{xfrac}
\usepackage{mhchem}
\usepackage[colorlinks=true,urlbordercolor=green,urlcolor=MyColorA]{hyperref}
\usetikzlibrary{shapes,backgrounds,calc}
\begin{document}
This is a \href{http://en.wikipedia.org}{link to wikipedia}.
This is a \href{http://search.credoreference.com}{link to Credo}.
\end{document}
虽然对于 MWE 来说不是严格必要的,但我保留了其他几个包,因为我在有问题的 PDF 文档中使用它们,并且我想避免使用与这些其他包之一冲突的东西。
我的目标是向我正在使用的包中添加一个选项,或者也许添加一个包,以某种方式神奇地将此文件编译成如下所示的 PDF:
This is a link to wikipedia[1]. This is a link to Credo[2].
References:
[1] http://en.wikipedia.org
[2] http://search.credoreference.com
除非 [1] 引文注释会是上标标记或类似好看的符号。这样,URL 信息(否则在打印时会丢失)就会以一种合理、合理的方式保留下来,以防读者想花时间将 URL 输入浏览器(我知道这不太可能,但至少有这个选项)。
答案1
最简单的解决方案是(重新)定义\href
如下:
\renewcommand\href[2]{#2\footnote{#1}}
这样你的 MWE (使用pullquote.sty
)就会生成:
更完整的版本将兼具两全其美并使用:
\let\realHref=\href
\renewcommand\href[3][\relax]{
\ifx\relax#1\relax\realHref{#1}{#2}%
\else\realHref[#1]{#2}{#3}%
\fi%
\footnote{#2}%
}
这使得\href
始终将链接打印为脚注,同时保持\href
向 pdf 文件添加链接的标准功能。(\ifx
分支是为了处理将可选参数传递给 的情况\href
。)
编辑需要注意的是:如果一页上有很多\href
-link,那么这将产生大量脚注,这可能不是您想要的。例如,我习惯bibtex
在我的参考书目中添加指向 arXiv 和期刊网页的链接,因此如果我使用此功能,那么我会希望关闭此功能以供参考。可以使用以下方法完成此操作:
\let\href=\realHref
这将恢复\href
文档其余部分的标准定义。如果您想要在一个文档中多次打开和关闭此“功能”,请告诉我,我会建议可能的修改。
答案2
该解决方案是一个主张:重新定义\href
对在线找到的特定来源(例如网站或文件)进行引用.pdf
,但是必须将 URL 添加到.bib
文件中。
我使用了biblatex
带有biber
后端的,但这可以改变。
\PassOptionsToPackage{svgnames}{xcolor}
\documentclass[11pt]{article}
\usepackage[margin=2.54cm]{geometry}
\usepackage{tikz}
\usepackage{lipsum,xcolor,graphicx}
\usepackage{booktabs}
\usepackage[latin]{babel}
%\usepackage{pullquote}
\usepackage{xcolor}
\usepackage{calc}
\definecolor{my-purple}{RGB}{105,60,94}
\definecolor{my-ltblue}{RGB}{0,92,184}
\colorlet{MyColorA}{my-ltblue}
\colorlet{MyColorB}{my-purple}
\usepackage{fancyhdr}
\usepackage{lastpage}
\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing}
\usepackage{eso-pic}
\usepackage{xfrac}
\usepackage{mhchem}
\usepackage{etoolbox}%
\usepackage[backend=biber]{biblatex}
\usepackage[colorlinks=true,urlbordercolor=green,urlcolor=MyColorA,backref=true]{hyperref}
\let\standardhref\href%
\renewcommand{\href}[2]{\cite{#2}}%
\usetikzlibrary{shapes,backgrounds,calc}
\addbibresource{onlineref.bib}
\begin{document}
This is a reference to \href{http://en.wikipedia.org}{wikipedia}%
This is a reference to \href{http://search.credoreference.com}{credo}.
\printbibliography
\end{document}
在线参考文献
这是一个非常基本的.bib
来源,仅用于快速设置。
@online{wikipedia,
url={http://en.wikipedia.org}
}
@online{credo,
url={http://search.credoreference.com}
}