@saputello hat es in einem Kommentar schon angedeutet: zu Beginn einer Tabelle oder zu Beginn einer neuen Tabellenzeile kann per `\hline` (oder den meines Erachtens schöneren Linien mit [`booktabs`][1] [`booktabs`][1]' Befehlen wie `\toprule` etc.) eine horizontale Tabellenlinie eingefügt werden. Damit die Linie nicht als Teil der ersten Zelle der aktuellen Zeile interpretiert wird, wird dafür unter der Haube das TeX-Primitiv `\noalign` verwendet.
\def\hline{\noalign{...}}
Damit `\noalign` seine Arbeit verrichten kann, darf die aktuelle Zelle noch nicht begonnen haben. Konkret heißt das, dass vor `\noalign` nur expandierbare Makros stehen dürfen (die auch nicht zu nichtexpandierbarem Inhalt/Output etc expandieren dürfen).
dürfen). Steht irgendetwas derartiges vor `\noalign`, dann kommt es zu dem berüchtigten »misplaced `\noalign`«-Fehler wie hier:
! Misplaced \noalign.
\hline ->\noalign
{\ifnum 0=`}\fi \hrule \@height \arrayrulewidth \futurelet...
Die Fehlermeldung lässt sich beispeilsweise beispielsweise schon [mit einem `\relax`][2] hervorrufen:
hervorrufen, das ja (siehe Link) keinerlei Output erzeugt, aber eben nicht expandierbar ist:
\documentclass{article}
\begin{document}
\begin{tabular}{c}
\relax \hline
\end{tabular}
\end{document}
In diesem Fall ist das Problem, dass die Befehle `\foo` und `\endfoo`, die durch `\NewDocumentEnvironment{foo}` definiert werden, `\protected`, also nicht expandierbar sind, so wie `\relax`. Da `\endfoo` aufgerufen werden muss, um die Definition des Umgebungsendes einzufügen, wirst Du hier gebissen.
\documentclass{article}
\usepackage{xparse}
\NewDocumentEnvironment{tabelle}{}
{\tabular}
{\hline\endtabular}
\show\endtabelle
% > \endtabelle=\protected macro:
% ->\environment tabelle end aux .
\begin{document}
\begin{tabelle}{c}
\hline foo \\
\end{tabelle}
\end{document}
Einfacher Workaround für Deinen Fall: definiere `TabelleLa` folgendermaßen:
\NewDocumentEnvironment{TabelleLa}{}
{\tabular{ll}\hline lateinisch & deutsch \\ \hline}
{\\ \hline\endtabular}
Damit wird das Ende der Zeile und der Start der neuen verzögert, und das `\noalign` in `\hline` ist tatsächlich das erste in der entsprechenden Zeile. Du musst dann eben das letzte `\\` bei der Verwendung der Umgebung weglassen:
\begin{TabelleLa}
edere & essen \\
bibere & trinken \\
dormire & schlafen
\end{TabelleLa}
[1]: http://www.ctan.org/pkg/booktabs
[2]: http://texwelt.de/wissen/fragen/894/