环境。MacBook Air 2019,macOS 10.414.6(最新补丁),完整 MacTeX 2021 安装
由于从 MacTeX '20 升级到 '21,使用\rupee
该软件包提供的宏tfrupee
失败如果用于超文本链接。以前,在旧版 MacTeX 中,它在正文或链接中运行良好。MWE:
\documentclass{article}
\usepackage{hyperref}
\usepackage{tfrupee}
\begin{document}
Inline use of \rupee \ symbol.
\href{http://www.example.com/index.html}{test}
%\href{http://www.example.com/\rupee.html}{\rupee}
End text.
\end{document}
第一个文本\rupee
在正文中显示有效,第一个 URL 显示\href
宏正常工作。第二个 URL 失败并出现以下错误:
Illegal parameter number in definition of \Hy@tempa. \href{http://www.example.com/\rupee.html}
Illegal parameter number in definition of \Hy@tempa. ...ttp://www.example.com/\rupee.html}{\rupee}
假设该部分中每次使用都会出现一个错误\href{}
。日志针对上述每项操作都显示了此错误:
! Illegal parameter number in definition of \Hy@tempa. <to be read again> 1 l.13 \href{http://www.example.com/\rupee.html} {\rupee} You meant to type ## instead of #, right? Or maybe a } was forgotten somewhere earlier, and things are all screwed up? I'm going to assume that you meant ##.
我做错了什么?2021 MacTex 是否需要一些额外的设置?
答案1
提示@Ulrike Fischer上面的第二条评论,我尝试使用 ₹ 的 Unicode 数字值,即 %u20B9。如果我使用这个:
\href{https://www.example.com/\%u20B9.html}{\rupee}
它通过了 LaTeX 处理,没有错误,并给出了一个有效的链接。但是,使用我的网络域名(不是 example.com)进行测试时,它₹.html
并没有加载,相反,我看到的
%25u20B9.html
是 404。
采取与我以前不同的策略https://onlineunicodetools.com/url-encode-unicode转换₹
为 UTF-8 编码的†字符串%e2%82%b9
,允许此代码:
\href{https://www.example.com/\%E2\%82\%B9.html}{\rupee}
它可以在 LaTex 中运行,并在浏览器地址栏中加载页面渲染₹.html
。因此,固定的 MWE 为:
\documentclass{article}
\usepackage{hyperref}
\usepackage{tfrupee}
\begin{document}
Inline use of \rupee \ symbol.
\href{http://www.example.com/index.html}{test}
\href{https://www.example.com/\%E2\%82\%B9.html}{\rupee}
% opens URL at 'example.com/₹.html`
End text.
\end{document}
所以,我希望这能帮助其他有类似困境的人。@Ulrike Fischer让 mme 走上正轨。
学习要点,对于像我这样缺乏代码经验的人来说,并非所有的“%代码”都是相同的!
†。至少我认为它是 UTF-8 编码!评论者——如果有错,请随时纠正我,以帮助后来的读者。
答案2
如果您对受保护做出定义\rupee
,那么它就可以起作用。
\documentclass{article}
\usepackage{tfrupee}
\usepackage{hyperref}
\protected\def\rupee{{\usefont{U}{tfrupee}{m}{n}\char124}}
\begin{document}
Inline use of \rupee \ symbol.
\href{http://www.example.com/index.html}{test}
\href{http://www.example.com/\rupee.html}{\rupee}
End text.
\end{document}
当然,这不会产生合法的 URL,并且链接不会指向任何地方。
\documentclass{article}
\usepackage{tfrupee}
\usepackage{hyperref}
\protected\def\rupee{{\usefont{U}{tfrupee}{m}{n}\char124}}
\begingroup\catcode`\%=12
\gdef\urlrupee{%E2%82%B9}
\endgroup
\begin{document}
Inline use of \rupee \ symbol.
\href{http://www.example.com/index.html}{test}
\href{http://www.example.com/\urlrupee.html}{\rupee}
End text.
\end{document}
如果我点击超链接,我的浏览器会转到
说明:印度卢比符号的 Unicode 为 U+20B9,即0xE282B9
UTF-8。
对于该示例来说,保护\rupee
不是必需的,但我还是建议这样做。