是否可以定义 URL 前缀并正确地为其提供超链接?
例如:
\defineprefix{dbo}{http://dbpedia.org/ontology/}
\prefixurl{dbo:City}
应具有与以下相同的效果:
\href{http://dbpedia.org/ontology/City}{dbo:City}
编辑:这是导致错误的已接受代码的 MWE:
\documentclass{article}
\usepackage{hyperref}
\makeatletter
\newcommand\defineprefix[2]{%
\def\urlprefixabbrv@#1{#2}}
\newcommand\prefixurl[2]{%
\href{\urlprefixabbrv@#1/#2}{#1:#2}}
\makeatother
\begin{document}
\defineprefix{owl}{http://www.w3.org/2002/07/owl\#}
\defineprefix{xsd}{http://www.w3.org/2001/XMLSchema\#}
\prefixurl{owl}{Class}
\prefixurl{xsd}{string}
\end{document}
答案1
以下应该有效
\documentclass{article}
\usepackage{hyperref}
\makeatletter
\newcommand\defineprefix[2]{%
\expandafter\def\csname urlprefixabbrv@#1\endcsname{#2}}
\newcommand\prefixurl[2]{%
\href{\csname urlprefixabbrv@#1\endcsname/#2}{#1:#2}}
\makeatother
\begin{document}
\defineprefix{dbo}{http://dbpedia.org/ontology/}
\prefixurl{dbo}{City}
\end{document}
您有责任自行跟踪,不要两次定义相同的前缀并互相覆盖。