ghci4luatex : a GHCi session in LuaTeX
 
  
  
  
 
Run a GHCi session within a LaTeX document :
- The ghcienvironment evaluates Haskell code without printing anything :
\begin{ghci}
x :: Int
x = 4
y :: Int
y = 5
\end{ghci}
- The haskcommand evaluates any GHCi command and prints in Haskell what GHCi printed :
The sum of $x$ and $y$ when $x = \hask{x}$ and $y = \hask{y}$ is $\hask{x + y}$.
Documentation
You can find the full pdf documentation in here
Quick start
- 
Install haskellandcabalorstack
 
- 
Install ghci4luatexby running either
 
cabal install ghci4luatex
or
stack install ghci4luatex
- Copy ghci.styanddkjson.luain the folder containing amain.texfile with the following content :
\documentclass{article}
\usepackage{ghci}
\begin{document}
\begin{ghci}
x :: Int
x = 5
y :: Int
y = 6
\end{ghci}
The sum of $x$ and $y$ when $x = \hask{x}$ and $y = \hask{y}$ is $\hask{x + y}$.
\end{document}
- Within that folder, run the ghci4luatexserver :
ghci4luatex
- Open another shell and compile with luatex:
latexmk -shell-escape -lualatex main.tex
Use any Haskell library
HaTeX
\begin{ghci}
:set -XOverloadedStrings
\end{ghci}
\begin{ghci}
import Text.LaTeX
import Text.LaTeX.Base.Pretty
printTex = putStrLn . prettyLaTeX
\end{ghci}
\hask{printTex (section "A section using HaTeX")}
Diagrams
\usepackage{svg}
\begin{ghci}
{-# LANGUAGE NoMonomorphismRestriction #-}
{-# LANGUAGE FlexibleContexts          #-}
{-# LANGUAGE TypeFamilies              #-}
import Diagrams.Prelude hiding (section)
import Diagrams.Backend.SVG
myDia = circle 1 # fc green
\end{ghci}
\begin{ghci}
  renderSVG "myDia.svg" (dims2D 400 300) myDia
\end{ghci}
\begin{figure}[h]
  \centering
  \includesvg[width=0.2\textwidth]{myDia}
  \caption{A circle using Diagrams}
\end{figure}
Workflow with lhs2tex in Visual Studio Code with LaTeX workshop
In this repository, you will find an example that contains a Makefile.
You can take inspiration from this to use make in a LateX Workshop receipe :
- Install the LaTeX Workshop extension.
- In settings.json, add the following
"latex-workshop.latex.recipes": [
        {
            "name": "ghci4luatex",
            "tools": [
                "mklatex"
            ]
        }
    ],
"latex-workshop.latex.outDir": "./build/",
"latex-workshop.latex.tools": [
        {
            "name": "mklatex",
            "command": "make",
            "args": [
                "latex",
                "main=%DOCFILE%"
            ],
            "env": {}
        }
    ],