How Do I Pathagorize Thee . . . Let me count the ways

   Pathagoras offers multiple approaches to creating Pathagorized documents. The 'basics' are listed below, with references and links to the details in the Read More links. Keep in mind at all times that the 'basics' are not stand-alone entities. Pathagoras' unique plain-text approach allows infinite mixing and matching of the various approaches.

   There is no 'right' or 'better' way to 'Pathagorize' your documents (except not using at least one of the processes outlined below). Peruse the list. Which ones seem appropriate for your office? Try that one, but keep in mind that if you head in one direction and decide later to go another, the switch is easy. You will have not lost any time if you decide to pursue an alternative or complimentary path.


oA variable in Pathagoras is simply any text of your choosing surrounded by square brackets. [Client Name] is a variable. Variables are typically holding places in your documents for names, addresses and similar relatively short pieces of personal data.

oMultiple choice variables are used when you want to propose a finite selection of choices to the end user. E.g., [chocolate/vanilla/strawberry creme] or [Larry Lawyer/Amanda Attorney/Charlie Counselor]  

(Read More about Multiple Choice Variable)

oYou can convert existing text into a variable in several ways.

You can manually type over 'John Doe' in a document with [Client Name].

You can manually search for 'John Doe' and replace with [Client Name].

You can press Alt-D to call up the Instant Database. Type 'John Doe' in the left column an [Client Name] in the right column. Add as many 'real' to '[variable]' name replacements as you wish. Press 'Next'

You can press Alt-V to enable Pathagoras' Variable Creator wizard.

Simple Optional text

oSometimes you want to keep a block of text in a document, sometimes you don't. The simplest of simple approaches o mark up such text: surround that text with curly braces. {This is a block of optional text. When Pathagoras encounters it during document processing, it will highlight the text, pause and ask 'Do you want to keep this text?} (NOTE: the red color of the braces is for illustration only.) Your answer tells Pathagoras to keep the text (in which case it simply removes the curly braces) or to delete it from the document (in which case the entire block is removed, and spacing and, if in place, automatic numbering, is adjusted.

(Read More about Simple Optional Text)

Robust Options. Optional and Repeat blocks -- these tools allow you to add user prompts and complex logic into your documents. Nested questions, cascading choices, If/Then logic and more are all possible with these 'robust' commands.

oOptions are used when you want to allow the end user to select among various choices. If you want to restrict the user to a single choice, add the '(radio)' argument. Optional suggests simple 'keep it or delete it' logic. Repeat duplicates the text a designated number of times.

oStructure: A set of << and >> markers denote the outside boundaries of the block.  The command *Options* or *Optional* or *Repeat* is placed just inside of the opening << boundary to indicate the desired process. If 'options' (multiple choices) is intended, a slash ('/') separates each choice. (Yep, it's that simple.). If a prompt is used, a third '*' is needed to signal Pathagoras of that fact, and that the end of the administrative text has been reached.

oPrompts (questions or shorter descriptor):

Options blocks: Let's first discuss an options block without prompts. In that case, Pathagoras will present the first 200 characters of each choice. That ofter is too much for the user to process. You shorten the imformation posed to the end-user by adding simple prompt, as many as there are choices, and each separated by a slash,

Optional blocks: Here, there prompt is just a question that leads the user to the decision to keep or delete the text block.

(Read More about Robust Options/Optional Text)

Color Coded Options and Optional Text Blocks

o<<*Options*/*Optional*>> commands are not the only way to present conditional text in your document. You can 'paint' your text in colors and Pathagoras can present those colors to you as Options.

(Read More about Color Coding Text)

Repeat: Pretty straighforward. When Pathagoras sees *Repeat*, it will ask how many times that block should be repeated. But the 'coolest' thing is that any variables seen within the block will automatically be incremented. So if you answer '3' to the question posed  when <<*Repeat*[Child]>> is processed, the block becomes [Child@1], [Child@2] and [Child@3].

(Read More about Repeats)


oThe answer you provide to a multiple choice variable or to an options, optional or repeat question will lead to a result for the immediate text block but ofter will suggest the value for others text blocks further down in the document. For example, choosing 'female' as the sex of the client at the 'top' will definitely help with filling out the 'he/she', 'him/her', etc. choices below. Choosing '2' as the number of Sellers at the top of a contract suggests the need for a similar number of signature blocks at the end. A 'Yes' answer to the question 'Are there children' suggests the need for a follow-up question 'How many?' and further, for a listing of their names and birthdates. A !group! is Pathagoras' device for transmitting the value of an answer at the 'top' of the document to a similarly structured text block at the bottom.

oStructure: the !group! name appears immediately after the closing asterisk of a command and is closed by an '*' it the groupname is the last of the 'administrative text' elements. E.g., <<*Options*!sellers!* . . . >>

(Read More about Groups)

Processing the <<Commands>>

oThe 'raw' document sitting on your editing screen just sits there. That document, once saved and then recalled to the editings screen, likewise just sits there. If it automatically processed, you would never be able to edit it. So something has to be done to trigger the logic blocks. That something is the process command. The process command is Alt-P (for 'p'rocess). HOWEVER, except for testing, we hope you rarely use Alt-P. If you use it a lot, that means you are ever increasing your odds of accidentally saving over the original and losing all of your work. You should always call up your Pathagorized documents from a DropDown List or via the Document Assembly routine. Those methods (1) create exact copies of the originals and (2) automatically trigger the 'Process' command so you don't have to.   (Read More)

Processing Order within the document

oOptions, etc. commands are processed one at a time in the following order:

Robust Options and Optionals, from top to bottom in the order found

Repeat blocks, from top to bottom in the order found.

Simple optionals, from top to bottom, in the order found

oInterviews: You can create an 'Interview' with the 'robust' elements by elevating them into an Interview table (also called an 'Ask' table because the work Ask is the introductory text to create an Option to an interview.

You must have assigned a !group! to each <<*Options/Optional/Repeat* . . . >> block you want in the interview. This is the way the answer in the interview is transmitted to the body of the document.

The interview can be created automatically using the Pathagoras tools provided. You can also manually create or add to an interview by simply typing <<*AskOptions* or *AskOptional* or *AskRepeat*" plus the groupname plus any prompts plus "*>>" to close the command. (The final astersik denotes the end of the administrative text.


There are many variations and combinations to the above concepts that are beyond the scope of this 'basics' presentation. You are invited to the various Read More links to explore the wide range of approaches that Pathagoras makes available. And keep in mind, because Pathagoras used plain text characters and a WYSIWYG approach to document assembly, you can cut and paste and mix and match elements of various documents without having to create or preserve links and connections to other documents or external datasources.