@@ -2,12 +2,33 @@ package webtex_api
22
33import (
44 "bytes"
5+ "fmt"
56 "log"
67 "os/exec"
8+ "strings"
79)
810
11+ type TexEngine string
12+
13+ const (
14+ TEX_LUALATEX TexEngine = "lualatex"
15+ TEX_XELATEX TexEngine = "xelatex"
16+ )
17+
18+ func GetEngine (engine string ) (TexEngine , error ) {
19+ switch strings .ToLower (engine ) {
20+ case "xelatex" :
21+ return TEX_XELATEX , nil
22+ case "lualatex" :
23+ return TEX_LUALATEX , nil
24+ default :
25+ return "" , fmt .Errorf ("unknown engine '%s'" , engine )
26+ }
27+ }
28+
929// execCommand runs a given command with args in the workdir
1030func execCommand (workdir , command string , arg ... string ) (string , error ) {
31+ log .Println (command , arg )
1132 cmd := exec .Command (command , arg ... )
1233 cmd .Dir = workdir
1334 var b bytes.Buffer
@@ -18,8 +39,8 @@ func execCommand(workdir, command string, arg ...string) (string, error) {
1839}
1940
2041// runTex starts latexmk to generate `render.dvi` from `in.tex` in a given directory
21- func runTex (directory string ) error {
22- output , err := execCommand (directory , "/usr/bin/latexmk" , "-lualatex" , "-norc" , "-dvi" , "-jobname=render" , "in.tex" )
42+ func runTex (directory string , engine TexEngine ) error {
43+ output , err := execCommand (directory , "/usr/bin/latexmk" , fmt . Sprintf ( "-%s" , engine ) , "-norc" , "-dvi" , "-jobname=render" , "in.tex" )
2344 if err != nil {
2445 log .Println ("latexmk failed:" , err )
2546 log .Println (output )
0 commit comments