Nova

Extensions


Readme

TeX Suite

Supported languages:

  • LaTeX
  • ConTeXt
  • plain TeX
  • BibTeX

Supported features:

  • syntax highlighting
  • spell checking
  • auto indentation
  • language server (LaTeX, ConTeXt)
  • command completion suggestions
  • auto-completion of \end commands (LaTeX)
  • auto-completion of \stop commands (ConTeXt)
  • outlining and folding of document structure:
  • \begin / \end (LaTeX)
  • \start / \stop (ConTeXt)
  • outlining (no folding) of \chapter, \section etc (LaTeX, ConTeXt) currently not for ConTeXt \start\stop variants
  • tasks for building and live PDF preview (ConTeXt, LaTeX via latexmk)

LaTeX

You will need a TeX distribution installed on your system. This extension has been tested and is known to work with both MacTeX and TeX Live from the Nix Package Manager. On your system, latexmk, the PDF backend you want to use (pdfLaTeX, XeLaTeX or LuaLaTeX) and all packages used in your document need to be available in order to build the PDF from within Nova.

A latexmkrc or .latexmkrc file, located at the root of your workspace, is recognized. If that file exists, it (or a global file, e.g. in the user home directory) must set $pdf_mode to something other than 0 so that a PDF is generated. If that workspace file sets @default_files, a task configuration for each of the files listed there will be generated.

There will also be a task for building the current .tex file with latexmk. If the autogenerated task(s) do not fit with your project, you can create a task from the latexmk template and set all desired latexmk options manually – this can be done in the Project Settings.

If and only if no latexmkrc / .latexmkrc file exists at the workspace root, building the PDF will use the PDF processor chosen in the extension's settings.

ConTeXt

You can use context from either your TeX distribution or as standalone installation, though the latter is untested.

A task for building the current file with context is automatically generated. You can create a task from the context template in Project Settings to have a task building a specific file.

Neither forwards nor backwards navigation are working with ConTeXt, the ConTeXt wiki states that this may be a bug in ConTeXt's SyncTeX implementation.

Language Server

You can use any language server that supports talking via stdin/stdout. Specify the path to the language server in the extension's preferences. Recommended language servers are:

  • TexLab (default for LaTeX, supports LaTeX)
  • Digestif (default for ConTeXt, supports LaTeX and ConTeXt)

PDF Building and Preview

For viewing the document, you need the PDF viewer Skim which, unlike Preview, supports SyncTeX. It is recommended to position Nova and Skim side-by-side. The PDF view does not integrate into the Nova window.

Both the autogenerated tasks and a task created via template support the following actions:

  • build builds the PDF document in the project's directory.
  • run navigates the PDF view to the position of the cursor in the currently active source file. If the PDF is not yet open in Skim, it will be opened. In Skim settings, you can select Nova as editor to enable backwards navigation via ⌘⇧+Click.
  • clean removes the PDF and intermediate files.

To enable backwards navigation in Skim, select the Nova preset in the Sync preferences.


Changelog

Version 1.0.4

  • fixed a problem with newer 10.x Nova versions that could crash the language server

Version 1.0.3

  • fixed a bug that prevented the language servers to be started

Version 1.0.2

LaTeX:

  • fixed the task template's Run task

Version 1.0.1

LaTeX:

  • fixed the task template not being able to call latexmk

Version 1.0.0

This release is the result of merging https://github.com/mava/Nova-LaTeX into the TeX Suite.

All:

  • added language server support
  • removed \chapter, \section etc folding as it was not quite compatible with environment folding
  • added environments to the document symbols sidebar
  • changed Skim integration to use newer builtin functionality. This means Skim doesn't run as subprocess of Nova anymore.
  • implemented Skim forward navigation
  • removed issue parsing from latexmk / context output, since issues are now generated from the language server
  • fixed a problem where a command was parsed as sectioning command if part of the command looked like one (e.g. \sectiona)
  • fixed a problem when $ was used in a sectioning title
  • new icon

BibTeX:

  • added BibTeX syntax

Version 0.5.1

All:

  • fixed the previously added preferences and shell probing to actually work (#2)
  • improved error messages on tooling problems (e.g. when the latexmk or context executables are not found)

Version 0.5.0

LaTeX:

  • fixed latexmk runner bugs that were introduced in 0.4.0
  • improved parsing of LaTeX error messages

All:

  • added editor actions to make text emphasised and bold.
  • probe user's default shell for proper path to tools (latexmk/context/etc)
  • added global & project preferences to explicitly set the path to the tools that ought to be used
  • made extension only activate in workspaces with *.tex or [.]latexmkrc files or files that use one of the TeX syntaxes

Version 0.4.0

LaTeX:

  • Can clean via latexmk.
  • auto-generate task from [.]latexmkrc file, if one exists.

ConTeXt:

  • implemented task template similar to latexmk, including build, preview and clean support

All:

  • automatically open Issues Sidebar when an error is encountered during building / running.

Version 0.3.1

Updated Changelog. whoops :)

Version 0.3.0

LaTeX:

  • Fixed latexmk issue matcher so that Nova will show a proper error item when compilation fails.
  • Added "run" task that runs Skim as preview application and continuously updates the PDF when editing files.
  • Implemented SyncTeX support which enables backwards navigation from PDF to source.

All:

  • Fixed comment definitions.

Version 0.2

LaTeX:

  • Disabled highlighting of numbers outside math mode. This yielded far too much false positives.
  • Suggest document as environment name in auto-completion
  • Added task template for building via latexmk.

Version 0.1

Initial release