/posh-tex

PowerShell utilities for working with TeX and friends.

Primary LanguagePowerShellBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

PoShTeX

PowerShell utilities for working with TeX and friends.

Currently experimental, but planned support for the following common yet annoying TeX tasks:

  • Writing installers for TeX and LaTeX packages, Pandoc templates, and LyX layouts.
  • Making ZIP archives for CTAN packages and arXiv papers.

I guess that's about it? Oh, it should also be cross-platform.

Importantly, the following are not goals of PoShTeX, as they are already handled better by other projects:

  • Managing how many times to run BibTeX, LaTeX, etc.
  • Editor integration.
  • Reference management.
  • Obtaining good parameter estimates from data in a paper draft.

Installing

To install released versions of PoShTeX, simply use PowerShellGet (built in to PowerShell for Windows 10, macOS / OS X and Linux; download PackageManagement to use PowerShellGet on Windows 7 and 8.1).

PS> Install-Module -Name posh-tex -Scope CurrentUser

We'll have instructions at some point for how to install development (unreleased) versions.

Using PoShTeX to Write Installers

The following example demonstrates how an installer could be written for {revquantum}.

#region Bootstrap PoShTeX
if (!(Get-Module -ListAvailable -Name posh-tex -ErrorAction SilentlyContinue)) {
    Install-Module posh-tex -Scope CurrentUser
}
Import-Module posh-tex
#endregion

Out-TeXStyle revquantum
Out-TeXStyleDocumentation revquantum

Install-TeXUserResource tex/latex/revquantum revquantum.sty, revquantum.pdf

Install-PandocUserResource templates pandoc/templates/revquantum.latex -ErrorAction Continue

The first few lines install PoShTeX if it is not already available, and should be included in any install script. The remaining lines specify that revquantum.dtx should be compiled into revquantum.sty using the associated revquantum.ins file, that the documentation PDF should be compiled, and that both of these resources should be installed into the current user's TeX root. The installer closes by attempting to also install the associated Pandoc template.

Using PoShTeX to Specify arXiv Manifests

PoShTeX also allows for creating arXiv-ready ZIP files with simple manifest scripts. Since arXiv only allows TeX projects that use folders to be uploaded as a ZIP, this can help authors organize their manuscript projects without sacrificing arXiv support. For instance, the following manifest might be used to produce a ZIP file for a paper on metalearning problems.

#region Bootstrap PoShTeX
if (!(Get-Module -ListAvailable -Name posh-tex -ErrorAction SilentlyContinue)) {
    Install-Module posh-tex -Scope CurrentUser
}
Import-Module posh-tex
#endregion

Export-ArXivArchive @{
    ProjectName = "mlp";
    TeXMain = "mlp.tex";
    AdditionalFiles = @{
        "fig/*.pdf" = $null;
        "revquantum.sty" = $null;
        "quantumarticle.cls" = $null;
    };
    Notebooks = @(
        "nb/paper-figures.ipynb"
    )
}

The resulting ZIP archive will contain all of the following files:

  • mlp.tex
  • mlp.bbl
  • revquantum.sty
  • quantumarticle.cls
  • anc/paper-figures.ipynb
  • fig/`*.pdf

To ensure that everything works correctly, this manifest script will also recompile the manuscript.