我有一堆自动生成的LaTeX代码,其格式为“functionname_2093840289fad1337”,即附加了散列的函数的名称。我想通过仅引用我知道的唯一函数名来从文档的其余部分引用这些函数。我想要一个像这样的查找函数:
\hyperdyperlink{functionname}
发出
\hyperlink{functionname_2093840289fad1337}{functionname}
请注意,我无法计算哈希,但我准备编写一个表,将每个函数名映射到functionname + hash。编写这种函数的最佳方法是什么?
答案 0 :(得分: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}% }% }
(更新:哎呀;第一次发布的内容非常糟糕,抱歉。现在我已经修好了。)
答案 1 :(得分:5)
由于函数名称是唯一的,您是否可以在没有附加哈希值的情况下定义超链接目标?
或者,您可以为每个函数创建一个新的LaTeX宏。生成LaTeX代码的代码可以通过输出如下代码来实现:
\newcommand{\linkFoo}{\hyperlink{foo_2093840289fad1337}{foo}}
\newcommand{\linkBar}{\hyperlink{bar_4323812312asf1342}{bar}}
然后在手写部分使用\linkFoo
和朋友。
如果你真的想要,你也可以使用TeX宏实现一个正确的查找表 - 请参阅this thread for an example - 但这个解决方案非常简单易懂(恕我直言)。