xstring을 사용하여 하이퍼참조 참조 설정

xstring을 사용하여 하이퍼참조 참조 설정

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

관련 정보