\documentclass[ngerman]{dtk}
\usepackage{hvextern}

\begin{document}
\title[Externe Dokumente erzeugen]{Externe Dokumente aus \LaTeX\ heraus definieren und das Ergebnis einbinden, }
\Author{Herbert}{Voß}{\Email{herbert@dante.de}}
\maketitle

\section{Syntax}

\begin{verbatim}
\usepackage{hvextern}
\end{verbatim}

Das Paket wird standardmäßig bei Verwendung der Klasse \texttt{dtk} geladen.
Externe \LaTeX-, \ConTeXt-, \ldots\ Dokumente lassen sich mit der folgenden
Umgebung erzeugen:



\begin{verbatim}
\begin{externalDocument}[<optionale Argumente>]{<externer Dateiname ohne .tex>}
...
Quellcode
...
\end{externalDocument}
\end{verbatim}

Das Hauptdocument \emph{muss} mit der Option \texttt{-shell-escape} aufgerufen werden.


\section{Beispiele}

\begin{minipage}{.3\linewidth}
\begin{externalDocument}[grfOptions={width=0.5\linewidth},compiler=pdflatex,force,cleanup]{Roemer1}
\documentclass{standalone}
\usepackage[T1]{fontenc}
\usepackage{libertine}
\usepackage[linguistics]{forest}
\forestapplylibrarydefaults{linguistics, edges}
\begin{document}
\begin{forest}
[VP
  [DP]
  [V’
   [V]
  [DP]
  ]
]
\end{forest}
\end{document}
\end{externalDocument}
\end{minipage} 
\begin{minipage}{.3\linewidth}
\begin{lstlisting}
\begin{forest}
[VP
  [DP]
  [V’
   [V]
  [DP]
  ]
]
\end{forest}
\end{lstlisting}
\end{minipage} \quad oder \quad
\begin{minipage}{.2\linewidth}
\begin{lstlisting}
\Forest*{
[VP
  [DP]
  [V’
   [V]
  [DP]
  ]
]
}
\end{lstlisting}
\end{minipage}

\end{document}



\begin{minipage}{0.35\textwidth}
\begin{externalDocument}[grfOptions={width=\linewidth},compiler=xelatex,
  crop,cleanup,force]{Senger3}
\documentclass{article}
\usepackage{tikz}
\usepackage[hks,pantone,xcolor]{xespotcolor}
\pagestyle{empty}
\begin{document}
\SetPageColorSpace{HKS}
\definecolor{HYellow}{spotcolor}{HKS05N,0.5}
\definecolor{HRed}{spotcolor}{HKS14N,0.5}
\definecolor{HBlue}{spotcolor}{HKS38N,0.5}
\begin{tikzpicture}[scale=0.7,fill opacity=0.7]
    \fill[HYellow]   ( 90:1.2) circle (2);
    \fill[HRed] (210:1.2) circle (2);
    \fill[HBlue]  (330:1.2) circle (2);
 \node at ( 90:2) {Typography};
\node at ( 210:2) {Design};
\node at ( 330:2) {Coding};
\node {\LaTeX};
\end{tikzpicture}
\end{document}
\end{externalDocument}
\end{minipage}
\hfill
\begin{minipage}{0.64\textwidth}
\begin{lstlisting}
\SetPageColorSpace{HKS}
\definecolor{HYellow}{spotcolor}{HKS05N,0.5}
\definecolor{HRed}{spotcolor}{HKS14N,0.5}
\definecolor{HBlue}{spotcolor}{HKS38N,0.5}
\begin{tikzpicture}[scale=0.7,fill opacity=0.7]
\fill[HYellow]( 90:1.2) circle (2);
\fill[HRed]   (210:1.2) circle (2);
\fill[HBlue]  (330:1.2) circle (2);
\node at ( 90:2)  {Typography};
\node at ( 210:2) {Design};
\node at ( 330:2) {Coding};
\node {\LaTeX};
\end{tikzpicture}
\end{lstlisting}
\end{minipage}


\section{Optionale Argumente}


\begin{verbatim}
  code=false,%          show Source Code
  crop=false,%		erzeugte PDF "croppen"
  compiler=pdflatex,%	zu verwendener Compiler
  grfOptions={},%	Optionen der einzubindenden Grafik
  lstOptions={},%	Optionen für das Listing
  includegraphic=true,% Grafik einbinden oder User überlassen
  runs=1,%		Anzahl Compiler-Durchläufe
  runsequence={},%	Im Moment nicht aktiv
  biber=false,%		Biber laufen lassen?
  force=false,%		Compiler, auch wenn PDF existiert?
  frame=false,%		keinen Rahmen um Abbildung
  float=false,%		nicht als Gleitumgebung
  caption=,%	        keine Caption
  label=,%		kein Label
  pages=1,%		welche Seiten auszugeben sind
  docType=latex,%	LaTeX example Code
\end{verbatim}

\begin{externalDocument}[
  grfOptions={width=0.48\linewidth},
  pages={1,3},
  frame,compiler=pdflatex,
%  crop,
  force,runs=2,code,docType=latex,
  frame,
  lstOptions={columns=fixed}]{Schubert-A}
%StartVisiblePreamble
\documentclass[chapterprefix=on,parskip=half-,DIV=12,fontsize=12pt]{scrbook}
\DeclareNewSectionCommand[
  style=section,
  level=4,
  beforeskip=-3.25ex plus -1ex minus -.2ex,
  afterskip=1.5ex plus .2ex,
  font=\normalsize,
  indent=0pt,
  counterwithin=subsubsection
]{subsubsubsection}
\RedeclareSectionCommand[
  level=5,
  toclevel=5,
  tocindent=13em,
  tocnumwidth=5.9em,
  counterwithin=subsubsubsection
]{paragraph}
\RedeclareSectionCommand[
  level=6,
  toclevel=6,
  tocindent=15em,
  tocnumwidth=6.8em
]{subparagraph}
\setcounter{secnumdepth}{\subsubsubsectionnumdepth}
\setcounter{tocdepth}{\subsubsubsectiontocdepth}
%StopVisiblePreamble
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{libertine}
\usepackage{blindtext}
\begin{document}
\tableofcontents
\chapter{Einführung}
\section{Ein Abschnitt}
\subsection{Ein Unterabschnitt}
\subsubsection{Ein Unter-Unterabschnitt}
\subsubsubsection{Ein Unter-Unter-Unterabschnitt}
\paragraph{Der normale Paragraph}
\blindtext
\subparagraph{Der normale Unterparagraph}
\blindtext
\blinddocument
\end{document}
\end{externalDocument}


\section{Ausgabe des Quellcodes}
Die Ausgabe des Quellcodes erzeugt im Allgemeinen partiell. Die beiden Marker

\begin{verbatim}
[...]
%StartVisiblePreamble
[... auszugebene Präambelteil]
%StopVisiblePreamble
[...]
\end{verbatim}

begrenzen den Teil der ausgegeben werden soll. Aus dem Textkörper wird alles
zwischen \verb|\begin{document}| und \verb|\end{document}| ausgegeben.

\end{document}


