Schönere Implementierung von Informationen über "="

Formelsatz für Mathematik, Naturwissenschaften und Technik


guy.brush™
Forum-Century
Forum-Century
Beiträge: 185
Registriert: So 8. Aug 2010, 19:43
Wohnort: Earth

Schönere Implementierung von Informationen über "="

Beitrag von guy.brush™ »

Hallo,

da ich gerade beim Texen darauf gestoßen bin, wollte ich euch einmal fragen, welche schönere Implementierung oder Formatierung es für folgendes Problem gibt:

Und zwar ist es ja recht häufig so, dass insbesondere bei Beweisen in der Mathematik Informationen über dem Gleichheitszeichen dazu geschrieben werden. Wenn dieses wichtige Informationen sind, so gliedere ich sie in der Regel mit \intertext aus. Aber häufig sind es kleinere Bemerkungen, die einfach das Verständnis erleichtern sollen und würde ich da jedes Mal \intertext verwenden, würde ich den ganzen Beweis irgendwie zerstückeln.

Meine aktuelle Implementierung sieht wie folgt aus. Zwar nicht besonders schön, aber es erspart etwas Tipparbeit :).
\documentclass[a4paper,%
	       11pt,%
	       twoside,%
	       headings=openright]%
	      {scrreprt}

% --------------------- Einbinden benötigter Pakete ---------------------
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[a4paper,left=3.1cm,right=3.1cm,top=2.9cm,bottom=2.9cm]{geometry}
\usepackage[babel,german=quotes]{csquotes}
\usepackage[intlimits]{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{amsopn}
\usepackage{mathtools}

% --------------------- Definition neuer Befehle ---------------------
% Definition neuer Befehle (allgemein)
\newcommand{\overunderset}[3]{\overset{#1}{\underset{#2}{#3}}}	% Verknüpfung der Befehle \overset und \underset
\newcommand{\anf}[1]{\textmd{\glqq}#1\textmd{\grqq:}}	% Formatierung und Ausgabe von "#1" für Beweise (z.B. für Inklusionen)
\newcommand{\oset}[2]{\overset{\mathclap{#1}}{#2}}	% Verknüpfung der Befehle \overset und \mathclap für Gleichungen
\newcommand{\uset}[2]{\underset{\mathclap{#1}}{#2}}	% Verknüpfung der Befehle \underset und \mathclap für Gleichungen
\newcommand{\ouset}[3]{\overset{\mathclap{#1}}{\underset{\mathclap{#2}}{#3}}}	% Verknüpfung der Befehle \overset, \underset und \mathclap für Gleichungen

\newcommand{\iquad}{\quad}			% Fügt 1x \quad Abstand ein
\newcommand{\iiquad}{\qquad}			% Fügt 2x \quad Abstand ein
\newcommand{\iiiquad}{\qquad\quad}		% Fügt 3x \quad Abstand ein
\newcommand{\ivquad}{\qquad\qquad}		% Fügt 4x \quad Abstand ein
\newcommand{\vquad}{\qquad\qquad\quad}		% Fügt 5x \quad Abstand ein
\newcommand{\viquad}{\qquad\qquad\qquad}	% Fügt 6x \quad Abstand ein
\newcommand{\viiquad}{\qquad\qquad\qquad\quad}	% Fügt 7x \quad Abstand ein

\begin{document}

Gleichheitszeichen untereinander formatiert:

\begin{align*}
  P[A \cup B] \iquad&=\iquad P[A \uplus (B \setminus A)]\\
  &\oset{\sigma\text{-Add.}}{=}\iquad P[A] + P[A \setminus A]
     + P[A \cap B] - P[A \cap B]\\
  &\oset{\sigma\text{-Add.}}{=}\iquad P[A] + P[\underbrace{(B \setminus A) \uplus
    (A \cap B)}_{= B}] - P[A \cap B].
\end{align*}


Gleichheitszeichen verrutscht:

\begin{align*}
  P[A \cup B] &= P[A \uplus (B \setminus A)]\\
  &\overset{\sigma\text{-Add.}}{=} P[A] + P[A \setminus A]
     + P[A \cap B] - P[A \cap B]\\
  &\overset{\text{anderer Text}}{=} P[A] + P[\underbrace{(B \setminus A) \uplus
    (A \cap B)}_{= B}] - P[A \cap B]\\
  &= 42.
\end{align*}
\end{document}

Hmm...ich hoffe, dass meine Vorgehensweise verständlich ist :).


Viele Grüße,

guy.brush™
Zuletzt geändert von guy.brush™ am Di 24. Aug 2010, 17:17, insgesamt 2-mal geändert.
Arch Linux - KDE - TeXLive - Kile - \me = Advanced Newbie

Interessensschwerpunkte: Mathematik- und Formelsatz sowie mathematische (Mikro-)Typographie
Offenes Problem: negierte \xarrow-Pfeile beliebiger Länge

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Ohne zusätzliches mathtools bekomme ich eine Fehlermeldung wegen \mathclap. Außerdem frage ich mich, warum Du nicht \stackrel verwendest, und warum Du erst mit \mathclap die Breite des Materials über dem Gleichheitszeichen entfernst, um dann mit \iquad künstlich wieder Abstand hinzu zu fügen. Mir ist also ehrlich gesagt nicht ganz klar, was Du vor hast.

guy.brush™
Forum-Century
Forum-Century
Beiträge: 185
Registriert: So 8. Aug 2010, 19:43
Wohnort: Earth

Beitrag von guy.brush™ »

Hallo KOMA,

oh Entschuldigung, habe da wohl das "mathtools" package zu viel herausgelöscht :).

Ich habe das oben einmal korrigiert und den Beispiel-Code auch etwas noch ergänzt.


Ich nutze \underset bzw. \overset, weil ich damit sowohl darunter als auch darüber Text schreiben kann. Außerdem stammt das, wenn ich mich nicht irre, aus den AMS-Paketen. Aber \overset sollte fast dasselbe Ergebnis liefern wie \stackrel. Ich glaube, \stackrel verkleinert den Text darüber geringfügig.

Ich hatte es auch so verstanden, dass \stackrel eher dazu gedacht ist, sich neue Zeichen zu basteln (wie z.B. \stackrel{^}{=}) und die anderen beiden für beliebigen Inhalt.


Das Problem, weshalb ich das so kompliziert mache, ist folgendes:

Wenn ich Text über oder unter ein Gleichheitszeichen schreibe, wird die Ausrichtung in einer align-Umgebung mittels & verpfuscht. Scheinbar richtet sich das nämlich immer nach dem am weitesten sich links befindenden Punkt des Zeichens. Und da wir hier nun Text über dem Gleichheitszeichen haben, ist nicht mehr der linke Anfang des Gleichheitszeichen der sich am weitesten links befindende Punkt, sondern der erste Buchstabe des Textes über dem Gleichheitszeichen. Und danach wird das ganze dann ausgerichtet, weshalb sich die ganzen Gleichheitszeichen verschieben (siehe 2. align*-Umgebung, die ich oben noch hinzugefügt habe).

Deshalb habe ich das ganze mit einem \mathclap zu einem 0x0 Pixel großen Kästchen zusammengeschrumpft und danach gleichmäßigen Abstand mit den \quads eingefügt.

Es ist etwas umständlich, aber so immerhin machbar. Deshalb interessiere ich mich dafür, ob es eine schönere Implementierung dafür gäbe.


Ich hoffe, ich habe das jetzt etwas besser erklärt und/oder das erweiterte Minimalbeispiel macht es etwas besser deutlich :). Falls nicht, male ich mal noch ein kleines Bildchen :).


Viele liebe Grüße,

guy.brush™
Arch Linux - KDE - TeXLive - Kile - \me = Advanced Newbie

Interessensschwerpunkte: Mathematik- und Formelsatz sowie mathematische (Mikro-)Typographie
Offenes Problem: negierte \xarrow-Pfeile beliebiger Länge

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Achso. Dann kann man das natürlich so machen, wie Du das gemacht hast.
\documentclass[a4paper,%
          11pt,%
          twoside,%
          headings=openright]%
         {scrreprt}

% --------------------- Einbinden benötigter Pakete ---------------------
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[a4paper,left=3.1cm,right=3.1cm,top=2.9cm,bottom=2.9cm]{geometry}
\usepackage[intlimits]{amsmath}

\begin{document}

Gleichheitszeichen untereinander formatiert:

\[\begin{array}{l@{}c@{}l}
  P[A \cup B] &=& P[A \uplus (B \setminus A)]\\
  &\overset{\sigma\text{-Add.}}{=}& P[A] + P[A \setminus A]
     + P[A \cap B] - P[A \cap B]\\
  &\overset{\text{anderer Text}}{=}& P[A] + P[\underbrace{(B \setminus A) \uplus
    (A \cap B)}_{= B}] - P[A \cap B]\\
  &=& 42.
\end{array}\]
\end{document}
Wenn man weiß, in welcher Reihenfolge amsmath bei align etc. die Spaltentypen vergibt, geht das vermutlich auch mit der richtigen Anzahl an & und einer solchen Umgebung. Das überlasse ich den Experten wie Herbert. Bei eqnarray (das man mit amsmath nicht verwenden sollte) ging das noch einfach:
documentclass[a4paper,%
          11pt,%
          twoside,%
          headings=openright]%
         {scrreprt}

% --------------------- Einbinden benötigter Pakete ---------------------
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[a4paper,left=3.1cm,right=3.1cm,top=2.9cm,bottom=2.9cm]{geometry}

\begin{document}

Gleichheitszeichen untereinander formatiert:

\begin{eqnarray*}
  P[A \cup B] &=& P[A \uplus (B \setminus A)]\\
  &\stackrel{\sigma\mathrm{-Add.}}{=}& P[A] + P[A \setminus A]
     + P[A \cap B] - P[A \cap B]\\
  &\stackrel{\mathrm{anderer Text}}{=}& P[A] + P[\underbrace{(B \setminus A) \uplus
    (A \cap B)}_{= B}] - P[A \cap B]\\
  &=& 42.
\end{eqnarray*}
\end{document}

guy.brush™
Forum-Century
Forum-Century
Beiträge: 185
Registriert: So 8. Aug 2010, 19:43
Wohnort: Earth

Beitrag von guy.brush™ »

Sorry für die späte Rückmeldung.


eqnarray verwende ich gar nicht. Damit habe ich gar nicht erst angefangen, sondern habe seit Beginn meiner "LaTeX-Zeit" direkt align verwendet :).

Die array Variante ist natürlich auch möglich. Allerdings etwas umständlicher, wenn man sie im Nachhinein noch einfügen muss als meine Variante, oder nicht?

Ich wundere mich auch ein bisschen, dass da noch niemand etwas zu implementiert hat, denn zumindest bei uns ist diese Variante der Informationen in Beweisen relativ stark üblich (handschriftlich) und jedes Mal ein \intertext dürfte die Gleichung wohl etwas zerstückeln (meine laienhafte Einschätzung).
Arch Linux - KDE - TeXLive - Kile - \me = Advanced Newbie

Interessensschwerpunkte: Mathematik- und Formelsatz sowie mathematische (Mikro-)Typographie
Offenes Problem: negierte \xarrow-Pfeile beliebiger Länge

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Ich kenne das mit den Informationen über dem Gleichheitszeichen gar nicht, sondern eher mit Text rechts neben der entsprechenden Zeile der Gleichung. AFAIR wird diese Lösung auch in der amsmath-Anleitung vorgeführt.

Warum Du das mit array umständlicher findest, kann ich nicht nachvollziehen. Es hat auf jeden Fall den Vorteil, dass man nicht sämtliche Abstände von Hand ändern muss, nur weil der längste Text gekürzt wurde oder ein noch längerer Text eingefügt werden musste.

guy.brush™
Forum-Century
Forum-Century
Beiträge: 185
Registriert: So 8. Aug 2010, 19:43
Wohnort: Earth

Beitrag von guy.brush™ »

Das mit dem "umständlicher empfinden" war rein ein erstes Gefühl :). Vielleicht ist es auch eher eine Frage der Gewohnheit :).
Arch Linux - KDE - TeXLive - Kile - \me = Advanced Newbie

Interessensschwerpunkte: Mathematik- und Formelsatz sowie mathematische (Mikro-)Typographie
Offenes Problem: negierte \xarrow-Pfeile beliebiger Länge

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Ach, ich sollte vielleicht noch erwähnen, das ich kein Mathematiker, sondern als Informatiker nur so eine Art Hilfsmathematiker bin. Dafür habe ich schon für diverse Verlage verschiedene Bücher und Proceedings etc. gesetzt. Darunter waren auch diverse mathematische. Ich kann also nicht sagen, ob nicht irgendwelche Mathematiker das üblicherweise genauso machen wie Du. Nur erinnern kann ich mich nur an die Methode mit der Erklärung neben der Gleichungszeile (teilweise sogar im Rand, was mit amsmath eine Qual ist).

Antworten