[Xy-pic] Fw: Xy-pic and Qcircuit

Ross Moore ross.moore at mq.edu.au
Sun Mar 20 20:30:49 CET 2011

Hi Bryan,

Thanks for providing the explicit examples.

On 21/03/2011, at 2:40 AM, Bryan Eastin wrote:

> Hi everyone,
> I've compiled each of the TeX files containing error examples using a fresh Ubuntu 10.10 install, the 2009-10 version of TeXLive, and Xy-pic 2.8.5 (I replaced 2.7 manually).  On this system, everything produces the correct output except the fourth example. 

Yes, when using the xypdf backend.

>  Lots of warnings are generated for all but the second example, however.  I suspect that it is the handling of these warning situations that's causing the problem on some systems.

Not really. Those warnings should not occur.
These result from attempting to do trigonometric calculations
when the hypotenuse has zero length. It just isn't going
to work. 

In the example below, if you change:

>>> \xymatrix @*[o] @*=<0.01em> @R=1.7em @C=1em {

to become 

>>> \xymatrix @*=<0.01em> @R=1.7em @C=1em {

then the warnings do not happen, and the resulting
diagram looks just fine.

Explanation: the  @*[o] causes all objects to become
circular (actually elliptical), so that locating a point 
on the boundary essentially requires trigonometry. 
But when the size of the object is zero, this can result 
in the "division by 0" warnings that you see.

Now your definition of \Qcircuit is:

  \newcommand{\Qcircuit}[1][0em]{\xymatrix @*[o] @*=<#1>}

which is forcing @*[o] but imposing a default cell size of zero.
Hence you can expect to get these kinds of warning, and possibly
actual errors in the output --- as indeed you do get.


   \renewcommand{\Qcircuit}[1][0em]{\xymatrix @*=<#1>}

allows your example to compile just fine.
The output has a small vertical glitch, whose source I've not
yet attempted to trace.  (see attached image)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: texshop_image.jpeg
Type: image/jpeg
Size: 198709 bytes
Desc: not available
URL: <http://tug.org/pipermail/xy-pic/attachments/20110321/63728b17/attachment-0001.jpeg>
-------------- next part --------------

When using TeX+dvips+Ghostscript, that glitch does not occur.
So there must definitely be some place in the xypdf coding 
where there is a bit of room for improvement.

But Qcircuit needs to stop requiring zero-sized objects from 
being circular.
To achieve this, but allow circularity with non-zero-sized
objects are being used:

 1. the expansion of  \Qcircuit  should test the value
 of its optional argument. 
 2. only if non-zero, then use  @*[o]  otherwise leave it out, 
    so that the vertex objects remain rectangular.

> Bryan

Hope this helps,


> %Problem:
> %Arrows connect poorly to empty entries in \xymatrix
> %Qcircuit command broken:
> %\link
> %Example code:
> \xymatrix @*[o] @*=<0.01em> @R=1.7em @C=1em {
> & \ar @{-} [1,1]  \ar @{-} [0,-1] & & \ar @{-} [0,-1] \\
> & \ar @{-} [-1,1] \ar @{-} [0,-1] & & \ar @{-} [0,-1]
> }
> %Resultant error message:
> %None.
> %Hack:
> %Insert a very tiny object.
> %E.g.,
> \xymatrix @*[o] @*=<0.01em> @R=1.7em @C=1em {
> & *{\rule{.01em}{.01em}} \ar @{-} [1,1]  \ar @{-} [0,-1] &
> *{\rule{.01em}{.01em}} & \ar @{-} [0,-1] \\
> & *{\rule{.01em}{.01em}} \ar @{-} [-1,1] \ar @{-} [0,-1] &
> *{\rule{.01em}{.01em}} & \ar @{-} [0,-1]
> }
> %The hack is undesirable because:
> %The connections still don't look quite right.  Moderately important.

Hope this helps,


Ross Moore                                       ross.moore at mq.edu.au 
Mathematics Department                           office: E7A-419      
Macquarie University                             tel: +61 (0)2 9850 8955
Sydney, Australia  2109                          fax: +61 (0)2 9850 8114

More information about the xy-pic mailing list