PDF per script (latexmk o.ä.) erstellen und Parameter setzen

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


knox
Forum-Anfänger
Forum-Anfänger
Beiträge: 18
Registriert: Mo 23. Mai 2011, 21:11

PDF per script (latexmk o.ä.) erstellen und Parameter setzen

Beitrag 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

Mykron
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Fr 1. Jun 2012, 12:38

Beitrag 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
Zuletzt geändert von Mykron am Mo 4. Jun 2012, 01:04, insgesamt 1-mal geändert.

Hagbard Celine
Forum-Century
Forum-Century
Beiträge: 152
Registriert: Mi 23. Feb 2011, 22:13
Wohnort: Halle (Saale)

Beitrag 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
\onlinetrue
oder
\onlinefalse
enthalten. Die Datei kannst du ja mit deinem Skript erzeugen bzw. überschreiben. Das sollte recht einfach machbar sein.

Antworten