# [texhax] controlling table locations

Susan Dittmar Susan.Dittmar at gmx.de
Thu May 15 11:54:27 CEST 2014

Thomas Schneider schrieb:
>    \makeatletter
>      \def\fps at table{h}
>    \makeatother
>
> \makeatletter - switches to something about cat codes for reasons
> I don't know.

\makeatletter changes TeX's take on the @ sign. After \makeatletter @ can be
used as part of a macro (command) name. \makeatother changes back to @ being
something other than a letter.

The whole \makeatletter ... \makeatother stuff was introduced to add to the
number of possible macro names (all those that contain @), and to reduce the
risk of a user accidentally redefining some important internal command. This is
most important when using \def, which, as you wrote, can redefine something
without warning the user. So commands meant to be used mainly by the package
programmers often contain the @ sign in their names. In this case, one of those
macros is to be redefined, thus making it necessary to 'circumvent' the
precaution of not allowing @ in a macro outside of style files.

Hope that helps,

Susan