Skip to content

Towards a more flexible margin-note implementation #20

@alarsyo

Description

@alarsyo

Hi! Thanks for the very useful package, I'm opening this issue to start a discussion around margin notes. Here is the issue that I'm hitting in another package: nogula/tufte-memo#5, prompting me to discuss things here :)

So tufte-memo uses drafting's margin notes to implement its own margin notes (which work like numbered footnotes), but is hitting issues related to how the current margin-note interface works:

  • either dy is left to auto, and notes are automatically shifted to not overlap, as much as possible
  • or dy is set to a value, and notes are not automatically shifted when overlapping

tufte-memo currently made the choice to set dy to -2em to try to align a margin note with the line where it originated (instead of starting the note "1 line below", which seems to be the default for drafting). But in doing so, its users miss out on the auto-shift feature.

I think there are several solutions to this problem:

  • The ergonomic "auto-shift" feature could be decoupled from dy: as a user, I could hint to where I want the note to be placed by default, AND want the package to move it to the best place should it overlap with another note.
  • drafting could provide a global setting for how margin notes should be positioned relative to the line where they were created (this would be different from dy, which is a granular, per-note adjustment)
  • If you think this is out of scope for drafting, then tufte-memo should implement its own margin note rendering logic (or even better, depend on a common hypothetical margin-notes package which is flexible enough to suit both tufte-memo and drafting's use cases?)
  • Maybe it's already possible to achieve such functionality, in this case I couldn't find how :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions