Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Bergenzte Definition von Abständen zwischen Text und Formeln

  1. #1
    Registrierter Benutzer
    Registriert seit
    08.02.2012
    Beiträge
    48

    Bergenzte Definition von Abständen zwischen Text und Formeln

    Hallo,

    ich möchte in verschiedenen Tabellen den Abstand zwischen Text und Formel kleiner haben. Das geht ohne Probleme mit:
    \setlength\abovedisplayshortskip{0pt}
    \setlength\belowdisplayshortskip{0pt}
    \setlength\abovedisplayskip{2pt}
    \setlength\belowdisplayskip{2pt}

    Ich möchte aber, dass diese Definitionen NUR auf bestimmte Bereiche beschränkt bleiben (in meinem Fall die Tabellen) und danach wieder die alten Definitionen gelten. Nun könnte ich nach den Tabellen wieder die Längen zurücksetzen. Ich habe aber gelesen, dass die Standardwerte von den verwendeten Schriftgrößen u.ä abhängen, d.h. für versch. Dokumente können diese unterschiedlich sein, oder?

    Daher meine Fragen:
    • Wie kann ich die "Standard-Einstellungen" auslesen?

    • gibt es eine elegante Lösung, z.B. mit "environment"?


    Vielen Dank!

    Manfred


    Hier das Minimalbeispiel


    Code:
    % Aus Lynx exportiert und danach manuell reduziert
    \documentclass[ngerman,english]{article}
    \usepackage[T1]{fontenc}
    \usepackage[latin9]{inputenc}
    \usepackage{array}
    \usepackage{babel}
    \setlength{\parskip}{\medskipamount}
    \setlength{\parindent}{0pt}
    \begin{document}
    
    Hier steht Text und eine Formel
    
    \begin{equation}
    \cdot\frac{\mathrm{d^{2}}q(t)}{\mathrm{d}t^{2}}+R\cdot\frac{\mathrm{d}q(t)}{\mathrm{d}t}+\frac{1}{C}\cdot q(t)=0 
    \end {equation}
    Zwischen Text und Formel ist der normale Abstand.
    
    Für die folgende Tabelle werden nun  kleinere Abstände zwischen Text und Formeln definiert:
    
    % Definition der neuen Abstände
    \setlength\abovedisplayshortskip{0pt}
    \setlength\belowdisplayshortskip{0pt} 
    \setlength\abovedisplayskip{2pt} 
    \setlength\belowdisplayskip{2pt}%
    
    % Es folgt die Tabelle
    
    \begin{tabular}{|>{\centering}m{0.2\textwidth}|>{\centering}m{0.33\textwidth}|>{\centering}m{0.33\textwidth}|}
    \hline 
     & Mechanische Schwingung & Elektromagnetische Schwingung\tabularnewline
    \hline 
    \hline 
    Schwingende Größe & Auslenkung
    \[ x(t) \] & Ladung des Kondensators
    \[
    q(t)
    \]
    \tabularnewline
    \hline 
    Ableitung nach der Zeit & Geschwindigkeit
    \[
    v=\frac{\mathrm{d}x(t)}{\mathrm{d}t}
    \]
     & Strom
    \[
    i=\frac{\mathrm{d}q(t)}{\mathrm{d}t}
    \]
    \tabularnewline
    \hline 
    \end{tabular}
    
    
    Nach der Tabelle sollen \textbf{automatisch} wieder die normalen Abstände zwischen Formel und Text gelten: 
    \begin{equation} 
    \cdot\frac{\mathrm{d^{2}}q(t)}{\mathrm{d}t^{2}}+R\cdot\frac{\mathrm{d}q(t)}{\mathrm{d}t}+\frac{1}{C}\cdot q(t)=0 
    \end{equation}
    Was ist dafür zu tun? 
    
    
    \end{document}

  2. #2
    Registrierter Benutzer
    Registriert seit
    09.12.2005
    Beiträge
    1.326
    Das beste ist, Gleitumgebungen für Tabellen zu verwenden. Dann kannst Du die Änderungen einfach an den Anfang der table-Umgebung stellen:
    Code:
    \documentclass[ngerman,english]{article}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}% Verwende für neue Dokumente besser utf8 als latin9
    \usepackage{array}
    \usepackage{babel}
    \usepackage{parskip}% siehe l2tabu
    \setlength{\parskip}{\medskipamount}
    \usepackage{booktabs}
    \begin{document}
    
    Hier steht Text und eine Formel
    
    \begin{equation}
    \cdot\frac{\mathrm{d^{2}}q(t)}{\mathrm{d}t^{2}}+R\cdot\frac{\mathrm{d}q(t)}{\mathrm{d}t}+\frac{1}{C}\cdot q(t)=0 
    \end {equation}
    Zwischen Text und Formel ist der normale Abstand.
    
    Für die Tabelle~\ref{tab:test} wwurden kleinere Abstände zwischen Text und Formeln definiert.
    
    \begin{table}
      % Definition der neuen Abstände
      \setlength\abovedisplayshortskip{0pt}
      \setlength\belowdisplayshortskip{0pt} 
      \setlength\abovedisplayskip{2pt} 
      \setlength\belowdisplayskip{2pt}%
    
      % Es folgt die Tabelle
    
      \begin{tabular}{>{\centering}m{0.2\textwidth}>{\centering}m{0.33\textwidth}>{\centering}m{0.33\textwidth}}
      \toprule
       & Mechanische Schwingung & Elektromagnetische Schwingung\tabularnewline
      \midrule
      Schwingende Größe & Auslenkung
      \[ x(t) \] & Ladung des Kondensators
      \[
      q(t)
      \]
      \tabularnewline
      \midrule% würde ich weglassen
      Ableitung nach der Zeit & Geschwindigkeit
      \[
      v=\frac{\mathrm{d}x(t)}{\mathrm{d}t}
      \]
       & Strom
      \[
      i=\frac{\mathrm{d}q(t)}{\mathrm{d}t}
      \]
      \tabularnewline
      \bottomrule
      \end{tabular}
      \caption{Testtabelle}
      \label{tab:test}
    \end{table}
    
    Außerhalb der Tabelle sollen \emph{automatisch} wieder die normalen Abstände
    zwischen Formel und Text gelten:
    \begin{equation} 
    \cdot\frac{\mathrm{d^{2}}q(t)}{\mathrm{d}t^{2}}+R\cdot\frac{\mathrm{d}q(t)}{\mathrm{d}t}+\frac{1}{C}\cdot q(t)=0 
    \end{equation}
    Das geht mit Gleitumgebung ganz einfach.
    
    \end{document}
    Die wichtigen Änderungen habe ich rot gemacht. Die empfehlenswerten weiteren Änderungen habe ich grün gefärbt. Die unwichtigen Änderungen sind nicht gefärbt.

    Wenn Du auf nicht gleitende Tabellen bestehst, kannst Du auch in Deinem Beispiel an den Stellen, an denen ich die table-Umgebung eingefügt habe, einfach eine Gruppe öffnen (\begingroup) und schließen (\endgroup).

  3. #3
    Registrierter Benutzer
    Registriert seit
    06.01.2014
    Beiträge
    108
    Da Du das sicher bei allen Tabellen konsistent haben möchtest, und es auch nicht stört, wenn keine Formel enthalten sind, hier eine allgemeine Redefinition:

    Code:
    \usepackage{ifthen}
    \makeatletter
    \renewenvironment{table}[1][]{%
     \ifthenelse{\equal{#1}{}}{%
        \@float{table}
      }{%
        \@float{table}[#1]%
      }%
      \setlength\abovedisplayshortskip{0pt}
      \setlength\belowdisplayshortskip{0pt} 
      \setlength\abovedisplayskip{2pt} 
      \setlength\belowdisplayskip{2pt}
      }{%
      \end@float
    }
    \makeatother
    Felix
    TeXwelt User

  4. #4
    Registrierter Benutzer
    Registriert seit
    09.12.2005
    Beiträge
    1.326
    Vorsicht! Diese Änderung setzt eine bestimmte Definition von table voraus! Je nach verwendeter Klasse und verwendeten Paketen kann man so einiges kaputt machen!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •