
В настоящее время я пытаюсь написать свой собственный buildscript, так как perl в данный момент не вариант (так что никаких makeglossaries) для создания нескольких глоссариев. Когда я пытаюсь упаковать все в один пакетный файл, похоже, что makeindex не вызывается (файлы gls не создаются).
не работает tex.bat:
@echo off
set document=%~n1
set miktexpath=C:/bin/programme/miktex/miktex/bin
start /wait %miktexpath%/pdflatex %document%.tex ^
&& ^
%miktexpath%/makeindex -s %document%.ist -t %document%.glg -o %document%.gls %document%.glo ^
&& ^
%miktexpath%/makeindex -s %document%.ist -t %document%.idx.glg -o %document%.idx.gls %document%.idx.glo ^
&& ^
%miktexpath%/pdflatex %document%.tex ^
&& ^
%miktexpath%/pdflatex %document%.tex ^
&& ^
%miktexpath%/SumatraPDF -reuse-instance %document%.pdf
Если я помещаю каждый makeindex-call в несколько пакетных файлов, это работает. Но это более уродливо, чем уже есть.
рабочий tex.bat:
@echo off
set document=%~n1
set miktexpath=C:/bin/programme/miktex/miktex/bin
start /wait %miktexpath%/pdflatex %document%.tex ^
&& ^
call ./gls.bat %document% ^
&& ^
call ./gls_idx.bat %document% ^
&& ^
%miktexpath%/pdflatex %document%.tex ^
&& ^
%miktexpath%/pdflatex %document%.tex ^
&& ^
%miktexpath%/SumatraPDF -reuse-instance %document%.pdf
gls.bat:
@echo off
set document=%~n1
set miktexpath=C:/bin/programme/miktex/miktex/bin
%miktexpath%/makeindex -s %document%.ist -t %document%.glg -o %document%.gls %document%.glo
gls_idx.bat:
@echo off
set document=%~n1
set miktexpath=C:/bin/programme/miktex/miktex/bin
%miktexpath%/makeindex -s %document%.ist -t %document%.idx.glg -o %document%.idx.gls %document%.idx.glo
Почему это так и как написать единый скрипт сборки?
Еще один момент: makeindex
также отказывается создавать файлы, когда я использую расширения файлов, отличные от .gls
/ .glo
и т.д.
решение1
Джозеф Райт показал мневот его метод, который работает так, как и должен:
@echo off
set document=%~n1
set miktexpath=C:/bin/programme/miktex/miktex/bin
%miktexpath%/pdflatex -draftmode -interaction=batchmode %document%.tex
if errorlevel 1 (
echo ! Compilation failed
) else (
%miktexpath%/makeindex -s %document%.ist -t %document%.glg -o %document%.gls %document%.glo
%miktexpath%/makeindex -s %document%.ist -t %document%.idx.glg -o %document%.idx.gls %document%.idx.glo
%miktexpath%/pdflatex -draftmode -interaction=batchmode %document%.tex
%miktexpath%/pdflatex -draftmode -interaction=batchmode %document%.tex
%miktexpath%/SumatraPDF -reuse-instance %document%.pdf
)