%<+package> [2020/09/06 1.14.0 Cross-referencing]
% \end{meta-comment}
%
-% ^^A\CheckSum{96}
+% \CheckSum{131}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
% We're meant to typeset a reference. The first job is to see whether
% there's an optional argument. If so, grab it; otherwise |\relax| will do.
% \begin{macrocode}
-\def\xref{\@ifnextchar[\xref@{\xref@[\relax]}}
+\DeclareRobustCommand\xref{\@ifnextchar[\xref@{\xref@[\relax]}}
\def\xref@[#1]#2{\xref@@{#1}#2:\q@delim:\q@delim:\q@delim\q@delim}
% \end{macrocode}
% Right; now we abuse \TeX's argument parser to pick apart the reference