6

「functionname_2093840289fad1337」という形式のハイパーターゲット、つまりハッシュが追加された関数の名前を持つ、自動生成されたLaTeXコードがたくさんあります。一意であることがわかっている関数名のみを参照して、ドキュメントの残りの部分からこれらの関数を参照したいと思います。次のようなルックアップ関数が必要です。

\hyperdyperlink{functionname}

放出する

\hyperlink{functionname_2093840289fad1337}{functionname}

ハッシュを計算することはできませんが、各関数名を関数名+ハッシュにマップするテーブルを作成する準備ができていることに注意してください。この種の関数を書くための最良の方法は何ですか?

4

2 に答える 2

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 {ハッシュリンク-#1} {%
        [他にやりたいことは何でも]
      } {%
        \ hyperlink {#1 _ \ @ nameuse {hashlink-#1}} {#1}%
      }%
    }

更新:おっと、最初の投稿ではかなり壊れていました。申し訳ありません。修正されました。願っています。)

于 2009-06-08T13:04:33.003 に答える
5

関数名は一意なので、ハッシュを追加せずにハイパーリンクターゲットを定義できませんか?

または、関数ごとに新しいLaTeXマクロを作成することもできます。LaTeXコードを生成するコードは、次のようなコードを出力することでこれを行うことができます。

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

次に\linkFoo、手書きの部分で友達を使用します。

本当に必要な場合は、TeXマクロを使用して適切なルックアップテーブルを実装することもできます(例についてはこのスレッドを参照してください)が、このソリューションは非常に簡単で理解しやすいです(IMHO)。

于 2009-06-08T09:31:35.943 に答える