Question

I ai un tas de code LaTeX généré automatiquement avec hypertargets de la forme « functionname_2093840289fad1337 », i.e. le nom d'une fonction, avec une table de hachage en annexe. Je voudrais me référer à ces fonctions du reste du document par référence uniquement au nom de la fonction que je connais est unique. Je voudrais une chose fonction de recherche comme ceci:

\hyperdyperlink{functionname}

qui émet

\hyperlink{functionname_2093840289fad1337}{functionname}

Notez que je ne peux pas calculer le hachage, mais je suis prêt à écrire une table qui associe chaque functionname à functionname + hachage. Quelle est la meilleure façon d'écrire ce genre de fonction?

Était-ce utile?

La solution

Est-ce que ce travail?

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

(Untested.)


Plus tard: Pour ramifier le code suivant si vous avez défini la cible du lien, vous pouvez écrire quelque chose comme

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

( Mise à jour:.. oops, qui a été assez cassé comme premier affichage, désolé maintenant fixé, je l'espère)

Autres conseils

Étant donné que les noms de fonction sont uniques, pourriez-vous pas définir les cibles de lien hypertexte sans le hachage en annexe?

Sinon, vous pouvez créer une nouvelle macro LaTeX pour chaque fonction. Le code qui génère le code LaTeX pourrait le faire en produisant du code comme ceci:

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

Utilisez ensuite \linkFoo et amis dans votre partie écrite à la main.

Vous pouvez également mettre en œuvre une table de consultation appropriée avec des macros TeX si vous vouliez vraiment - voir ce fil pour un exemple - mais cette solution est assez facile et plus simple à comprendre (à mon humble avis)

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top