53 lines
2.0 KiB
PowerShell
53 lines
2.0 KiB
PowerShell
# Build PRINCIPAL.pdf (elsarticle, xelatex + biblatex/biber).
|
|
# Reusable recipe after the tectonic build was found broken in this env.
|
|
# Usage: powershell -NoProfile -ExecutionPolicy Bypass -File tools\build_pdf.ps1
|
|
$ErrorActionPreference = 'Continue'
|
|
$root = 'c:\Users\fdavalos\OneDrive - up.edu.mx\microtracking\MicrotrackingFer'
|
|
$art = Join-Path $root 'articulo'
|
|
|
|
# Locate a TeX engine (prefer MiKTeX on PATH, else the known install).
|
|
function Resolve-Engine($name) {
|
|
$c = Get-Command $name -ErrorAction SilentlyContinue
|
|
if ($c) { return $c.Source }
|
|
$p = "C:\Users\fdavalos\AppData\Local\Programs\MiKTeX\miktex\bin\x64\$name.exe"
|
|
if (Test-Path $p) { return $p }
|
|
return $null
|
|
}
|
|
$xelatex = Resolve-Engine 'xelatex'
|
|
$biber = Resolve-Engine 'biber'
|
|
if (-not $xelatex) { Write-Error 'xelatex not found. Install MiKTeX or add it to PATH.' }
|
|
Write-Host "xelatex: $xelatex"
|
|
Write-Host "biber : $biber"
|
|
|
|
Set-Location $art
|
|
|
|
# Drop stale auxiliary files (OneDrive can leave locked/stale aux).
|
|
Get-ChildItem -File |
|
|
Where-Object { $_.Name -match '\.(aux|bbl|bblg|bcf|fls|out|toc|nav|snm|run\.xml|xrefs\.tex|makejob)$' } |
|
|
Remove-Item -Force -ErrorAction SilentlyContinue
|
|
|
|
Write-Host '=== PASS 1 (xelatex) ==='
|
|
& $xelatex -interaction=nonstopmode -halt-on-error PRINCIPAL
|
|
Write-Host "PASS1 exit=$LASTEXITCODE bcf=$(Test-Path PRINCIPAL.bcf)"
|
|
|
|
if ((Test-Path PRINCIPAL.bcf) -and $biber) {
|
|
Write-Host '=== BIBER ==='
|
|
& $biber PRINCIPAL
|
|
Write-Host "BIBER exit=$LASTEXITCODE bbl=$(Test-Path PRINCIPAL.bbl)"
|
|
|
|
Write-Host '=== PASS 2 (xelatex) ==='
|
|
& $xelatex -interaction=nonstopmode PRINCIPAL
|
|
Write-Host "PASS2 exit=$LASTEXITCODE"
|
|
|
|
Write-Host '=== PASS 3 (xelatex) ==='
|
|
& $xelatex -interaction=nonstopmode PRINCIPAL
|
|
Write-Host "PASS3 exit=$LASTEXITCODE"
|
|
}
|
|
|
|
if (Test-Path PRINCIPAL.pdf) {
|
|
Write-Host ('PDF mtime: ' + (Get-Item PRINCIPAL.pdf).LastWriteTime)
|
|
} else {
|
|
Write-Host 'PDF NOT PRODUCED'
|
|
}
|
|
Write-Host '=== BUILD DONE ==='
|