Configuración de referencia de hiperreferencia con xstring

Configuración de referencia de hiperreferencia con xstring

Estoy intentando generar hyperrefenlaces mediante programación, usando xstring. Por ejemplo, en el código siguiente me gustaría \hyperref[reference\FirstNumber{1,2}]{first line}ser equivalente a \hyperref[reference1]{first line}. Estoy confundido porque puedo insertar 1una macro y obtener el resultado adecuado. Cuando pongo mi xstringmacro en lugar de eso, falla. Tengo una vaga sensación de que esto tiene que ver con el momento en que se expanden las macros, pero no puedo ir más allá de eso.

\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} 

Respuesta1

El nombre de la etiqueta debe expandirse a una cadena, pero \FirstNumberno es expandible. Las xstringmacros proporcionan un argumento opcional al final, que toma el resultado, que luego puede usarse dentro del nombre de la etiqueta.

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

información relacionada