Consider the following MWE:
\documentclass{article}
\usepackage{xpunctuate}
\DeclareRobustCommand\eg{e.g\xperiod}
%% Standard Conditions symbol
\providecommand\barcirc{\mathpalette\@barred\circ}%
\def\@barred#1#2{\ooalign{\hfil$#1-$\hfil\cr\hfil$#1#2$\hfil\cr}}%
\newcommand\stst{^{\protect\barcirc}}%
\begin{document}
Maybe a list, \eg, a, b, c, and d.
\end{document}
Which fails to compile with the error message
! Use of \@ doesn't match its definition.
\xprd@Out ->\xprd@Obj .\@\xspace
Why does this happen? It seems that the code which should only create a symbol redefined the \@
command but how?
\makeatletter
if you want to use@
in this way. – Ian Thompson Oct 6 '14 at 11:33\input
statements deep the\stst
command was defined. Is there some way to tell(pdf)latex
to warn me if I'm using\@
commands outside of a\makeat{letter,other}
group? My header file has grown a bit... so I fear there could be more of this hidden somewhere. – elemakil Oct 6 '14 at 11:36@
generally only appear in packages and classes (where@
is allowed by default) and (occasionally) in the preamble (where it isn't, so you have to be careful). – Ian Thompson Oct 6 '14 at 11:41