如果我在 \hyperref 指令中不使用 * ,會出現什麼問題?

如果我在 \hyperref 指令中不使用 * ,會出現什麼問題?

wikibooks 上的 Latex 手冊說你應該使用\hyperref以下指令:

We use \hyperref[mainlemma]{lemma \ref*{mainlemma} }.

其中“mainlemma”是標籤名稱。然後它說:

請注意* 後面的內容\ref以避免嵌套超連結。

我在我的文檔中實現了這一行,一次有,一次沒有*,我沒有註意到任何區別。

那麼不使用可能會有什麼危害呢*

答案1

關鍵問題是,如果不使用加星號的版本,文件最終會出現嵌套的超連結。由於 PDF 檢視器沒有一致的方式來處理嵌套超鏈接,這可能會導致意外結果。

為了說明這一點,請考慮 MWE:

\documentclass{article}

\usepackage{hyperref}

\begin{document}

\section{Sample}
\label{sample}

\section{Another Sample}

\hyperref[sample]{section~\ref{sample}}

\end{document}

okular此顯示為:

兩個超連結均已加框

使用hidelinksorcolorlinks似乎可以解決這個問題:

\documentclass{article}

\usepackage[colorlinks]{hyperref}

\begin{document}

\section{Sample}
\label{sample}

\section{Another Sample}

\hyperref[sample]{section~\ref{sample}}

\end{document}

okular這看起來像:

連結顏色為紅色

但是,如果我更改okular的輔助功能設置,使連結成為邊框,則它會顯示為

連結文字為紅色 兩個連結皆已加框

由於內部連結和外部連結都指向相同的位置,因此實際的超連結okular會將您發送到相同的位置,但這可能會讓其他 PDF 檢視者感到困惑。如果內部連結指向與外部連結不同的位置,那麼就會更加混亂。當\ref在最終出現在目錄中的分段命令中使用時,可能會發生這種情況。

例如:

\documentclass{article}

\usepackage[colorlinks]{hyperref}

\begin{document}

\tableofcontents

\section{Sample}
\label{sample}

\section{Another Sample Following on from section \ref{sample}}

\end{document}

帶有目錄的文檔圖像

現在,目錄有一個嵌套鏈接,但該鏈接將您帶到哪裡取決於 PDF 檢視器以及您是使用 PDF 還是 DVI 格式來產生文件。如果我編譯pdflatex,然後查看文檔,okular如果我單擊內部鏈接,我會被發送到第 2 部分,但如果我查看內部鏈接中的文檔,則會evincelatex我發送到第 1 部分。文檔,則相反發生。dvipsps2pdf

相關內容