Mit `filecontents` zu arbeiten hätte an der Stelle das Problem, dass `filecontents` die Datei am Ende der Umgebung immer schließt. Man müsste also jeden externen Text in eine eigene Datei schreiben und am Ende des Dokuments dafür sorgen, dass `extra1.pdf` aus all diesen Dateien erzeugt wird. Das halte ich für keine wirklich sinnvolle Idee.
Es gibt aber Pakete wie `fancyvrb`, die es ermöglichen `verbatim`, also ohne Expansion in eine Datei zu schreiben. Damit kann man recht einfach, Text in einer externen Datei sammeln.
Man kann sich unter Verwendung von `e-TeX`-Features, die in zwischen Standard für LaTeX sind, aber die tatsächlich benötigte Funktionalität auch recht einfach selbst basteln.
Den LaTeX-Lauf der so erzeugten Datei kann man dann beispielsweise per `\write18`-Feature (auch bekannt als *shell-escapes*) ganz am Ende des Hauptdokuments durchführen. Dafür wird dann beim LaTeX-Aufruf des Hauptdokuments Option `-shell-escape` benötigt.
\documentclass{scrreprt}
\usepackage{selinput}
\documentclass{scrreprt}
\usepackage{shellesc}
\usepackage{selinput}
\SelectInputMappings{adieresis={ä}, germandbls={ß}}
germandbls={ß}}
\usepackage[ngerman]{babel}
\newwrite\extrai% Neues Ausgabehandle (ACHTUNG: Anzahl streng begrenzt!)
\immediate\openout\extrai extra1.tex% Datei direkt öffnen
\immediate\write\extrai{% Präambel schreiben
\unexpanded{%
\documentclass{scrreprt}^^J%
\usepackage{selinput}^^J%
\SelectInputMappings{adieresis={ä}, germandbls={ß}}^^J%
\usepackage[ngerman]{babel}^^J%
% ggf. Präambel erweitern
\begin{document}
}%
}
\AfterReadingMainAux{% Am Ende
\immediate\write\extrai{\unexpanded{\end{document}}}% Datei beenden.
\immediate\closeout\extrai% Datei schließen
\immediate\write18{pdflatex \ShellEscape{pdflatex extra1.tex}% pdflatex-Aufrufen ggf. wiederholen
}
\newcommand{\verbatimwriteextrai}[1]{\write\extrai{\unexpanded{#1}}}
\newcommand{\verbatimwriteextraipar}[1]{\verbatimwriteextrai{#1\par}}
%=========
\begin{document}
%=========
Hier ist ein Satz. \par
\verbatimwriteextraipar{Schreibe diesen Text in die äxterne Datei extra1.pdf}
Hier ist wieder ein Satz. \par
\verbatimwriteextraipar{Schreibe diesen Text auch in die Datei extra1.pdf dazu.}
%=========
\end{document}
%=========
Das Schreiben über einfache eigene Befehle zu machen, hat den Vorteil, dass man sich natürlich auch eine expandierende Anweisung definieren kann:
\newcommand{\writeextrai}[2][]{\csname protected@write\endcsname\extrai{#1}{#2}}
\newcommand{\writeextraipar}[2][]{\writeextrai[{\let\par\relax#1}]{#2\par}}
Damit kann man dann auch Makros beim Schreiben expandieren lassen, etwa:
\writeextraipar{Diese Zeile stand auf Seite \thepage, wobei die
Information mit \protect\texttt{\protect\string\protect\thepage}
generiert wurde.}
oder mit gleichem Ergebnis aber ohne `\protect`:
\writeextrai{Diese Zeile stand auf Seite \thepage,}
\verbatimwriteextraipar{wobei die Information mit \texttt{\string\thepage}
generiert wurde.}
Natürlich kann man statt über `\write18` `\ShellEscape` den Zusatzaufruf auch durch einen externen Prozessor wie `arara` erledigen lassen.