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).


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 x.

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(x_init,y_init){\line(x_run,y_rise){travel}}, if 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 (https://ctan.org/pkg/pict2e). Another solution is to use a full-featured graphics system such as TikZ, PSTricks, MetaPost, or Asymptote.

© 2007–2018 Karl Berry
Public Domain Software