# [Xy-pic] Really weird behavior

Daniel Müllner daniel at danifold.net
Tue Dec 10 20:08:02 CET 2013

Hi Michael,

here is an even more minimalistic example that shows what's going on:

\documentclass{article}
\pdfoutput1
\usepackage{color}
\usepackage{xy}

\begin{document}
\xy
%\relax
{\color{red}Test}
\endxy
Test
\end{document}

With the \relax, Xy-pic treats the curly brackets as a <decor>ation
(ibid., Figure 4). The curly brackets are passed through all levels of
Xy-pic parsing; hence the \color{red} has local scope.

Without the \relax, Xy-pic treats the curly brackets as a Xy-pic group
and interprets the content like a nested Xy-pic environment (Xy-pic
reference manual, Figure 1, line 22). The curly brackets are stripped
and are lost as a TeX group; therefore the \color{red} has global scope.

Regards,

Daniel

On 12/10/2013 05:51 PM, Michael Barr wrote:
> If you compile the following file:
>
> \documentclass{article}
> \pdfoutput1
> \usepackage{color}
> \def\red{\color{red}}
> \def\green{\color{green}}
> \usepackage[arrow]{xy}
>
> \begin{document}
> \newcount \xytest
> $$\xy > \xytest0 > {\red\ar@{->}^{\green f}(20,0)} > \endxy$$
>  Test
> \end{document}
>
> you find nothing special about the output.  In particular, the word Test
> is black.  Now comment out the line \xytest0 and see what happens.  On
> my computer the word Test is now red.  How can this totally irrelevant
> assignment make a difference in the behavior?  And how can this color
> assignment, which is inside a group, make a difference outside?
>
> This would appear to have something to do with something in xy-pic since
> the simple test line: {\red Test} Test gives the expected result, the
> first word in red and the second one black.
>
> Michael
>