latexlookup-tablescontrol-structure

Lookup table in Latex


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?


Solution

  • 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.)