代码之家  ›  专栏  ›  技术社区  ›  Laserallan

Latex中的查找表

  •  6
  • Laserallan  · 技术社区  · 17 年前

    我有一堆自动生成的LaTeX代码,其超目标形式为“functionname_2093840289fad1337”,即附加哈希的函数名称。我想通过只引用我知道是唯一的函数名称来引用文档其余部分中的这些函数。我想要一个类似这样的查找函数:

    \hyperdyperlink{functionname}
    

    发射

    \hyperlink{functionname_2093840289fad1337}{functionname}
    

    请注意,我无法计算哈希值,但我准备编写一个表,将每个函数名映射到函数名+哈希值。编写这种函数的最佳方式是什么?

    2 回复  |  直到 15 年前
        1
  •  7
  •   Will Robertson    17 年前

    这行得通吗?

    \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}%
        }%
    }
    

    ( 更新:

        2
  •  5
  •   Martin Geisler    17 年前

    由于函数名是唯一的,您能否在不附加哈希的情况下定义超链接目标?

    或者,您可以为每个函数创建一个新的LaTeX宏。生成LaTeX代码的代码可以通过输出以下代码来实现:

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

    然后使用 \linkFoo

    如果你真的想的话,你也可以用TeX宏实现一个合适的查找表——参见 this thread for an example

    推荐文章