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●25●34●63
Akzeptiert-Rate:
60%