Type-setting from within ST
For all the years I’ve been using Sublime Text to write my reports in LaTeX, creating a build system had escaped my list of to-dos. Build systems are handy: they enable building (compiling, type-setting) from within Sublime Text. Here are a couple of steps for MacOS:
-
Select Tools > Build System > New Build System… and replace the entire pre-populated JSON instruction with the following:
{ "cmd": ["/Library/TeX/texbin/xelatex", "$file"], "selector": "text.tex.latex" }
To explain the above, I use
xelatex
as my type-setting system. Finding the path ofxelatex
is as easy as running a query at command line like so:$ which xelatex
-
Save it as
LaTeX.sublime-build
. (It will be saved under the folder~/Library/Application Support/Sublime Text 3/Packages/User/
.) -
This above allows one to type-set (or build) by pressing ⌘ + B.
A minor wrinkle with the build system is that unlike running xelatex
from Terminal, building from within Sublime Text does not recognise artefacts (like class and style files) placed within ~/texmf
folder, and so common resources require a full path. Following is an example. Note, e.g., ckunte.sty
(style) file has been given a full path like so:
\usepackage{/Users/ckunte/texmf/ckunte}
Same goes for any resource within ~/texmf/ckunte.sty
. For instance, I use a custom pythonhighlight.sty
within ~/texmf/ckunte.sty
. That needs to have a full path as well:
\usepackage{/Users/ckunte/texmf/pythonhighlight}
I am still figuring out how to replicate this on a hybrid system on my work machine with Sublime Text as native app in Windows 10, while xelatex
is only accessible via Cygwin. Worst case scenario, I will have to stick to my old ways, which is to write in Sublime Text, and type-set via command line.
Via WSL
As shared elsewhere, building using Ctrl+B is possible via Windows Subsystem for Linux (WSL) v2. My LaTeX.sublime-build
looks like so in Windows 10:
{
"cmd" : ["bash", "-c", "/usr/local/texlive/2022/bin/x86_64-linux/xelatex ${file_name}"],
"shell" : true,
"working_dir" : "${file_path}",
"selector" : "text.tex.latex"
}
For a successful compilation, any user style called must have the full path to custom styles, e.g. \usepackage{/home/ckunte/texmf/ckunte}
.