Files
typstar/README.md
2025-01-18 19:58:43 +01:00

6.4 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 A314 A_314 , $alpha$n $alpha_n$ )
  • Series of numbered letters: <letter> ot<optional last index> <letter>_1, <letter>_2, ... (e.g. a ot a_1, a_2, ... , a ot4 a_1, a_2, a_3, a_4 , alpha ot k alpha_1, alpha_2, ..., alpha_k )
  • 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 containing a deck name to define a default deck on a directory base
  • 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 run the plugin setup.

require('typstar').setup({ -- depending on your neovim plugin system
   -- your typstar config goes here
})

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 (You will see a warning on startup if jsregexp isn't installed properly)
  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
  4. If you encounter issues try cloning the repo into ~/typstar or setting the typstarRoot config accordingly, feel free to open an issue

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.