Skip to content

Content Flows

A content flow is a collection of content items that is defined without design or layout. These come later, when flows are "painted" onto specific pages defined elsewhere in the file.

Painting a Content Flow

Within a page definition, a content tag can act as a placeholder for content to be sampled from a given content flow.

For example,

xml
<press>
  <flows>
    <body>
      <h1>Section One</h1>
      
      <p>Lorem ipsum...</p>

      <h1>Section Two</h1>

      <p>Lorem ipsum...</p>
    </body>
  </flows>
  
  <document>
    <page width="595pt" height="842pt" page-margin="24pt">
      <h-stack 
        font-size="14pt" 
        padding-left="48pt" 
        padding-right="48pt" 
        padding-top="48pt"
      >
        <frame width="fill">My Report</frame>
        <frame width="fill" text-align="right">30/07/2025</frame>
      </h-stack>
      
      <frame padding="48pt">
        <flow name="body" />
      </frame>
    </page>
  </document>
</press>

Markdown Support

Press also supports markdown within content flows. This works by defining type="markdown" when creating a content flow. For example,

xml
<flows>
  <body type="markdown">
    # Section One in Markdown
    
    Lorem ipsum...
    
    # Section Two in Markdown
    
    Lorem ipsum...
  </body>
</flows>

If type="markdown", press elements can still be included but all top-level text is treated as markdown. For example,

xml
<flows>
  <body type="markdown">
    # Section One in Markdown

    Lorem ipsum...
    
    <frame direction="row">
      <img width="50%" src="..." />
      
      <p>This is an interesting image!</p>
    </frame>

    # Section Two in Markdown

    Lorem ipsum...
  </body>
</flows>