X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=x%2F.local%2Fbin%2Fpdflatexi;h=a23b435311437cfc6adf67c70aaa3a48dba03757;hb=139a21003b07452b08c8d721d1f9342c5320d10e;hp=015002cee72b8f5b9f3e010d8649ec6b7bf05949;hpb=1a5c1eb8043c60fa632a2f87eeee49a2ff3227e6;p=dotfiles.git diff --git a/x/.local/bin/pdflatexi b/x/.local/bin/pdflatexi index 015002c..a23b435 100755 --- a/x/.local/bin/pdflatexi +++ b/x/.local/bin/pdflatexi @@ -1,22 +1,50 @@ #!/usr/bin/expect +proc tryInstallPackage { name } { + global latexpid oldresult result spawn_id argv + + # Set result + set result $name + send_user "\nTrying to install missing package\n" + # Encountering this result for the second time... + if {$oldresult == $result} { + send_user "$result has been tried twice with no results\n" + send_user "Is this not an image? Aborting...\n" + exit + # Install the package with tlmgri + } { spawn tlmgri $result + interact + # Reset spawn id to kill original pdflatex + set spawn_id $latexpid + close + wait + # Respawn pdflatex + spawn pdflatex {*}$argv + set oldresult $result + exp_continue + } +} + +# Start latex and save the pid to kill it later spawn pdflatex {*}$argv set latexpid $spawn_id + +# Initialize the saved result to compare later set oldresult "" -expect -re "^.*File .(.*). not found.*$|^.*language definition file (.*) was not foun" { - set result $expect_out(1,string) - send_user "\nTrying to install missing package\n" - if {$oldresult == $result} { - send_user "$result has been tried twice with no results\n" - send_user "Is this not an image? Aborting...\n" - exit - } { - spawn tlmgri $result - interact - set spawn_id $latexpid - close - wait - spawn pdflatex {*}$argv - set oldresult $result - exp_continue - } +set result "" + +expect { + # Regular sty file is missing + -re "^.*File .(.*). not found.*$" { + tryInstallPackage $expect_out(1,string) + } -re "^.*language definition file (.*) was not foun" { + # Bibtex ldf file is missing + tryInstallPackage $expect_out(1,string) + } -re "^.*Encoding file .(.*). not found." { + # Font encoding file is missing + tryInstallPackage $expect_out(1,string) + } timeout { + # Timeout + send_user "Compilation timed out???" + exit } +}