因此,我有几个问题,我将尝试逐步提出:
我想使用标签和单词或短语的引用,而不是通常的章节编号或页面引用。我找到了解决方案这里- Heiko 的解决方案 - 对我来说很管用,所以我可以使用
\LBL[A-01]{some phrase}
当我想打印出“一些短语”时,我使用
\ref{A-01}
效果很好。到目前为止一切顺利,但如果有人有其他想法 - 尤其是考虑到以下内容,我很乐意听取。
然后我希望能够在文件之间使用这个系统。因此,在一个文件中,我有一个所有短语的列表(可能会在某个时候发生变化),在另一个文件中,我只能使用它来
\ref
从另一个文件中获取短语。我发现只需添加\usepackage{xr}
适当的命令,就可以与上面的代码\externaldocument{}
配合使用。\LBL
现在这对我来说太棘手了。我希望“一些短语”实际上是一个 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.pdf
word.2
\ref*{A-02}