I have a bunch of automatically generated LaTeX code with hypertargets of the form "functionname_2093840289fad1337", i.e the name of a function with a hash appended. I would like to refer to those functions from the rest of the document by only referring to the function name which I know is unique. I would like a lookup function something like this:
\hyperdyperlink{functionname}
that emits
\hyperlink{functionname_2093840289fad1337}{functionname}
Note that I can't calculate the hash but I'm prepared to write a table that maps each functionname to functionname+hash. What's the best way to write this kind of function?
Does this work?
\makeatletter \newcommand\hashlink[2]{% \@namedef{hashlink-#1}{#2}% } \newcommand\hyperdyperlink[1]{% \hyperlink {#1_\@nameuse{hashlink-#1}} {#1}% } \hashlink{functionname}{2093840289fad1337} \hyperdyperlink{functionname} \makeatother
(Untested.)
Later: To branch the code depending if you've defined the link target, you can write something like
\newcommand\hyperdyperlink[1]{% \@ifundefined{hashlink-#1}{% [whatever else you want to do] }{% \hyperlink{#1_\@nameuse{hashlink-#1}}{#1}% }% }
(Update: oops; that was pretty broken as first posted, sorry. Now fixed, I hope.)
Since the function names are unique, could you not define the hyperlink targets without the hash appended?
Alternatively, you could create a new LaTeX macro for each function. The code that generates the LaTeX code could do this by outputting code like this:
\newcommand{\linkFoo}{\hyperlink{foo_2093840289fad1337}{foo}}
\newcommand{\linkBar}{\hyperlink{bar_4323812312asf1342}{bar}}
Then use \linkFoo
and friends in your hand-written part.
You could also implement a proper lookup table with TeX macros if you really wanted -- see this thread for an example -- but this solution is quite easy and simpler to understand (IMHO).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With