I'm trying to create a referenceable "system" environment that basically displays an equation with a custom counter. Then I want to reference the environment with autoref, so as to have "System (S1)" as output when I reference it.




 \dot x=u(x),

However, when I do


I get an error saying that the reference s1 is undefined. What am I missing?


Some remarks:

  • The label has used the name s1, the references system. The label name must match, the example below uses s1.
  • The use equation* indicates that probably package amsmath is used.
  • With amsmath \tag can be used to print the equation number.
  • Redefining \p@system helps to get the parentheses around the number, when it is referenced.
  • I have put \label outside environment equation with the name as option to the environment system to avoid trouble with the redefinition of \label inside environments of amsmath.
  • The star form of \ref avoids the link inside a link in the line with \hyperref.






\hyperref[s1]{System~\ref*{s1}}, \autoref{s1}

 \dot x=u(x),

|improve this answer|||||
  • 1
    Thank you so much! I probably never could have written that from scratch, but I've already learned a lot just from backwards engineering your code. Didn't even know there was a starred version of \newcommand until now. Probably don't even need to mention that it works like a charm. – user1816518 Nov 12 '12 at 23:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for?Browse other questions tagged or ask your own question.