URI 前缀列表 (CURIE)

URI 前缀列表 (CURIE)

我正在写一篇文档,其中讨论了多个 URI(内联)。为了不让可读性变得太混乱,我想定义并使用居里s 代替(这在语义网社区)。因此,与其谈论http://dbpedia.org/resource/Dog我想谈谈dbr:狗

目前我的序言中有一些这样的代码:

\newcommand{\curiesize}{\small}
\newcommand{\defcurie}[2]{%
  \expandafter\newcommand\csname#1\endcsname[1]{{\curiesize \href{#2##1}{\nolinkurl{#1:##1}}}}%
}
\defcurie{rdf}{http://www.w3.org/1999/02/22-rdf-syntax-ns\#}
\defcurie{rdfs}{http://www.w3.org/2000/01/rdf-schema\#}
\defcurie{owl}{http://www.w3.org/2002/07/owl\#}
\defcurie{dbr}{http://dbpedia.org/resource/}
...
\defcurie{foaf}{http://xmlns.com/foaf/0.1/}

因此,在文档中我可以写一些类似的东西\dbr{Dog}来引用dbr:狗

随着上面的列表越来越长,我想扩展\defcurie元命令来记住 CURIE 前缀,然后在前面或后面的内容中打印类似词汇表的列表。

对于如何做到这一点有什么建议吗?

答案1

经过一番摆弄,我找到了自己解决这个问题的第一种方法,即扩展前言元命令,如下所示:

\newcommand{\usedprefixes}{} % used to store `prefix: & \url{uri} \\` like table rows
\newcommand{\defcurie}[2]{%
  \expandafter\def\expandafter\usedprefixes\expandafter{\usedprefixes\texttt{#1}: & \begin{small}\url{#2}\end{small} \\[1ex] }
  \expandafter\newcommand\csname#1\endcsname[1]{{\curiesize \href{#2##1}{\nolinkurl{#1:##1}}}}%
}

然后在文档的后面做这样的事情:

\chapter*{List of URI Prefixes (CURIEs)}
  \begin{tabular}{@{}ll}
    \usedprefixes
  \end{tabular}

但仍然对更好/更酷的方法感兴趣。

相关内容