REBOL [
    Title: "Dual Column Text"
    Date: 5-Oct-2001/7:22-8:00
    Version: 1.0.0
    File: %dual-col.r
    Author: "Carl Sassenrath"
    Purpose: "Shows an easy way to make dual column text."
    Email: carl@pacific.net
    Web: http://www.rebol.com
    library: [
        level: 'intermediate 
        platform: none 
        type: none 
        domain: [GUI] 
        tested-under: none 
        support: none 
        license: none 
        see-also: none
    ]
]

page-width: 600

size-lay: layout [sizer: text]

split-text: func [text width /local size] [
    ; Used for column sizing. Returns second column break and column height.
    sizer/text: text
    sizer/size/x: width
    sizer/line-list: none
    size: size-text sizer
    offset-to-caret sizer size / 2 * 0x1
]

make-cols: func [content width /local where] [
    ; Returns a face that holds both columns
    where: split-text content width
    layout [
        across origin 0 backcolor snow
        text as-is width copy/part content where
        text as-is width copy where
    ]
]

make-body: func [titl byline date content /local out bx] [
    ; Returns a face that has title, byline, date, and columns.
    body: make-cols content page-width / 2
    body/offset: 0x0
    out: layout [
        origin 15 space 4x10
        backcolor snow
        h1 titl
        h4 reform ["By" byline "on" date]
        box page-width * 1x0 + 4x3 edge [size: 1x1 color: gray effect: 'bevel]
        bx: box body/size
    ]
    bx/pane: body
    out
]

view make-body "Dual Column Layout Example" "Carl Sassenrath"
    system/script/header/date read %dual-col.r