Next: \linethickness, Previous: \graphpaper, Up: picture [Contents][Index]

`\line`

Synopsis:

\line(x_run,y_rise){travel}

Draw a line. It slopes such that it vertically rises `y_rise` for
every horizontal `x_run`. The `travel` is the total horizontal
change — it is not the length of the vector, it is the change in
*x*. In the special case of vertical lines, where
(`x_run`,`y_rise`)=(0,1), the `travel` gives the change in
*y*.

This draws a line starting at coordinates (1,3).

\put(1,3){\line(2,5){4}}

For every over 2, this line will go up 5. Because `travel`
specifies that this goes over 4, it must go up 10. Thus its
endpoint is *(1,3)+(4,10)=(5,13)*. In particular, note that
* travel=4* is not the length of the line, it is the change in

The arguments `x_run` and `y_rise` are integers that can be
positive, negative, or zero. (If both are 0 then LaTeX treats the
second as 1.) With
`\put(`

,
if `x_init`,`y_init`){\line(`x_run`,`y_rise`){`travel`}}`x_run` is negative then the line’s ending point has a first
coordinate that is less than `x_init`. If `y_rise` is negative
then the line’s ending point has a second coordinate that is less than
`y_init`.

If `travel` is negative then you get ```
LaTeX Error: Bad \line or
\vector argument.
```

Standard LaTeX can only draw lines with a limited range of slopes
because these lines are made by putting together line segments from
pre-made fonts. The two numbers `x_run` and `y_rise` must have
integer values from -6 through 6. Also, they must be
relatively prime, so that `(x_run,y_rise)` can be (2,1) but not
(4,2) (if you choose the latter then instead of lines you get sequences
of arrowheads; the solution is to switch to the former). To get lines
of arbitrary slope and plenty of other shapes in a system like
`picture`

, see the package `pict2e` on CTAN. Another solution
is to use a full-featured graphics system such as `TikZ`, or
`PSTricks`, or `MetaPost`, or `Asymptote`