链接 JLS 段落的宏

链接 JLS 段落的宏

我正在尝试定义一个宏,该宏会自动链接到 Java 语言规范中的一段。但由于某种原因,它不起作用。

我想使用段落编号调用该命令,例如\pg{6.6},它应该显示为§6.6链接到正确的 JLS 条目(在本例中为此链接http://docs.oracle.com/javase/specs/jls/se8/html/jls-6.html#jls-6.6)。

这是我目前所拥有的:

\newcommand{\pg}[1]{\href{http://docs.oracle.com/javase/specs/jls/se8/html/jls-6.html\# jls-{#1}}{§#1}}

但是此代码导致链接出现问题。它无法正常工作。当我将鼠标悬停在文本上时,它会显示一个链接,但单击不会执行任何操作。

另一个问题是,由于链接中的章节声明,此命令仅适用于第 6 章中的段落。有办法解决这个问题吗?

编辑:这是我当前的解决方案,它基于 Davids 解决方案并使用以下xstring包:

\newcommand{\pg}[1]{%
    \StrLeft{#1}{1}[\firstletter]%
    \href{http://docs.oracle.com/javase/specs/jls/se8/html/jls-\firstletter.html\#jls-#1}{§#1}%
}

它的优点是它可以与 5.3.1.4 这样的段落一起使用,并且不需要多个参数。我可以像这样使用它:\pg{5.3.1.4}

答案1

在此处输入图片描述

\documentclass{article}
\usepackage{hyperref}

\newcommand{\pg}[2]{%
\href{http://docs.oracle.com/javase/specs/jls/se8/html/jls-#1.html\#jls-#1.#2}%
{\textsection#1.#2}}
\begin{document}


zzz\pg{6}{1}

\end{document}

相关内容