Files
typstar/README.md
2025-01-08 18:09:38 +01:00

5.9 KiB

Typstar

Neovim plugin for efficient note taking in Typst

Features

Usage

Snippets

Use :TypstarToggleSnippets to toggle all snippets at any time. Available snippets can mostly be intuitively derived from here, they include:

Markup snippets:

Math snippets:

  • Many shorthands for mathematical expressions
  • Alphanumeric characters: :<char>$<char>$ in markup (e.g. :X$X$ , :5$5$ )
  • Greek letters: ;<latin><greek> in math and $<greek>$ in markup (e.g. ;aalpha/$alpha$ )
  • Common indices (numbers and letters i-n): <letter><index><letter>_<index> in math and $<letter>$<index> $<letter>_<index>$ in markup (e.g A314A_314, $alpha$n $alpha_n$ )
  • Wrapping of any mathematical expression (see operations, works nested, multiline and in visual mode via the selection key): <expression><operation><operation>(<expression>) (e.g. (a^2+b^2)rtsqrt(a^2+b^2), lambdatdtilde(lambda), (1+1)sQ[1+1], (1+1)sq[(1+1)])
  • Matrices: <size>ma and <size>lma (e.g. 23ma → 2x3 matrix)

Note that you can enable and disable collections of snippets in the config.

Excalidraw

  • Use :TypstarInsertExcalidraw to create a new drawing using the configured template, insert a figure displaying it and open it in Obsidian.
  • To open an inserted drawing in Obsidian, simply run :TypstarOpenExcalidraw while your cursor is on a line referencing the drawing.

Anki

Use the flA snippet to create a new flashcard

#flashcard(0, "My first flashcard")[
  Typst is awesome $a^2+b^2=c^2$
]

or the fla snippet to add a more complex front

#flashcard(0)[I love Typst $pi$][
  This is the back of my second flashcard
]

To render the flashcard in your document as well add some code like this

#let flashcard(id, front, back) = {
  strong(front)
  [\ ]
  back
}
  • Add a comment like // ANKI: MY::DECK to your document to set a deck used for all flashcards after this comment (You can use multiple decks per file)
  • Add a file named .anki.typ to define a preamble on a directory base. You can find the default preamble here.
  • Tip: Despite the use of SVGs you can still search your flashcards in Anki as the typst source is added into an invisible html paragraph

Neovim

  • Use :TypstarAnkiScan to scan the current nvim working directory and compile all flashcards in its context, unchanged files will be ignored
  • Use :TypstarAnkiForce to force compilation of all flashcards in the current working directory even if the files haven't changed since the last scan (e.g. on preamble change)
  • Use :TypstarAnkiForceCurrent to force compilation of all flashcards in the file currently edited

Standalone

  • Run typstar-anki --help to show the available options

Installation

Install the plugin in Neovim and set the typstarRoot config or alternatively clone typstar into ~/typstar.

require('typstar').setup({
  typstarRoot = '/path/to/typstar/repo' -- depending on your nvim plugin system
})

Snippets

  1. Install LuaSnip, set enable_autosnippets = true and set a visual mode selection key (e.g. store_selection_keys = '<Tab>') in the configuration
  2. Install jsregexp as described here (running :lua require('jsregexp') in nvim should not result in an error)
  3. Install nvim-treesitter and run :TSInstall typst
  4. Optional: Setup ctheorems with names like here

Excalidraw

  1. Install Obsidian and create a vault in your typst note taking directory
  2. Install the obsidian-excalidraw-plugin and enable Auto-export SVG (in plugin settings at Embedding Excalidraw into your Notes and Exporting > Export Settings > Auto-export Settings)
  3. Have the xdg-open command working or set a different command at uriOpenCommand in the config

Anki

  1. Typst version 0.12.0 or higher is required
  2. Install Anki
  3. Install Anki-Connect and make sure http://localhost is added to webCorsOriginList in the Add-on config (should be added by default)
  4. Install the typstar python package (I recommend using pipx via pipx install git+https://github.com/arne314/typstar, you will need to have python build tools and clang installed) [Note: this may take a while]
  5. Make sure the typstar-anki command is available in your PATH or modify the typstarAnkiCmd option in the config

Configuration

Configuration options can be intuitively derived from the table here.