6

我有一堆自动生成的 LaTeX 代码,其超目标形式为“functionname_2093840289fad1337”,即附加了哈希的函数名称。我想通过仅引用我知道是唯一的函数名称来引用文档其余部分中的这些函数。我想要一个类似这样的查找函数:

\hyperdyperlink{functionname}

发出

\hyperlink{functionname_2093840289fad1337}{functionname}

请注意,我无法计算散列,但我准备编写一个将每个函数名映射到函数名+散列的表。编写这种函数的最佳方法是什么?

4

2 回答 2

7

这行得通吗?

    \makeatletter
    \newcommand\hashlink[2]{%
      \@namedef{hashlink-#1}{#2}%
    }
    \newcommand\hyperdyperlink[1]{%
      \超链接
        {#1_\@nameuse{hashlink-#1}}
        {#1}%
    }
    \hashlink{函数名}{2093840289fad1337}
    \hyperdyperlink{函数名}
    \makeatother

(未经测试。)


稍后:要根据您是否定义了链接目标来分支代码,您可以编写类似

    \newcommand\hyperdyperlink[1]{%
      \@ifundefined{hashlink-#1}{%
        【你还想做什么】
      }{%
        \hyperlink{#1_\@nameuse{hashlink-#1}}{#1}%
      }%
    }

更新:哎呀;第一次发布时这很糟糕,抱歉。现在已经修复了,我希望。)

于 2009-06-08T13:04:33.003 回答
5

由于函数名称是唯一的,您能否在不附加哈希的情况下定义超链接目标?

或者,您可以为每个函数创建一个新的 LaTeX 宏。生成 LaTeX 代码的代码可以通过输出如下代码来做到这一点:

\newcommand{\linkFoo}{\hyperlink{foo_2093840289fad1337}{foo}}
\newcommand{\linkBar}{\hyperlink{bar_4323812312asf1342}{bar}}

然后\linkFoo在你的手写部分使用和朋友。

如果你真的想要的话,你也可以用 TeX 宏实现一个正确的查找表——参见这个线程的例子——但是这个解决方案非常容易理解(恕我直言)。

于 2009-06-08T09:31:35.943 回答