| Crates.io | paper-terminal |
| lib.rs | paper-terminal |
| version | 3.1.0 |
| created_at | 2019-04-27 21:04:50.180258+00 |
| updated_at | 2025-01-04 17:59:59.867273+00 |
| description | Writes a file to a paper in your terminal. Especially if that file is Markdown. |
| homepage | https://github.com/foxfriends/paper-terminal |
| repository | https://github.com/foxfriends/paper-terminal |
| max_upload_size | |
| id | 130556 |
| size | 290,957 |
See paper.png to see what this looks like!
Writes a file to a paper in your terminal. Especially if that file is Markdown! Features supported include:
The usual text, and paragraphs with automatic line-wrapping. You can manually wrap with hard breaks as expected.
Otherwise, paragraphs will be nicely spaced.
Headings
Bold / Italic / Bold and Italic / Strikethrough
Lists
Definition : This is a definition
Rules
Inline code
Code blocks, with syncat integration for syntax highlighting. Note that you must install syncat and make the syncat executable available on your path for this to work.
fn main() {
println!("Hello world");
}
Blockquotes
Blockquotes
And even nested block quotes
[!IMPORTANT] Also alert blockquotes
And even images! Here's a photo of my cat

Task lists:
Footnotes1
Tables
Not a very good comparison... this is more of an example of a table!
| Tool | CommonMark | Paper | Paging | Wrapping | Syntax | Images | Tables | Looks good* |
|---|---|---|---|---|---|---|---|---|
| foxfriends/paper-terminal | Yes | Yes | No | Yes | syncat | Pixelated | Yes | Yes |
| ttscoff/mdless | Yes | No | Yes | No | pygmentize | Sometimes | Yes | No |
| lunaryorn/mdcat | Yes | No | No | No | syntect | Sometimes | No | No |
* subjective
Paper uses syncat stylesheets to allow full customization of styling. See the default stylesheet (src/default.syncat)
as an example of how this works. To override the default styles, create paper.syncat in your active syncat theme.
Different scopes are represented as nodes, inspired by the corresponding HTML tag names.
h1 through h6strongemphasisstrikethroughcodeblockquoteul, ol, lifootnote-ref, footnote-def, footnotetablecaptionlinkThe paper and shadow can be matched with paper and shadow. Styles applied to paper are applied to everything.
The "prefix" and "suffix" tokens can be used to match the decorations
The "lang-tag" token matches the language name written in the bottom corner of the code block
You can apply styles to code blocks with a specific language by using the language name as the token
For now, the prefix/suffix contents are not customizable, but this may be added in future if it is desired.
Paper can be installed from crates.io using Cargo:
cargo install paper-terminal
# Print the help
paper --help
# Render README.md
paper README.md
# Render README.md, with syntax highlighting
paper README.md -s
Prints papers in your terminal
Usage: paper [OPTIONS] [FILE]...
Arguments:
[FILE]... Files to print
Options:
-m, --margin <MARGIN> Margin (shortcut for horizontal and vertical margin set to the same value) [default: 6]
--h-margin <H_MARGIN> Horizontal margin (overrides --margin)
--v-margin <V_MARGIN> Vertical margin (overrides --margin)
-w, --width <WIDTH> The width of the paper (including the space used for the margin) [default: 92]
-p, --plain Don't parse as Markdown, just render the plain text on a paper
-t, --tab-length <TAB_LENGTH> The length to consider tabs as [default: 4]
-U, --hide-urls Hide link URLs
-I, --no-images Disable drawing images
-l, --left Position paper on the left edge of the terminal, instead of centred
-r, --right Position paper on the right edge of the terminal, instead of centred
-s, --syncat Use syncat to highlight code blocks. Requires you have syncat installed
--dev Print in debug mode
--completions <COMPLETIONS> Generate shell completions [possible values: bash, elvish, fish, powershell, zsh]
-h, --help Print help
This is the footnote! ↩