%% 
%%  Ein Beispiel der DANTE-Edition
%%  
%%  1. Auflage
%% 
%% 
%%  Copyright (C) 2013 Herbert Voss
%% 
%%  It may be distributed and/or modified under the conditions
%%  of the LaTeX Project Public License, either version 1.3
%%  of this license or (at your option) any later version.
%% 
%%  See http://www.latex-project.org/lppl.txt for details.
%% 
%% 
%% ==== 
% Show page(s) 1
%% 
%% 
\documentclass[]{exaarticle}
\pagestyle{empty}
\setlength\textwidth{352.81416pt}
\setlength\parindent{0pt}
%StartShownPreambleCommands
\usepackage{luacode}
\usepackage{libertine}
\begin{luacode*}
function readbuf( buf )
  mybuf = mybuf .. buf .. "\n"
end
function startrecording()
  mybuf = ""
  luatexbase.add_to_callback('process_input_buffer', readbuf, 'readbuf')
end
function stoprecording()
  luatexbase.remove_from_callback('process_input_buffer', 'readbuf')
  buf_without_end_log = mybuf:gsub("\\end{recorder}\n","")
  print(string.format("Lua: %q", buf_without_end_log)) -- Ausgabe Logfile
  luaBuffer=mybuf:gsub("\\end{recorder}","")             -- Ausgabe Dokument
end
\end{luacode*}
\newcommand\printBuffer{\directlua{tex.print(string.format(luaBuffer))}}
\newenvironment{recorder}
  {\directlua{startrecording()}}
  {\directlua{stoprecording()}}
%StopShownPreambleCommands
\begin{document}

\begin{recorder}
  Hallo \TeX-Welt. Dies ist Datei \jobname.
\end{recorder}

Und jetzt die Ausgabe: \printBuffer\\
Und nochmal: \printBuffer

\begin{recorder}
  Hallo Lua\TeX-Welt.
\end{recorder}

Und jetzt die Ausgabe: \printBuffer
\end{document}
