#batch-file #latex #notepad #bibtex
#пакетный файл #Латекс #notepad #bibtex
Вопрос:
Я написал пакетный файл, который я использую для создания файла, содержащего сокращения и ссылки из файла latex. Это работает очень хорошо. Я использую это из меню запуска notepad . Моя проблема в том, что мне приходится каждый раз менять имя файла из пакетного файла. Я хотел бы создать универсальный файл, который может работать с любым файлом.
вот мой рабочий скрипт
:: Called from Notepad Run
:: [path_to_bat_file] "$(CURRENT_DIRECTORY)" "$(NAME_PART)"
:: Change Drive and to File Directory
%~d1
cd %1
:: Run Cleanup
call:cleanup
tskill acrobat
pdflatex thesis.tex
bibtex thesis
pdflatex thesis.tex
pdflatex thesis.tex
makeindex.exe thesis.nlo -s nomencl.ist -o thesis.nls
pdflatex thesis.tex
START "" thesis.pdf
:cleanup
:: del *.log
del *.dvi
del *.aux
del *.bbl
del *.blg
del *.brf
del *.out
goto:eof
и вот моя попытка
:: Called from Notepad Run
:: [path_to_bat_file] "$(CURRENT_DIRECTORY)" "$(NAME_PART)"
:: Change Drive and to File Directory
%~d1
cd %1
:: Run Cleanup
call:cleanup
tskill acrobat
pdflatex %2
bibtex thesis
pdflatex %2
pdflatex %2
makeindex.exe thesis.nlo -s nomencl.ist -o thesis.nls
pdflatex %2
START "" %2.pdf
:cleanup
:: del *.log
del *.dvi
del *.aux
del *.bbl
del *.blg
del *.brf
del *.out
goto:eof
но, как вы можете видеть, есть проблема с bibtex и makeindex.exe командные строки, поскольку расширение не должно предоставляться bibtex, и поэтому %2, который ссылается на текущий открытый файл в notepad , не будет работать. Я также не знаю, как указать global .nlo и .nls, чтобы mnakeindex мог найти правильные имена файлов, соответствующие имени файла tex.
Я делаю это с помощью пакета из notepad , потому что мне не удалось сгенерировать номенклатуру с помощью textworks!!
Спасибо за любую помощь
Оказывается, что замена всех случаев thesis
в пакетном файле на %2
самом деле работает. Наверное, я спросил слишком рано, но если у кого-то есть подобная проблема, вот решение:
:: Called from Notepad Run
:: [path_to_bat_file] "$(CURRENT_DIRECTORY)" "$(NAME_PART)"
:: Change Drive and to File Directory
%~d1
cd %1
:: Run Cleanup
call:cleanup
tskill acrobat
pdflatex %2.tex
bibtex %2
pdflatex %2.tex
pdflatex %2.tex
makeindex.exe %2.nlo -s nomencl.ist -o %2.nls
pdflatex %2.tex
START "" %2.pdf
:cleanup
:: del *.log
del *.dvi
del *.aux
del *.bbl
del *.blg
del *.brf
del *.out
goto:eof
Комментарии:
1. Пожалуйста, опубликуйте свое решение в качестве ответа на ваш вопрос, а не включайте его в вопрос.
2. Пара комментариев. Вы можете изменить две верхние команды только на
PUSHD %1
. И, послеSTART
и перед:cleanup
, я думаю, что aGOTO :eof
отсутствует; если вы не хотите снова запустить очистку, в этом случае я бы добавил второйCALL :cleanup
иGOTO :eof
.
Ответ №1:
Я понимаю, что у вас уже есть решение, но есть другой способ.
Просто используйте команду «базовое имя», чтобы удалить окончание.
Включить строку
filebase=$(basename $2 .pdf)
в вашем пакетном файле, а затем в «файловой базе» будет «тезис», даже если вы введете в качестве входных данных «тезис.pdf» (замените $2
соответствующим образом).
Ответ №2:
:: Called from Notepad Run
:: [path_to_bat_file] "$(CURRENT_DIRECTORY)" "$(NAME_PART)"
:: Change Drive and to File Directory
PUSHD %1
:: Run Cleanup
call:cleanup
tskill acrobat
pdflatex %2.tex
bibtex %2
pdflatex %2.tex
pdflatex %2.tex
makeindex.exe %2.nlo -s nomencl.ist -o %2.nls
pdflatex %2.tex
START "" %2.pdf
call:cleanup
goto:eof
:cleanup
:: del *.log
del *.dvi
del *.aux
del *.bbl
del *.blg
del *.brf
del *.out
goto:eof