![链接 JLS 段落的宏](https://linux22.com/image/351157/%E9%93%BE%E6%8E%A5%20JLS%20%E6%AE%B5%E8%90%BD%E7%9A%84%E5%AE%8F.png)
我正在尝试定义一个宏,该宏会自动链接到 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}