在一个现有线程中展示了如何hyperref
在 URL 后面添加通用的“外部 URL”符号。在另一个线程,最佳答案展示了如何使用 FontAwesome 将各个公司的图标/徽标插入 LaTeX 文档中。
我想将这两个结合起来,如下所示:我想获得与第一个线程相同的结果,除了\href
对于在序言中注册了图标的域名,对于使用该域名的所有调用,通用符号将由该图标替换。
平均能量损失
\documentclass{article}
\usepackage{hyperref}
\usepackage{fontawesome}
% ... the logic that defines \faExternalLink as the default suffix for \href ...
% ... some logic that defines \registerDomain[2] ...
\registerDomain{github.com}{\faGithub}
\registerDomain{twitter.com}{\faTwitterSquare}
\begin{document}
\href{https://twitter.com/elonmusk}{Link to Twitter/X's CEO}
\href{https://docs.github.com/en/get-started}{Link to GitHub's documentation}
\href{https://en.wikipedia.org/wiki/Donald_Knuth}{Link to a miscellaneous webpage}
\end{document}
请注意,最后两个 URL 使用子域名。中间的 URL 仍需使用超级域名的图标。
实现思路
如果域和图标在命令定义中被硬编码,那么使用一个条件语句可能就足够了检查 URL 字符串中是否存在子字符串,尽管这在理论上可能导致虚假匹配(类似于github.com.mywebsite.org
),而这可能需要一个适当的 URL 解析器。
这里,我们需要某种从域到图标名称的全局词典。