\href
这是一个最简单的示例,当 URL 带有波浪符号时,Docstrip 将额外的宏位放入脚注内的调用中:
% \iffalse
\documentclass[a4paper]{ltxdoc}
\usepackage{hyperref}
\begin{document}
\DocInput{foo.dtx}
\end{document}
% \fi
% \title{The foo package\thanks{This document corresponds to
% foo version, dated date.}}
%
% \author{The Author\thanks{Author's website with bad link:
% \href{http://example.com/~user/} {foo}. Working link:
% \href{http://example.com/user}{foo}} }
%
% \maketitle
%
% \section{Introduction}
%
% a link that works: \href{http://example.com/~user}
% {foo}.
在生成的 PDF 中,脚注中 URL 的波浪号包含一些 TeX 宏:
http://example.com/\protect \unhbox \voidb@x \penalty \@M \ {}user/
所以波浪号有问题。我该如何修复它?
答案1
\href
和朋友们必须施展一些魔法才能使特殊字符(如#
或 )~
起作用。只有当命令在任何其他命令之外使用时,此魔法才有效。但该hyperref
包也接受“转义”版本:\#
,\~
等等。它们在任何情况下都有效,并且比 等命令更容易记住\textasciitilde
。
这实际上与无关docstrip
,以下示例表现出相同的行为:
\documentclass{article}
\usepackage{hyperref}
\title{Test}
\author{Me\footnote{\url{http://example.com/~}}}
\begin{document}
\maketitle
\url{http://example.com/~}
\end{document}
答案2
我必须承认我不知道为什么会发生这种情况。但是,用 替换文字波浪号\textasciitilde
可以解决您的问题。
% \author{The Author\thanks{Author's website with bad link:
% \href{http://example.com/\textasciitilde user/}{foo}. Working link:
% \href{http://example.com/user}{foo}} }