# Page printer **Created:** 2026-08-29 **Last updated:** 2026-08-30 **Description:** Merge a markdown note onto students, teams, or events and print one page per match. Save the recipe as a print preset. ## Where to open it Sign in and go to **Tools → Page printer** (`/print`). ## Write a template note Create a standalone note on **Notes** (not a page note or student note). Use `{{tokens}}` for values. Click a token chip on the printer page to copy it. ```markdown # Interview — {{FirstName}} {{LastName}} | Grade | Interview Time | Application | | --- | --- | --- | | {{Grade}} | {{Interview Time}} | {{Application}} | 1. Why did you join TSA? 2. What events interest you? **Event preferences** | 1st | 2nd | 3rd | 4th | 5th | 6th | | --- | --- | --- | --- | --- | --- | | {{Rank1}} | {{Rank2}} | {{Rank3}} | {{Rank4}} | {{Rank5}} | {{Rank6}} | | {{Rank1.Attributes}} | {{Rank2.Attributes}} | {{Rank3.Attributes}} | {{Rank4.Attributes}} | {{Rank5.Attributes}} | {{Rank6.Attributes}} | {{Legend}} ``` Or use `{{RankedEvents}}` for the ranking-index badge row instead of the table. Unknown tokens stay visible so typos are obvious. Empty values (including a missing Interview Time or an unset rank) print blank. Student pages also have event-rank tokens from **Student Event Ranks**. See [event-ranking-import.md](event-ranking-import.md). - `{{RankedEvents}}` prints that student’s preferences as ranking-index badges (colored rank dot, short name, attribute marks). - `{{Rank1}}` through `{{Rank10}}` print the official event name at that preference. - `{{Rank1.ShortName}}` / `{{Rank1.Attributes}}` (through 10) print the catalog short name and the same attribute marks shown on **Student Event Ranks** (level of effort, individual, on-site, regional, presubmission). Event pages can put the matching student list under the event name: ```markdown # {{Name}} {{EventAttributes}} {{RankedStudents}} ``` `{{RankedStudents}}` prints everyone who ranked that event as badges (colored rank dot and first name), same sort as **Events by Student** on the ranking index: rank, then grade + TSA year. `{{EventAttributes}}` is also available on team pages. Put `{{Legend}}` where you want the attribute-mark key (same marks as the Teams printout legend). Put `{{PageBreak}}` on its own line to force a new printed sheet **inside** one record (for example, questions on page 1 and a scoring rubric on page 2). Put `{{AnswerSpace}}` where you want ruled write-in lines. Markdown collapses blank lines, so extra empty lines in the note will not leave room to write. **Answer lines** on the printer page sets the height of each token; add another `{{AnswerSpace}}` to stack a second block. Additional-field tokens use the same names as the Students index columns (for example `{{Interview Time}}`). Those values come from each student's `#Student:{id}` `## Additional fields` table. See [student-notes-import.md](student-notes-import.md). ## Filters Pick **Students**, **Teams**, or **Events**, then optional filters. For students: Grade, TSA year, and officer (any / officers only / non-officers). Example: TSA year `1` prints first-year students. `{{OfficerRole}}` still prints the office name when they have one. Additional fields such as Interview Time are merge tokens, not filters. Student pages sort by last name, then first name. ## Print presets A print preset stores the *recipe* only: name, template note, entity type, and filters. It does not store merged pages. Each Preview uses the current roster and notes. 1. Set the note, entity, and filters. 2. Enter a name and click **Save as**. 3. Later, choose a preset, click **Preview**, then **Print**. 4. **Update** overwrites the selected preset. **Delete** removes it. If the template note was removed, the filters still load. Choose another note before Preview. ## Print **Preview** builds the pages. **Print** opens the browser print dialog (same as other handouts). Navigation is hidden. **New page per record** (on by default, saved with the preset) starts each match on a new sheet. Turn it off to flow records together; `{{PageBreak}}` in the template still works. Content that is taller than one sheet continues naturally. **Font size (pt)** (default 12) and **Answer lines** (default 3) apply to every page-printer recipe. They are saved on the preset. If Preview finds more than 75 matches, a warning is shown first.