|The HotDocs Computation Archive|
(parInitMC-c Computation) // List settings SET parMark-t TO ";" SET parConj-t TO "and" // Set the COUNT and COUNTER SET parCTR-n TO 0 SET parCNT-n TO COUNT( MCVar ) (parInitTF-c Computation) // Paragraph settings SET parMark-t TO "," SET parConj-t TO "or" // Initialize the COUNT and COUNTER variables SET parCNT-n TO 0 SET parCTR-n TO 0 // Set the COUNT IF TF1 SET parCNT-n TO parCNT-n + 1 END IF IF TF2 SET parCNT-n TO parCNT-n + 1 END IF IF TF3 SET parCNT-n TO parCNT-n + 1 END IF IF TF4 SET parCNT-n TO parCNT-n + 1 END IF IF TF5 SET parCNT-n TO parCNT-n + 1 END IF (parPunc-c Computation) // Increment the counter SET parCTR-n TO parCTR-n + 1 // Initial paragraphs IF parCTR-n < parCNT-n - 1 "«parMark-t»" // Penultimate paragraph ELSE IF parCTR-n = parCNT-n - 1 "«parMark-t» «parConj-t»" // Last paragraph ELSE "." END IF
In legal texts, it is common for a series of paragraphs to all belong to one extended sentence. A simple example is:
The board shall prepare a state plan for management of radioactive waste by July 1, 20xx. The plan shall:
- provide an estimate of radioactive waste capacity needed in the state for the next 20 years,
- assess the state's ability to minimize waste and recycle,
- evaluate radioactive waste treatment and disposal options, as well as radioactive waste needs and existing capacity,
- evaluate facility siting, design, and operation, and
- review funding alternatives for radioactive waste management.
A difficulty arises when each section becomes conditional, since any one of the sections could end up being at the first, middle, or end of the paragraph. So determining the punctuation mark for each item can become very complex. This computation will automatically determine and insert the proper punctuation for each item or paragraph.
The system uses two computations:
These paragraph blocks are usually controlled by either a multiple choice variable or by a series of true/false variables. A model computation for each type has been provided: parInitMC-c for multiple-choice-based paragraph blocks, and parInitTF-c for true/false-based paragraph blocks. By simply changing the variable names, the models can be adapted to any scenario.
The initializing computation performs the following steps:
The initializing computation should be placed immediately before the block of paragraphs.
Punctuation Computation: parPunc-c
The heart of the system is parPunc-c. By simply placing this computation at the end of each paragraph in the block, the correct punctuation mark will always be inserted.
How it works: Each time this computation is called, it increments the counter parCTR-n and tests it against the count parCNT-n. If the current counter is less than the total count, it just inserts a punctuation mark. If the current counter is one away from the total count, it inserts a punctuation mark and a conjunction (and/or). If the current counter equals the total count, it inserts a period.
The punctuation mark inserted is controlled by parMark-t. The conjunction used is controlled by parConj-t.
This template has everything you need set up and configured for you. It will work as-is, or can be adapted to your variable and dialog names. It contains: 1) sample Word and WordPerfect templates (or an Automator form) to demonstrate an implementation of the computation, 2) a component file containing the computation and all supporting dialogs and variables, and 3) instructions for adapting the computation for your use.
(Go to the download page)