Skip to main content

Tool Chain

·893 words·5 mins

PC

Typesetting

Core tool is vscode here are my settings

plugins

Settings

    "macros": {
      "mathField": [
        {
          "command": "type",
          "args": {
            "text": "\\(\\)"
          }
        },
        "cursorLeft",
        "cursorLeft"
      ],
      "mathcField": [
        {
          "command": "type",
          "args": {
            "text": "\\[\\]"
          }
        },
        "cursorLeft",
        "cursorLeft"
      ],
      "mathField_jy": [
        {
          "command": "type",
          "args": {
            "text": "$$"
          }
        },
        "cursorLeft"
      ],
      "mathcField_jy": [
        {
          "command": "type",
          "args": {
            "text": "$$$$"
          }
        },
        "cursorLeft",
        "cursorLeft"
      ],
      "mathField_md": [
        {
          "command": "type",
          "args": {
            "text": "\\\\(\\\\)"
          }
        },
        "cursorLeft",
        "cursorLeft",
        "cursorLeft"
      ],
      "mathcField_md": [
        {
          "command": "type",
          "args": {
            "text": "\\\\[\\\\]"
          }
        },
        "cursorLeft",
        "cursorLeft",
        "cursorLeft"
      ]
    },
    "cSpell.userWords": [
      "amsfonts",
      "amssymb",
      "amsthm",
      "bijectivity",
      "diffeomorphic",
      "diffeomorphism",
      "draculabg",
      "draculafg",
      "homeo",
      "homotopy",
      "htpc",
      "injective",
      "injectivity",
      "Kauffman",
      "Lipschitz",
      "mathbb",
      "mathjax",
      "MCAL",
      "MISRA",
      "OEM",
      "QAC",
      "Reidemeister",
      "reindexing",
      "Simplicial",
      "simplicially",
      "surjective",
      "surjectivity",
      "unoriented",
      "WLOG"
    ],
    "cSpell.checkLimit": 1000,
    "cSpell.minWordLength": 3,
    "cSpell.diagnosticLevel": "Warning",
    "cSpell.checkOnlyEnabledFileTypes": false,
    "cSpell.autoFormatConfigFile": true,
    "cSpell.maxNumberOfProblems": 1000,
    "cSpell.showAutocompleteSuggestions": true,
    "cSpell.suggestionMenuType": "quickFix",
    "cSpell.allowCompoundWords": true,
    "cSpell.patterns": [

    ],
    "cSpell.languageSettings": [
      {
          "languageId": "latex",
          "patterns": [
              {
                  "name": "LaTexMacrosMultiLine",
                  "pattern": "",
                  "description": "Match against all LaTex Macros"
              }
          ]
      }
  ],
    "editor.renderWhitespace": "all",
    "files.trimTrailingWhitespace": true,
    "latex-workshop.intellisense.unimathsymbols.enabled": true,
    "latex-workshop.message.warning.show": false,
    "latex-workshop.latexindent.args": [
      "-c",
      "%DIR%/",
      "%TMPFILE%"
    ],
    "latex-workshop.view.pdf.hand": true,
    "latex-workshop.latex.autoBuild.run": "onSave",
    "latex-workshop.latex.recipe.default": "latexmk (lualatex)",
    "latex-workshop.latex.autoClean.run": "onFailed",
    "latex-workshop.view.pdf.viewer": "tab",
    "latex-workshop.bind.enter.key": false,
    "latex-workshop.hover.preview.scale": 0.5,
    "latex-workshop.intellisense.update.aggressive.enabled": true,
    "latex-workshop.synctex.afterBuild.enabled": true,
    "latex-workshop.latex.recipes": [

    {
      "name": "latexmk 🔃",
      "tools": [
        "latexmk"
      ]
    },
    {
      "name": "latexmk (latexmkrc)",
      "tools": [
        "latexmk_rconly"
      ]
    },
    {
      "name": "latexmk (lualatex)",
      "tools": [
        "lualatexmk"
      ]
    },
    {
      "name": "pdflatex ➞ bibtex ➞ pdflatex × 2",
      "tools": [
        "pdflatex",
        "bibtex",
        "pdflatex",
        "pdflatex"
      ]
    },
    {
      "name": "Compile Rnw files",
      "tools": [
        "rnw2tex",
        "latexmk"
      ]
    },
    {
      "name": "Compile Jnw files",
      "tools": [
        "jnw2tex",
        "latexmk"
      ]
    },
    {
      "name": "tectonic",
      "tools": [
        "tectonic"
      ]
    }
  ],
  "latex-workshop.latex.tools": [

    {
      "name": "latexmk",
      "command": "latexmk",
      "args": [
        "-synctex=1",
        "-shell-escape",
        "-interaction=nonstopmode",
        "-file-line-error",
        "-pdf",
        "-outdir=%OUTDIR%",
        "%DOC%"
      ],
      "env": {}
    },
    {
      "name": "lualatexmk",
      "command": "latexmk",
      "args": [
        "-synctex=1",
        "-interaction=nonstopmode",
        "-file-line-error",
        "-lualatex",
        "-outdir=%OUTDIR%",
        "%DOC%"
      ],
      "env": {}
    },
    {
      "name": "latexmk_rconly",
      "command": "latexmk",
      "args": [
        "%DOC%"
      ],
      "env": {}
    },
    {
      "name": "pdflatex",
      "command": "pdflatex",
      "args": [
        "-synctex=1",
        "-shell-escape",
        "-interaction=nonstopmode",
        "-file-line-error",
        "%DOC%"
      ],
      "env": {}
    },
    {
      "name": "bibtex",
      "command": "bibtex",
      "args": [
        "%DOCFILE%"
      ],
      "env": {}
    },
    {
      "name": "rnw2tex",
      "command": "Rscript",
      "args": [
        "-e",
        "knitr::opts_knit$set(concordance = TRUE); knitr::knit('%DOCFILE_EXT%')"
      ],
      "env": {}
    },
    {
      "name": "jnw2tex",
      "command": "julia",
      "args": [
        "-e",
        "using Weave; weave(\"%DOC_EXT%\", doctype=\"tex\")"
      ],
      "env": {}
    },
    {
      "name": "jnw2texmintex",
      "command": "julia",
      "args": [
        "-e",
        "using Weave; weave(\"%DOC_EXT%\", doctype=\"texminted\")"
      ],
      "env": {}
    },
    {
      "name": "tectonic",
      "command": "tectonic",
      "args": [
        "--synctex",
        "--keep-logs",
        "%DOC%.tex"
      ],
      "env": {}
    }
  ],

(Optional) Autobuild on push to trunk github action

name: publish pdf

on:
  push:
    branches:
      - main  # Set a branch to deploy

jobs:
  deploy:
      runs-on: ubuntu-latest
      steps:
        - name: Set up Git repository
          uses: actions/checkout@v2

        - name: Compile LaTeX document
          uses: xu-cheng/latex-action@v2
          with:
            latexmk_use_lualatex: true
            root_file: "*.tex"
            glob_root_file: true

        - name: Bump version and push tag
          id: tag_version
          uses: mathieudutour/[email protected]
          with:
            github_token: ${{ secrets.GITHUB_TOKEN }}

        - name: Create a GitHub release
          uses: ncipollo/release-action@v1
          with:
            tag: ${{ steps.tag_version.outputs.new_tag }}
            name: Release ${{ steps.tag_version.outputs.new_tag }}
            body: ${{ steps.tag_version.outputs.changelog }}

        - name: Release
          uses: softprops/action-gh-release@v1
          with:
            tag_name: ${{ steps.tag_version.outputs.new_tag }}
            files: |
              *.pdf
              *.tex              

Development

Package manager

Using a package manager makes life a little easier here’s what I use on windows Choco.

Version Control

choco install git.install -y

For personal and academic work I use git with github for a production environment. I also maintain a local gogs server for local mirrors.

I interact with local repositories with the vscode vs plugin. Rarely I use the comand line if vscode can’t do what I need. I’ve found gitkraken is a very accessable tool for new git users.

For professional work I use SVN.

C/C++

Code editor

I use vscode for editing code.

Debugger

I use visual studio 2022 for debugging.

Compiler and build

choco  install ninja -y
choco  install cmake -y
choco  install llvm -y

Set the following:

CC="C:\Program Files\LLVM\bin\clang.exe"
CXX="C:\Program Files\LLVM\bin\clang++.exe"

Documentation engine/s

Doxygen is basically the only option but I present the results with sphinx and breathe info here

choco  install doxygen.install -y
choco install sphinx -y
pip install sphinx_rtd_theme
pip install breathe

Testing

I use pytest tests run by cmake as ctest.

pip install pytest

Python

I use the latest lts python version. I use vscode as an editor and debugger. I use black for code formatting and flake8 for style checking.

choco install python -y
pip install flake8 flake8-black scipy numpy pytest pytest-flake8 pytest-html pytest-metadata pytest-pylint pytest-reportlog flake8-docstrings flake8-html

Academic Stuff

Citations

I use zotero for citation and pdf management between my ipad and windows pc.

Notes

I take notes with obsidian.

Presentations

Reveal.js

Site

Decktape

Github

decktape -s 1920x1080 <url for presentation> presentation.pdf

Ipad

Zotero

Site

Obsidian

Site

Goodnotes

Site

Vectornator

Site

Concepts

Site

Anki

Site

Quick Install List

choco  install ninja -y
choco  install cmake -y
choco  install llvm -y
choco  install doxygen.install -y
choco  install sphinx -y

pip install sphinx_rtd_theme
pip install breathe
pip install pytest
pip install flake8 flake8-black scipy numpy pytest pytest-flake8 pytest-html pytest-metadata pytest-pylint pytest-reportlog flake8-docstrings flake8-html

For Tanglenomicon

We’re still in a design phase here’s a list of DB options we’re considering:

choco install mongodb
Joe Starr
Author
Joe Starr
Knot theorist with a background in automotive software engineering.