乳胶中的查找表

Las*_*lan 6 latex lookup-tables control-structure

我有一堆自动生成的LaTeX代码,其格式为"functionname_2093840289fad1337",即附加了散列的函数的名称.我想通过仅引用我知道的唯一函数名来从文档的其余部分引用这些函数.我想要一个像这样的查找函数:

\hyperdyperlink{functionname}
Run Code Online (Sandbox Code Playgroud)

发出的

\hyperlink{functionname_2093840289fad1337}{functionname}
Run Code Online (Sandbox Code Playgroud)

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

Wil*_*son 7

这有用吗?

    \makeatletter
    \newcommand\hashlink[2]{%
      \@namedef{hashlink-#1}{#2}%
    }
    \newcommand\hyperdyperlink[1]{%
      \hyperlink
        {#1_\@nameuse{hashlink-#1}}
        {#1}%
    }
    \hashlink{functionname}{2093840289fad1337}
    \hyperdyperlink{functionname}
    \makeatother

(未经测试).


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

    \newcommand\hyperdyperlink[1]{%
      \@ifundefined{hashlink-#1}{%
        [whatever else you want to do]
      }{%
        \hyperlink{#1_\@nameuse{hashlink-#1}}{#1}%
      }%
    }

(更新:哎呀;第一次发布的时候很糟糕,对不起.现在我已经修好了.)


Mar*_*ler 5

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

或者,您可以为每个函数创建一个新的LaTeX宏.生成LaTeX代码的代码可以通过输出如下代码来实现:

\newcommand{\linkFoo}{\hyperlink{foo_2093840289fad1337}{foo}}
\newcommand{\linkBar}{\hyperlink{bar_4323812312asf1342}{bar}}
Run Code Online (Sandbox Code Playgroud)

然后\linkFoo在手写部分使用和朋友.

如果你真的想要的话,你也可以使用TeX宏实现一个正确的查找表 - 请看这个帖子的例子 - 但这个解决方案很容易理解(恕我直言).