Marking changes

passage(anchors, body)
the citable unit — wraps body (plain text and/or add/del/rep/suppress) and attaches the anchor(s) a response letter will resolve back to this location. Called as passage(body), with no anchors, for a typo fix with no comment to answer. anchors — <r1-2>, <e1>, a co-author id like <bob-3>, or an array of these — gets a full chapter of its own next (Anchors); every example below either omits it or uses it exactly as seen in the quickstart above.
add(body)
marks body as newly added.
del(body)
marks body as removed.
rep(old, new)
a replacement in one call.
#import "../../lib.typ": *

#set page(width: 16.6cm, height: auto, margin: 12pt)
#set text(size: 10.5pt)

#passage[
  Propensity scores were estimated by logistic regression
  #add[and their overlap was assessed graphically].
]

#passage[
  The positivity assumption #rep[was not discussed][is now assessed graphically].
]

Compiled once clean:

Once more with --input variant=tracked:

Two things to notice: add shows nothing extra in clean mode — body is just there, as if it had always been. del shows nothing at all in clean mode — no hide(), no reserved space; a deletion that survives into the clean version isn’t a deletion.

suppress

suppress(note)
like del, but never shows the real content, in either mode — only note, centered and italic, and only in tracked mode.
#import "../../lib.typ": *

#set page(width: 16.6cm, height: auto, margin: 12pt)
#set text(size: 10.5pt)

#passage[
  The method section stands as before.
  #suppress[An accompanying diagnostic plot has been removed: it duplicated Figure 2.]
  The next paragraph is unaffected.
]

The obvious question is why this exists next to del, which already hides its content in clean mode. The difference shows up specifically in the tracked manuscript: del still renders the real removed content there — struck through, as the previous section demonstrated. Sometimes that’s not what you want: a long passage struck through end to end reads worse than a short note saying what used to be there, or the removed content simply isn’t worth showing again once it’s gone. suppress replaces it with note instead — centered, italic, shown only in tracked mode — rather than the real thing, struck.

suppress takes no content to hide, only note — there’s no parameter for the real content at all, not even an unused one. Since that content is never rendered by this function, in any mode, keeping it as an argument would only be a place for some future edit to start rendering it by accident, undoing the whole point.

If you want the removed material kept at hand in the source to reconsider later, comment it out beside the call rather than deleting it outright — a // line is never evaluated by Typst, so there’s no risk of it resurfacing on its own:

// #figure(table(...), caption: [The old table.])
#passage(<r2-1>)[#suppress[Table removed: see response.]]

The look of every mark above — color, underline vs. box, whether a small anchor tag shows at the end — is controlled by two things, covered in the next two chapters: the anchor itself (whose shape decides the automatic per-reviewer/per-author color) and set-revisions (any visual knob, changed anywhere in the document). Anchors come first, since a couple of set-revisions’s own examples already need one.

← Your first revision roundAnchors →