我正在写一篇文档,其中讨论了多个 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}
但仍然对更好/更酷的方法感兴趣。