Linus 7d2b3e852d feat(snip): bare integral (#5)
* feat!: `it` to `integral`, `int` for old behaviour

* fix: formatting errors

---------

Co-authored-by: arne314 <73391160+arne314@users.noreply.github.com>
2025-01-09 21:53:05 +01:00
2024-12-22 18:21:28 +01:00
2024-12-22 18:21:28 +01:00
2025-01-02 23:49:44 +01:00

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:

  • 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)
  • ctheorems shorthands (e.g. tem → empty theorem, exa → empty example)
  • Many shorthands for mathematical expressions

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.

Description
No description provided
Readme 357 KiB
Languages
Lua 63.2%
Python 32.7%
Nix 4.1%