Festlegen der Hyperref-Referenz mit xstring

Festlegen der Hyperref-Referenz mit xstring

Ich versuche, hyperrefLinks programmgesteuert zu generieren, indem ich verwende xstring. Im folgenden Code möchte ich beispielsweise \hyperref[reference\FirstNumber{1,2}]{first line}äquivalent zu sein \hyperref[reference1]{first line}. Ich bin verwirrt, weil ich 1ein Makro einfügen kann und das richtige Ergebnis erhalte. Wenn ich xstringstattdessen mein Makro einfüge, schlägt es fehl. Ich habe das vage Gefühl, dass dies damit zu tun hat, wann die Makros erweitert werden, aber weiter komme ich nicht.

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

Antwort1

Der Beschriftungsname muss zu einem String erweitert werden, \FirstNumberist aber nicht erweiterbar. Die xstringMakros stellen am Ende ein optionales Argument bereit, das das Ergebnis übernimmt, das dann im Beschriftungsnamen verwendet werden kann.

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

verwandte Informationen