Apply borders, shading, tab stops, and numbering to paragraphs.

1. Paragraph Borders

Uniword supports all paragraph border positions with detailed styling options.

para = Uniword::Paragraph.new
para.add_text("Text with borders")

# Simple borders (just color)
para.set_borders(top: "FF0000", bottom: "0000FF")

# Detailed borders with style, size, and color
para.set_borders(
  top: { style: 'single', size: 4, color: 'FF0000' },
  bottom: { style: 'double', size: 6, color: '0000FF' },
  left: { style: 'dashed', size: 4, color: '00FF00' },
  right: { style: 'dotted', size: 4, color: 'FFFF00' }
)

All border positions: top, bottom, left, right, between (for consecutive paragraphs), bar.

Border styles: single, double, dashed, dotted, thick, thin, none

2. Paragraph Shading

Add background colors and patterns to paragraphs:

para = Uniword::Paragraph.new
para.add_text("Highlighted text")

# Simple solid fill
para.set_shading(fill: "FFFF00")

# With pattern and foreground color
para.set_shading(
  fill: "FFFF00",      # Background color
  color: "000000",     # Foreground (pattern) color
  pattern: "pct10"     # Pattern type
)

Pattern types: clear, solid, pct5, pct10, pct15, pct20, pct25, pct30, pct35, pct40, pct45, pct50, pct55, pct60, pct65, pct70, pct75, pct80, pct85, pct90, pct95

3. Tab Stops

Add custom tab stops with alignment and leader characters:

para = Uniword::Paragraph.new
para.add_text("Column 1\tColumn 2\tColumn 3")

# Add tab stops
para.add_tab_stop(position: 1440, alignment: "left")    # 1 inch
para.add_tab_stop(position: 2880, alignment: "center")  # 2 inches
para.add_tab_stop(position: 4320, alignment: "right", leader: "dot")  # 3 inches

Alignment options: left, center, right, decimal, bar

Leader options: none, dot, hyphen, underscore, heavy, middleDot

Position units are twips: 1/20th of a point. There are 1440 twips per inch.

4. Complex Combinations

All paragraph formatting options can be combined freely:

para = Uniword::Paragraph.new
para.add_text("Professional formatting")
para.set_borders(top: "000000", bottom: "000000")
para.set_shading(fill: "F0F0F0", pattern: "solid")
para.add_tab_stop(position: 1440, alignment: "center")

Combine paragraph and run formatting in the same paragraph:

run = para.runs.first
run.character_spacing = 20
run.kerning = 24
run.position = 5
run.outline = true
run.shadow = true
run.set_shading(fill: "FFFF00")