Ich finde eigentlich nicht, dass Du die experimentelle Funktion unbedingt vermeiden musst, vor allem, wenn man folgende Hinweise aus l3candiates bedenkt:
> - Discussing and understanding use cases for a particular addition or
> concept also helps to ensure that we
> provide the right interfaces in the
> final version so please give us
> feedback if you consider a certain
> candidate function useful (or not).
>
> We only add functions in this space if
> we consider them being serious
> candidates for a final inclusion into
> the kernel. However, real use
> sometimes leads to better ideas, so
> functions from this module are not
> necessarily stable and we may have to
> adjust them!
Die Funktionen können sich zwar ändern, aber nicht notwendigerweise in drastischer Form. Wenn man mit expl3 arbeitet, muss man so oder so darauf gefasst sein, dass es Änderungen gibt. Ich musste meine Pakete schon ein, zwei mal updaten wegen einer Änderung am Kernel, die nicht aus dem candidates-teil waren.
Auf der anderen Seite hilft eine konkrete Anwendung, um die Funktionen zu »stabilisieren«, jedenfalls, wenn man ggf dem L3-Team Feedback gibt.
Das mit dem Leerzeichen am Ende lässt sich leicht lösen: `\tl_trim_spaces:n` in einer x-Expansion. Ein Zeilenende ist nun mal im Endeffekt ein Leerzeichen.
Ich würde die Sequenz zu Beginn der Funktion leeren. (Falls die Funktion mehrmals verwendet wird.)
Um den Konventionen zu folgen wie sie in [expl3.pdf Abschnitt 3.2][1] diskutiert werden, habe ich Deine Funktionen und Variablen dem Module *cletus* zugeordnet.
\documentclass{article}
\usepackage{expl3}
\usepackage{xparse}
% \usepackage{filecontents}
\begin{filecontents*}{Datei}
Mueller
\textbf{Meyer}
Schulze
Schmidt
machen allen Unsinn mit
\end{filecontents*}
\ExplSyntaxOn
\ior_new:N \l_cletus_datei_stream
\seq_new:N \l_cletus_dateiinhalt_seq
\cs_new:Npn \cletus_lies_dateiinhalt:n #1
{
\seq_clear:N \l_cletus_dateiinhalt_seq
\ior_open:Nn \l_cletus_datei_stream {#1}
\ior_map_inline:Nn \l_cletus_datei_stream
{ \seq_put_right:Nx \l_cletus_dateiinhalt_seq { \tl_trim_spaces:n {##1} } }
\ior_close:N \l_cletus_datei_stream
\seq_use:Nn \l_cletus_dateiinhalt_seq {\slash}
% Debug-Info - wieder entfernen:
\seq_show:N \l_cletus_dateiinhalt_seq
}
\NewDocumentCommand \Dateiinhalt {m}
{ \cletus_lies_dateiinhalt:n {#1} }
\ExplSyntaxOff
\begin{document}
\Dateiinhalt{Datei}
\end{document}
![alt text][2]
Das log:
The sequence \l_cletus_dateiinhalt_seq contains the items (without outer
braces):
> {Mueller}
> {\textbf {Meyer}}
> {Schulze}
> {Schmidt}
> {machen allen Unsinn mit}.
[1]: http://mirrors.ctan.org/macros/latex/contrib/l3kernel/expl3.pdf
[2]: http://texwelt.de/wissen/upfiles/iormapinline.png