Selbstübersetzbare Input-Dateien


Sie sind hier: StartTipps und HinweiseSelbstübersetzbare Input-Dateien


Es ist möglich, Dokumente so zu schreiben, das sie selbst übersetzbar sind, gleichzeitig aber auch als input-Datei verwendbar sind. Dazu muss ein Vorspann und ein Ende gesetzt werden.

Coding-Beispiel

Vorspann

\makeatletter
\@ifundefined{standalonetrue}{\newif\ifstandalone}{}
\@ifundefined{section}{\standalonetrue}{\standalonefalse}
\makeatother
\ifstandalone
\documentclass{scrartcl}
\usepackage{german}
\usepackage[ansinew]{inputenc}
\usepackage{makeidx}\makeindex
\usepackage{hyperref}
\begin{document}
\fi
\makeatletter wird benötigt, weil Makros mit @-genutzt werden, anschliessend wird ein \if definiert, das benötigt wird, um zu erkennen ob das Dokument per \input geladen wurde oder nicht. Dabei wird implizit geprüft, ob das Kommando \section schon definiert wurde. Falls nicht, fehlt ein \documentclass und das Dokument wird stand alone übersetzt.

Ist \ifstandalone wahr, muss ein Dokumentheader eingefügt werden, der der das Übersetzen der Datei erlaubt. Hier müssen sämtliche Pakete geladen werden, benutzte Makros definiert werden...

Dokumentende

\ifstandalone
\bibliographystyle{alpha}
\bibliography{Bib}
\else
\expandafter\endinput
\fi
\end{document}
Ist \ifstandalone wahr, kann man Anweisungen ausführen (im Beispiel ein Literaturverzeichnis eingebunden).

Ist \ifstandalone nicht wahr (\else-Zweig) muss das Dokument beendet werden (\endinput). Das \expandafter sorgt für das korrekte schliessen des \if.

Anschliessend wird das Dokument beendet. Wurde das Dokument mit \input geladen, wird die Stelle nie erreicht (wegen dem \endinput).

Gesamtbeispiel

\makeatletter
\@ifundefined{standalonetrue}{\newif\ifstandalone}{}
\@ifundefined{section}{\standalonetrue}{\standalonefalse}
\makeatother
\ifstandalone
\documentclass{scrartcl}
\usepackage{german}
\usepackage[ansinew]{inputenc}
\usepackage{makeidx}\makeindex
\usepackage{hyperref}
\begin{document}
\fi

Hier kommt Text.
Im übrigen schmeckt Schnitzelmitkartoffelsalat total lecker.

%Dokumentende
\ifstandalone
%Bei direkter Übersetzung sollte gleich noch das Literaturverzeichnis rein.
\bibliographystyle{alpha}
\bibliography{Bib}
\else
\expandafter\endinput
\fi
\end{document}