使用 xstring 設定 hyperref 引用

使用 xstring 設定 hyperref 引用

我正在嘗試hyperref使用xstring.例如,在下面的程式碼中我想\hyperref[reference\FirstNumber{1,2}]{first line}相當於\hyperref[reference1]{first line}.我很困惑,因為我可以放入1一個宏,並獲得正確的結果。當我用xstring巨集代替它時,它失敗了。我有一種模糊的感覺,這與擴展宏的時間有關,但我無法比這更進一步。

\documentclass{book}
\usepackage{hyperref,xstring}
\begin{document}
\def\FirstNumber#1{\IfSubStr{#1}{,}{\StrBefore{#1}{,}}{#1}}

The first number is \FirstNumber{1}.\label{reference1}

The first number is \FirstNumber{2,3}.\label{reference2}

\def\NumberOne{1}

\hyperref[reference\NumberOne]{first line}

\hyperref[reference\FirstNumber{1,2}]{first line} % error occurs here
\end{document} 

答案1

標籤名稱必須擴展為字串,但\FirstNumber不可擴展。巨集xstring在末尾提供一個可選參數,該參數會取得結果,然後可以在標籤名稱內使用該結果。

\FirstNumber{1,2}[\MyFirstNumber]%
\hyperref[reference\MyFirstNumber]{first line} % error occurs here

相關內容