# [texhax] referencing figures, prepend word "Fig"

Toby Cubitt tsc25 at cantab.net
Wed Apr 9 10:27:27 CEST 2008

Philip TAYLOR wrote:
> Better, perhaps,
>
> \makeatletter
> \def\p at figure{Fig.~}
> \def\p at table{Table~}
> \makeatother

Better still(?), use one of the many existing packages that let you do
this. The fancyref package does exactly what you asked for: adds a
string before cross-references (e.g. "Figure") that depends on the label
prefix, i.e. the part before the colon in \label{fig:foobar}. All you
have to do is define the strings and prefixes.

Or you could use the cleveref package, which adds the correct string
irrespective of the label. E.g. if you changed a figure into a table,
"Figure", even though the label uses the wrong prefix. It can do this
because, as Donald Arseneau wrote, LaTeX already knows if it's a figure
or table, or (with a bit of work) equation or theorem or list item etc.
(Disclosure of interest: I'm the author of cleveref.)

HTH,

Toby

> Donald Arseneau wrote:
>
>> You got an answer to this question, but did you know that
>> LaTeX already knows if it is a figure or table, regardless
>> of the tag?   Just use that:
>>
>> \makeatletter
>> \def\p at figure{Fig~}
>> \def\p at table{Table~}
>> \makeatother