# Making Pictures With GNU PIC

1. Introduction to PIC
1.1. Why PIC?
1.2. PIC Versions
2. Invoking PIC
2.1. PIC Error Messages
3. Basic PIC Concepts
4. Sizes and Spacing
4.1. Default Sizes of Objects
4.2. Objects Do Not Stretch!
4.3. Resizing Boxes
4.4. Resizing Other Object Types
4.5. The ‘same’ Keyword
5. Generalized Lines and Splines
5.1. Diagonal Lines
5.2. Multi-Segment Line Objects
5.3. Spline Objects
5.4. Polygon Objects
6. Decorating Objects
6.1. Text Special Effects
6.2. Dashed Objects
6.3. Dotted Objects
6.4. Rounding Box Corners
6.5. Slanted Boxes
6.6. Arrowheads
6.7. Line Thickness
6.8. Invisible Objects
6.9. Filled Objects
6.10. Colored Objects
7. More About Text Placement
8. More About Direction Changes
9. Naming Objects
9.1. Naming Objects By Order Of Drawing
9.2. Naming Objects With Labels
10. Describing locations
10.1. Absolute Coordinates
10.2. Locations Relative to Objects
10.2.1. Locations Relative to Closed Objects
10.2.2. Locations Relative to Open Objects
10.2.2.1. Locations Relative to Polygons
10.3. Ways of Composing Positions
10.3.1. Vector Sums and Displacements
10.3.2. Interpolation Between Positions
10.3.3. Projections of Points
10.4. Using Locations
10.5. The ‘chop’ Modifier
11. Object Groups
11.1. Brace Grouping
11.2. Block Composites
12. Style Variables
13. Expressions, Variables, and Assignment
14. Macros
15. Import/Export Commands
15.1. File and Table Insertion
15.2. Debug Messages
15.3. Escape to Post-Processor
15.4. Executing Shell Commands
16. Control-flow constructs
17. Interface To [gt]roff
17.1. Scaling Arguments
17.2. How Scaling is Handled
17.3. PIC and [gt]roff commands
17.4. PIC and EQN
17.5. Absolute Positioning of Pictures
18. Interface to TeX
19. Obsolete Commands
20. Some Larger Examples
21. PIC Reference
21.1. Lexical Items
21.2. Semi-Formal Grammar
22. History and Acknowledgements
23. Bibliography

Eric S. Raymond
⟨esr@snark.thyrsus.com⟩

ABSTRACT

The pic language is a troff extension that makes it easy to create and alter box-and-arrow diagrams of the kind frequently used in technical papers and textbooks. This paper is both an introduction to and reference for gpic(1), the implementation distributed by the Free Software Foundation for use with groff(1). It also catalogs other implementations and explains the differences among them.