Seite 1 von 1
PDF per script (latexmk o.ä.) erstellen und Parameter setzen
Verfasst: So 31. Jul 2011, 23:53
von knox
Hallo zusammen,
ich nutz in meinem Tex-Dokument if-Schalter um diverse Einstellungen zu setzen (siehe
hier).
Nun würde ich den Build-Prozess gerne über ein Script anstoßen und hierbei die entsprechenden Schalter setzen. Ob hierbei Batch, Perl oder latexmk benutzt wird ist mir egal. Ich habe es bislang mit latexmk probiert, doch habe ich außer dem Löschen der temp-files und dem "normalen" Erstellen nichts brauchbares zustande gebracht.
% latexmk -c # remove .aux, .log, .bbl, .blg, .dep, .dvi, .pdf, .ps & .bbl files
% latexmk thesis # run latex enough times to resolve cross-references
Hat von euch Jemand Erfahrung mit latexmk oder anderen Möglichkeiten den latex-lauf für verschiedene Ausgaben per Shortcut anzustoßen gemacht?
Viele Grüße & besten Dank!
Christian
Verfasst: Fr 1. Jun 2012, 12:54
von Mykron
ich rufe in meinem TeXnicCeter Profil eine batchdatei auf per:
Pfad:
D:\Progs\office\LatexScript\run.bat
Argumente:
"%dm" "%tm" pdf biber
run.bat:
@echo off
rem Version 1.3 (15.05.2012)
rem Script zum kompilieren von LaTeX- Projekten (kompatible mit TeXnicCenter)
rem fuer TeXnicCenter folgende Argumente im Ausgabeprofil konfigurueren:
rem "%dm" "%tm" pdf,ps,all,pspdf,dvi biber,bibtex
rem
rem man erhält folgende Dateien
rem name.dvi standard latex output (device independend)
rem name.ps.gz gzip komprimiertes ps (kann direkt in GhostView geöffnet werden)
rem nur sinnvoll, wenn Bilder (auch) als eps/ps existieren
rem name.pdf Standard pdf Datei
rem name_web.pdf für Internet optminierte pdf Datei (Anzeige wärend des Ladens)
rem name_comment.pdf zum Kommentieren freigeschaltete pdf Datei
rem name_ps.pdf aus ps erstellte pdf datei (meist kleinere Dateigröße)
rem name_ps_web.pdf fürs web
rem name_ps_comment.pdf zum kommentieren
rem
rem ToDo: glossar
:: Pfad zur tex-Datei
cd %1
:: Name der tex datei ohne Endung
SET file=%2
:: art der literaturDB behandlung (biber, bibtex)
SET ref=%3
:: art der Ausgabe, ps, pdf, etc. s.o.
SET target=%4
SET datum=%date:~-4%%date:~-7,2%%date:~-10,2%_%time:~-11,2%%time:~-8,2%
rem %time:~-5,2%
:: Perl
SET perl_path=d:\Progs\programming\strawberry-perl
SET path=%path%;%perl_path%\site\bin;%perl_path%\perl\bin;%perl_path%\c\bin
SET TERM=dumb
SET gs="c:\Program Files\gs\gs8.71\bin\gswin32c.exe"
SET packer=D:\Programme\packer\Gzip\gzip.exe
rem SET AREnable=D:\Programme\office\AreEnable\AREnable.exe
SET TEXINPUTS=.\images;%TEXINPUTS%
::SET path=%path%;c:\Program Files\MiKTeX2.9\miktex\bin\
:: synctex=1 mit gz komprimierung, 0 ohne anwendung, -1 ohne gz komprimierung
SET pdf_opt=-interaction=nonstopmode --synctex=1
SET ps_opt=--src -interaction=nonstopmode
SET gs_opt=-sPAPERSIZE=a4 -dPDFA -dSAFER -dBATCH -dNOPAUSE -dPDFSETTINGS=/printer
SET gs_opt=%gs_opt% -sDEVICE=pdfwrite -sOutputFile="%file%_ps.pdf" -c save pop -f
:: löschen aller automatisch erzugten Dateien
echo =============================================
echo = Löschen alle neu zu erstellenden Dateien =
echo =============================================
del /S *.aux >NUL
del /S %2.acn >NUL
del /S %2.acr >NUL
del /S %2.alg >NUL
del /S %2.bbl >NUL
del /S %2.bcf >NUL
del /S %2.blg >NUL
del /S %2.glg >NUL
del /S %2.glo >NUL
del /S %2.gls >NUL
del /S %2.ist >NUL
del /S %2.lof >NUL
del /S *.log >NUL
del /S %2.lot >NUL
del /S %2.nlg >NUL
del /S %2.nog >NUL
del /S %2.noi >NUL
del /S %2.out >NUL
del /S %2.run.xml >NUL
del /S %2.toc >NUL
del /S %2.synctex.gz >NUL
::del /S *.blg >NUL
::del /S *.bmt >NUL
::del /S *.brf >NUL
::del /S *.idx >NUL
echo.
echo =================
echo = Latex Vorlauf =
echo =================
latex %ps_opt% "%file%.tex" >NUL
latex %ps_opt% "%file%.tex" >NUL
echo.
IF "%ref%" == "biber" GOTO biber
IF "%ref%" == "bibtex" GOTO bibtex
:biber
echo ===============
echo = Biber lauf =
echo ===============
biber "%file%"
echo.
goto index
:bibtex
echo ===============
echo = BibTex lauf =
echo ===============
bibtex "%file%"
echo.
:index
echo =================================
echo = Stichwortverzeichnis erzeugen =
echo =================================
makeindex "%file%"
echo.
echo ====================
echo = Glossar erzeugen =
echo ====================
makeglossaries %file%
latex %ps_opt% "%file%.tex" >NUL
makeglossaries %file%
echo.
echo ==================
echo = Latex Nachlauf =
echo ==================
rem zum setzen des Glossars und des Indexes
latex %ps_opt% "%file%.tex" >NUL
IF "%target%" == "pdf" GOTO pdf
IF "%target%" == "ps" GOTO ps
IF "%target%" == "pspdf" GOTO pspdf
IF "%target%" == "dvi" GOTO dvi
:PDF
echo.
echo ================
echo = PDF erzeugen =
echo ================
rem 2x für korrekte pagelabels nach latex (kein pdflatex) lauf
pdflatex %pdf_opt% "%file%.tex" >NUL
pdflatex %pdf_opt% "%file%.tex"
echo.
pdfopt "%file%.pdf" "%file%_web.pdf"
rem %AREnable% "%file%.pdf" -o "%file%_comment.pdf"
IF "%target%" == "all" GOTO ps
goto ende
:PS
echo.
echo ===============
echo = PS erzeugen =
echo ===============
latex %ps_opt% "%file%.tex"
echo.
dvips "%file%.dvi"
%packer% -vf --best "%file%.ps"
IF "%target%" == "all" GOTO pspdf
goto ende
:PSPDF
echo.
echo =======================
echo = PDF aus PS erzeugen =
echo =======================
latex %ps_opt% "%file%.tex"
echo.
dvips -P pdf "%file%.dvi" -o "%file%_pdf.ps"
%gs% %gs_opt% "%file%_pdf.ps"
pdfopt "%file%_ps.pdf" "%file%_ps_web.pdf"
%packer% -vf --best "%file%_pdf.ps"
rem %AREnable% "%file%_ps.pdf" -o "%file%_ps_comment.pdf"
goto ende
:DVI
echo.
echo ================
echo = DVI erzeugen =
echo ================
latex %pdf_opt% "%file%.tex"
goto ende
:ENDE
copy %file%.pdf %file%_%datum%.pdf
ich hoffe, ich konnte helfen, auch wenns schon ein bissle her ist.
Gruß, Mykron
Verfasst: Sa 2. Jun 2012, 22:52
von Hagbard Celine
Ich habe zwar keine Ahnung von latexmk, aber eine Idee, wie es recht einfach funktionieren kann. Du könntest in deiner Präambel vor der Schalterabfrage per \input eine Datei einbinden, in der nur der jeweilige Schalter gesetzt wird, also muss sie nur
oder
enthalten. Die Datei kannst du ja mit deinem Skript erzeugen bzw. überschreiben. Das sollte recht einfach machbar sein.