Ich habe inzwischen ein bisschen recherchiert, und möchte versuchen, hier zusammenzufassen, was ich herausgefunden habe/schon wusste.
Grundsätzliche Unterschiede zwischen \par und \endgraf
Die folgenden zwei Punkte erwähnt Frank Mittelbach in seiner Antwort auf When is it better to use par than endgraf? auf TeX.sx:
\par (das Makro) ist in LaTeX das Äquivalent zu einer leeren Zeile in einem Dokument! Welche Bedeutung auch immer LaTeX in einem bestimmten Kontext einer leeren Zeile gibt, ist auch das, was \par in diesem Kontext liefert. Beispielsweise werden in einer Tabelle leere Zeilen ignoriert und so enthält auch die Definition von \@array die Zeile \let\par\@empty. Auch in Listen wird es umdefiniert.
- Im Gegensatz dazu ist
\endgraf/\@@par das Primitiv, das den horizontalen Modus beendet und das Material in Zeilen bricht. (Oder nichts macht oder einen Fehler produziert oder ...)
Oder kurz und knapp (Quelle):
abstractly speaking \par implements an
abstract user/document level interface
and \endgraf a specific technical
operation.
([...] \par implementiert ein abstraktes Dokumenten-Level-Interface, \endgraf eine bestimmte technische Operation.)
Laut Frank Mittelbach ist \endgraf allerdings lediglich ein Überbleibsel von plain TeX und sollte in LaTeX nicht verwendet werden:
actually \endgraf is a historic
leftover from plain TeX and you should
not use it at all in LaTeX code, you
should use \@@par to indicate that
it is the primitive you are after.
Mögliche Konsequenzen aus Anwendersicht
Obiges bedeutet im weiteren Schluss für mich, dass ein Anwender/eine Anwenderin (sprich: Dokumentenautor/in) eigentlich \endgraf/\@@par im Idealfall nie verwenden sollen müsste (sag niemals nie ;) ). Dafür spricht aus meiner persönlichen Sicht auch schon, dass ich mehr als 10 Jahre gut damit ausgekommen bin, \endgraf gar nicht zu kennen.
Allerdings scheinen die Meinungen hier auseinander zu gehen. @Ulrike argumentiert in ihrer Antwort, dass \endgraf für einen Anwender da ist, wenn er/sie das Primitiv braucht. Ich bin davon nicht völlig überzeugt, kann die Argumentation aber nachvollziehen. Meinem Bauchgefühl nach (und Frank bestätigt mir das), sollte man dabei aber vorsichtig sein:
no: \@@par is not intended for user
level while \endgraf was (by Don) and
although it is not explicitly
documented in LaTeX for this purpose
one can argue that \endgraf is a user
level command in LaTeX. Personally I
think it is a but dangerous as you
need to really understand the above
difference (and partly how LaTeX does
par redefs) to make good use of
\endgraf.
(Nein, \@@par ist nicht für das Anwenderlevel gedacht [klar zu erkennen an den @ (Clemens)]), \endgraf war es (von Don) schon, und obwohl es in LaTeX nicht explizit dokumentiert ist, kann man argumentieren, es sei ein Anwenderbefehl. Persönlich denke ich, es ist einer, aber ein gefährlicher, weil man den Unterschied [zu LaTeXs \par (Clemens)] wirklich verstanden haben muss (und zum Teil auch, wie LaTeX \par-Redefinitionen macht), um guten Gebrauch davon zu machen.)
Weil LaTeX die Definition von \par (dem Makro) immer wieder je nach Kontext anpasst, ist es also in der Regel vermutlich sicherer, \par (das Makro) zu verwenden, statt mit \endgraf auf jeden Fall (nur) das Primitiv zu bekommen.
Wenn jemand genau das Primitiv einsetzen möchte oder muss, dann sollte er \@@par verwenden (oder auf Dokument-Level eben auch \endgraf). (Hier bin ich noch auf der Suche nach Fällen, wo ich tatsächlich (ausschließlich) das Primitiv haben möchte. Meinem Gefühl nach sind die eher rar gesät, Beispiele würden mich aber interessieren.)
beantwortet
23 Mai '14, 14:21
cgnieder
22.1k●26●34●63
Akzeptiert-Rate:
60%