使用 \ref 查找文本中的单词 - 跨文件 - 并包括网址

使用 \ref 查找文本中的单词 - 跨文件 - 并包括网址

因此,我有几个问题,我将尝试逐步提出:

  1. 我想使用标签和单词或短语的引用,而不是通常的章节编号或页面引用。我找到了解决方案这里- Heiko 的解决方案 - 对我来说很管用,所以我可以使用

    \LBL[A-01]{some phrase}
    

    当我想打印出“一些短语”时,我使用

    \ref{A-01}
    

    效果很好。到目前为止一切顺利,但如果有人有其他想法 - 尤其是考虑到以下内容,我很乐意听取。

  2. 然后我希望能够在文件之间使用这个系统。因此,在一个文件中,我有一个所有短语的列表(可能会在某个时候发生变化),在另一个文件中,我只能使用它来\ref从另一个文件中获取短语。我发现只需添加 \usepackage{xr}适当的命令,就可以与上面的代码\externaldocument{}配合使用。\LBL

  3. 现在这对我来说太棘手了。我希望“一些短语”实际上是一个 url 或 href。因此,为了首先获取 url,我添加了包hyperref,然后似乎xr包变得很奇怪,这可以通过使用来修复xr-hyper。因此,我希望“一些短语”是来自其他文件的 href 的描述,并且我希望单击它会将我带到 url,而不是其他 pdf。

也许这个解释太复杂了,所以我在下面给出了一个最小的工作示例 - 你必须将它们命名为 file1.tex 和 file2.tex:

文件1.tex

\documentclass[12pt]{article}

\usepackage{xr-hyper}
\usepackage{hyperref}
\externaldocument{file2}

\newcounter{word}
\makeatletter
\newcommand*{\LBL}{%
  \@dblarg\@LBL
}
\def\@LBL[#1]#2{%
  \begingroup
    \renewcommand*{\theword}{#2}%
    \refstepcounter{word}%
    \label{#1}%
    #2%
  \endgroup
}
\makeatother

\begin{document}

\ref{A-01}

\ref{A-02}
\end{document}

文件2.tex:

\documentclass[12pt]{article}

\usepackage{xr-hyper}
\usepackage{hyperref}
\externaldocument{file1}

\newcounter{word}
\makeatletter
\newcommand*{\LBL}{%
  \@dblarg\@LBL
}
\def\@LBL[#1]#2{%
  \begingroup
    \renewcommand*{\theword}{#2}%
    \refstepcounter{word}%
    \label{#1}%
    #2%
  \endgroup
}
\makeatother

\begin{document}

\LBL[A-01]{some phrase}

\LBL[A-02]{\href{https://tex.stackexchange.com/}{Best website ever}}

\end{document}

现在发生的事情是,file1.pdf 中的两行都是指向 file2.pdf 的超链接。但我希望第一行根本不是可点击的链接,只是普通文本,第二行是 url 超链接。我希望这有意义。我应该怎么做呢?

答案1

该软件包使用星号形式扩展了(and , ...)hyperref的语法,从而创建了没有超链接的引用:\ref\pageref

\ref*{A-01}

在第二种情况下,参考数据包含完整的\href表达式,来自file2.aux

\newlabel{A-02}{{\href  {http://tex.stackexchange.com/}{Best website ever}}{1}{}{word.2}{}}

这样,在 URL 链接顶部生成一个带有目的地的\ref{A-02}链接。星号形式也有助于摆脱顶部链接:file2.pdfword.2

\ref*{A-02}

相关内容