пакетный скрипт для pdflatex-makeindex-bibtex, который работает с текущим файлом в notepad

#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 , я думаю, что a GOTO :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