Charles converts a plain text document marked-up as a fiction manuscript into a formatted manuscript in Portable Document Format for printing, in Rich Text Format for MS Word, or in ePub ebook format for self-publishing.
An example source document lies at the end of this page.
If you want to support the maintenance of Charles, buy me a tea.
When you use Charles, you offload as much work as possible onto the software. You write the content of your documents, and in most cases, Charles infers the types of your document’s paragraphs and formats them appropriately.
When you keep your documents in plain text format, they are future-proof. UTF-8 is a non-proprietary, universal standard for representing text. People will be able to read your documents a hundred years from now.
Source documents must be encoded as UTF-8. Documents must have the .txt filename suffix. Any line terminator sequence is acceptable. Paragraphs with single terminators and paragraphs with individually-terminated lines are both acceptable.
Charles uses an Open Source Courier-style font for PDFs. As a consequence, the formatter supports the character ranges that the fonts support. These ranges support European languages that use alphabets derived from the Latin alphabet.
On Windows, Notepad edits plain text. Select the magnifying glass and search for notepad.
On MacOS, TextEdit edits plain text. Select the magnifying glass and search for textedit. When you create a new document in TextEdit, it will make the document a Rich Text Format document by default. To convert the document to plain text, select the Format menu and then select Make Plain Text.
On Unix variants Vi edits plain text.
In the bodies of screenplays, Charles recognizes 5 types of paragraphs. Separate paragraphs from each other with blank lines.
To force a line break, insert a bar | character where you want the break to occur.
To indicate an elision at the front of a word, use a backtick ` instead of an apostrophe.
Users with English keyboards can insert UTF-8 sequences for accented characters with the following escape sequences:
\' (apostrophe) followed by a vowel inserts the vowel with an acute accent.
\` (backtick) followed by a vowel inserts the vowel with a grave accent.
\^ followed by a vowel inserts the vowel with a circumflex.
\, followed by an uppercase C or a lowercase c inserts the character with a cedilla.
\~ followed by an uppercase N or a lowercase n inserts the character with a tilde.
\: followed by a vowel or an uppercase Y or a lowercase y inserts the character with a dieresis.
\u followed by a decimal number inserts the Unicode character with the specified code point. If the code point is followed by digits that are part of the document text, those digits must be repesented by their own \u code points, or the digits will be interpreted as part of the code point.
Sections are paragraphs that begin with an equals sign:
Sections are centered and emboldened on a page by themselves. Any occurrence of $S in a section is replaced with the number of the section. Sections are numbered from 1.
Chapters are paragraphs that begin with a dot:
Chapters are centered and emboldened. Any occurrence of $C in a chapter is replaced with the number of the chapter. Chapters are numbered from 1.
Note paragraphs contain editorial content that is removed by the formatter. To be recognized, note paragraphs must begin with [[ and end with ]]. A note "paragraph" can contain multiple paragraphs of text.
[[This is a note paragraph.]]
[[This note contains more than one paragraph of text, but it is considered to be a single entity by the formatter.
This is the second internal paragraph of the note.]]
To insert editorial content that is not removed by the formatter, insert the content inside single bracket pairs: [Note].
A break paragraph indicates a break in the narrative. To insert a break paragraph, place # by itself in a paragraph of 1 line.
This the paragraph before the break.
This is the paragraph after the break.
Paragraphs that are not sections, chapters, breaks, or notes are body paragraphs.
To set a body paragraph in italics, precede paragraph text with a % character.
Charles provides no means for you to directly change the font. Boldface is too obstrusive outside of headings, and courier oblique is not oblique enough because it is a fixed-pitch font with little room for leaning. As a consequence, it is easy to fail to recognize oblique words embedded in a roman sentence. I have made the executive decision that all emphasis is accomplished with underlining.
Charles underlines words that are bookended with underscores. Each word must be underlined separately.
_This_ _is_ _underlined_ _text._ _Underline_-_each_-_word_-_in_-_a_-hyphenate._
You may get away with underlining _a single-line passage of text_, but if your underlined passage is subsequently split across lines by the formatter, the underlining will be removed.
A title page with placeholder information is automatically added to your screenplays. Charles does not format title pages by themselves. You must have at least one paragraph of screenplay for Charles to produce PDF output.
To replace title page placeholder text, add the following lines to the beginning of your screenplays. Replace the values after the colons with your information.
Title: THE MAGNIFICENT GUPPY
Revision: February 2018
To create multiline values, break the keyword line after the colon. Place the lines of your multiline value after the keyword line.
Each line of a multiline value must begin with a space. To indicate a blank line, insert a line containing only a space character.
His dog, Horatio
To make today's date the Revision, make its value $D.
To insert the manuscript word count, use $W.
To insert the page count, use $P.
You can place anything you like in the value of Revision. If you use $D, it must appear by itself on a line.
If you use $W, it must appear at the start of a line. If $W appears on the line by itself, the formatter will follow the word count with WORDS. If you want different text, follow $W with the text that you want.
If you use $P, it must appear at the start of a line. If $P appears on the line by itself, the formatter will follow the word count with PAGES. If you want different text, follow $P with the text that you want.
The Header keyword introduces 2 lines that specify the content of a manuscript's running header. The first line should contain the author's last name. The second line should contain 1 or 2 words from the title. Charles adds the page number to the header.
Charles support 3 optional title page block elements: Watermark, Copyright, and Language.
Copyright: 2018, Carnaby Charles.
COPYRIGHT (c) 2018,
The 3 characters (C) occurring anywhere inside the Contact or Watermark information are replaced with the copyright symbol by the formatter.
If you specify watermark lines, they are added centered, rotated left to the background of every page. Watermarks are set in boldface at 90% transparency at 60 points.
Charles's watermarks cannot be removed or edited by tools that modify PDF annotations.
Charles’s ebooks do not contain cover images, which means that they cannot be uploaded to ebook retailers such as Apple Books.
The Copyright and Language title block data are only used when Charles generates ebooks.
If you generate ePubs, add a Copyright line to your title page block. The value should be the year, a comma, and the name of the copyright owner. Charles precedes your copyright data with the text Copyright and the c-in-circle copyright symbol.
Copyright: 2018, Carnaby Charles.
If you generate ebooks and your screenplays are not written in English, you should add a Language line to your title page blocks. The value of the line must be a BCP 47 language tag. For example: en for English, fr for French, de for German, es for Spanish, it for Italian, or is for Icelandic. If your screenplay does not have a Language line, Charles uses en by default.
An example manuscript fragment follows. A plain text version that you can save, modify, and upload to the formatter is here.
Title: THE MAGNIFICENT GUPPY
[Replace this line with a single space character to insert a blank line.]
_Sed_ _quid_ _ages_ _tandem_, si utilitas ab amicitia, ut fit saepe, defecerit? Beatus sibi videtur esse moriens. Quid enim tanto opus est instrumento in optimis artibus comparandis? Expressa vero in iis aetatibus, quae iam confirmatae sunt. Quid igitur dubitamus in tota eius natura quaerere quid sit effectum? Atque haec coniunctio confusioque virtutum tamen a philosophis ratione quadam distinguitur. Quis non odit sordidos, vanos, leves, futtiles? Sed tu istuc dixti bene Latine, parum plane. Mihi, inquam, qui te id ipsum rogavi? Optime, inquam. Age sane, inquam. Nihil sane. Sed ne, dum huic obsequor, vobis molestus sim. Ergo illi intellegunt quid Epicurus dicat, ego non intellego? De hominibus dici non necesse est. Quae si potest singula consolando levare, universa quo modo sustinebit? Parvi enim primo ortu sic iacent, tamquam omnino sine animo sint. Sit hoc ultimum bonorum, quod nunc a me defenditur; Nec vero alia sunt quaerenda contra Carneadeam illam sententiam. Qualem igitur hominem natura inchoavit?
Sed quid ages tandem, si utilitas ab amicitia, ut fit saepe, defecerit? Beatus sibi videtur esse moriens. Quid enim tanto opus est instrumento in optimis artibus comparandis? Expressa vero in iis aetatibus, quae iam confirmatae sunt. Quid igitur dubitamus in tota eius natura quaerere quid sit effectum? Atque haec coniunctio confusioque virtutum tamen a philosophis ratione quadam distinguitur. Quis non odit sordidos, vanos, leves, futtiles? Sed tu istuc dixti bene Latine, parum plane. Mihi, inquam, qui te id ipsum rogavi? Optime, inquam. Age sane, inquam. Nihil sane. Sed ne, dum huic obsequor, vobis molestus sim. Ergo illi intellegunt quid Epicurus dicat, ego non intellego? De hominibus dici non necesse est. Quae si potest singula consolando levare, universa quo modo sustinebit? Parvi enim primo ortu sic iacent, tamquam omnino sine animo sint. Sit hoc ultimum bonorum, quod nunc a me defenditur; Nec vero alia sunt quaerenda contra Carneadeam illam sententiam. Qualem igitur hominem natura inchoavit?