---
name: "theme"
section: "1"
platform: "linux"
package: "discount"
version: "3.0.2.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/theme"
---

# theme(1)

create a web page from a template file

## NAME

**theme** – create a web page from a template file

## SYNOPSIS

**theme** \[**-C** *option-flags*\] \[**-c** *options*\] \[**-d** *root*\] \[**-E**\] \[**-f**\] \[**-o** *file*\] \[**-p** *pagename*\] \[**-t** *template*\] \[**-V**\] \[*textfile*\]

## DESCRIPTION

The **theme** utility takes a [markdown(7)](/markdown/7.md)-formatted *textfile* (or stdin if not specified,) compiles it, and combines it with a *template*( *page.theme* by default) to produce a web page.   If a path to the  template is not specified, **theme** looks for  *page.theme* in the current directory, then each parent directory up to the *document root*( set with **-d** or, if unset, the *root directory* of the system.) If  *page.theme* is found, **theme** copies it to the output, looking for  *\<?theme action?\>* html tags and processing the embedded *action* as appropriate.

**theme** processes the following actions:

- *author*

  Prints the author name(s) from the [mkd\_doc\_author(3)](/mkd_doc_author/3.md) function.

- *body*

  Prints the formatted [markdown(7)](/markdown/7.md) input file.

- *date*

  Prints the date returned by [mkd\_doc\_date(3)](/mkd_doc_date/3.md) or, if none, the date the input file was last modified.

- *dir*

  Prints the directory part of the pagename

- *include*(*file*)

  Prints the contents of  *file*. Markdown(7) translation will *NOT* be done on this file.

- *source*

  The filename part of the pagename.

- *style*

  Print any stylesheets (see [mkd-extensions(7)](/mkd-extensions/7.md)) found in the input file.

- *title*

  Print the title returned by [mkd\_doc\_title(3)](/mkd_doc_title/3.md), or, if that does not exist, the source filename.

- *version*

  Print the version of discount(7) that this copy of theme was compiled with.

If input is coming from a file and the output was not set with the **-o** option,  **writes** **the** **output** **to** *file-sans-text.html* (if) *file* has a  *.text* suffix, that will be stripped off and replaced with  *.html*; otherwise a *.html* will be appended to the end of the filename.)

The options are as follows:

- **-d** *root*

  Set the  *document root* to *root*

- **-E**

  Normally theme will not expand *\<?theme body?\>* or *\<?theme toc?\>* in the *\<head\>* section, or *\<?theme style?\>* in the *\<body\>* section, but the **-E** option overrides this and allows expansions everywhere.

- **-f**

  Forcibly overwrite existing html files.

- **-o** *filename*

  Write the output to *filename*.

- **-p** *path*

  Set the pagename to *path*.

- **-t** *filename*

  Use *filename* as the template file.

## RETURN VALUES

The **theme** utility exits 0 on success, and \>0 if an error occurs.

## SEE ALSO

[markdown(1)](/markdown/1.md), [markdown(3)](/markdown/3.md), [markdown(7)](/markdown/7.md), [mkd-extensions(7)](/mkd-extensions/7.md).

## AUTHOR

David Parsons (orc@pell.portland.or.us)
