Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Tabelle mit unterschiedlichen Schriftgrößen

  1. #1
    Registrierter Benutzer
    Registriert seit
    28.06.2005
    Ort
    Karlsruhe
    Beiträge
    1.407

    Tabelle mit unterschiedlichen Schriftgrößen

    Hallo,

    eine Tabelle soll Positionen einer Rechnung auflisten. Jeweils unter den Hauptpositionen sollen in kleiner Schrift eine oder mehrere Zeilen folgen, welche die jeweilige Position erklären.

    Dazu habe ich folgendes Makro hier gefunden:

    Code:
    \documentclass[pagesize, fontsize=12pt, ngerman]{scrartcl}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{babel}
    
    \newif\ifhelper%%% Beginn des Makros
    \makeatletter
    \def\unithelper#1\@nnil{\global\helpertrue\helper}
    \def\helper{\ifhelper\afterassignment\helper\global\fi}
    \newcommand*\globalfontsize[1]{%
    \begingroup
           #1%
           \def\@defaultunits{\helperfalse\afterassignment\unithelper\global}%
           \let\realvrule\vrule
           \def\vrule{\helperfalse\global\helpertrue\afterassignment\helper\realvrule}%
           \global\helpertrue
           \helper#1%
           \helperfalse
    \endgroup}
    \makeatother
    \newcommand*\globaltiny{\globalfontsize\tiny}
    \newcommand*\globalnormal{\globalfontsize\normalsize}
    \newcommand*{\globallarge}{\globalfontsize\Large}
    
    \begin{document}\sffamily
    
    \begin{tabular}{lr}
      Bezeichnung & Betrag \\
    Kostenposition 1 & 1.000.000\\
    Kostenposition 2 & 3.123.123\\
    \globaltiny 
    aus JA 2009: & gilt auch 2010\\
    Bankdarlehen & 1\\
    Forderungen geg. Gesellschafter & 123\\
    Erinnerungsposten & 456\\
    \globalnormal Kostenposition 3 & 1.234.567\\
    \globallarge Summe & 4.567.890\\
    \end{tabular}
    
    \end{document}
    Wie man sieht, ändert das Makro \globaltiny nichts am Zeilenabstand. Hat jemand eine Idee, wie ich zusätzlich noch den Zeilenabstand anpassen kann? Einmal wäre es schön, wenn der vertikale Abstand nach »Kostenposition 2« nicht so groß wäre. Aber zur Not kann man das noch per Hand machen. Die Arbeit würde aber sehr erleichtert, wenn jede der klein geschriebenen Zeilen auch entsprechende Abstände hätte. Wie könnte ich das erreichen, ohne hinter jede Zeile so etwas wie [-0.5ex] zu schreiben?

    Für Vorschläge dankt

    Alexander

  2. #2
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von cookie170 Beitrag anzeigen
    eine Tabelle soll Positionen einer Rechnung auflisten. Jeweils unter den Hauptpositionen sollen in kleiner Schrift eine oder mehrere Zeilen folgen, welche die jeweilige Position erklären.

    Wie man sieht, ändert das Makro \globaltiny nichts am Zeilenabstand. Hat jemand eine Idee, wie ich zusätzlich noch den Zeilenabstand anpassen kann? Einmal wäre es schön, wenn der vertikale Abstand nach »Kostenposition 2« nicht so groß wäre. Aber zur Not kann man das noch per Hand machen. Die Arbeit würde aber sehr erleichtert, wenn jede der klein geschriebenen Zeilen auch entsprechende Abstände hätte. Wie könnte ich das erreichen, ohne hinter jede Zeile so etwas wie [-0.5ex] zu schreiben?
    Ein frohes Neues, Alexander ...

    mit dem Zeilenabstand muss ich nochmal sehen, ob es einfacher geht. Hier erstmal eine einfache Umschaltung.

    Code:
    \documentclass[pagesize, fontsize=12pt, ngerman]{scrartcl}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{babel}
    \usepackage{array}
    
    \def\Fontstil{\normalsize\normalfont}
    
    \def\Tiny{\gdef\Fontstil{\tiny}\tiny}
    \def\Normalsize{\gdef\FontStil{\normalsize}\normalsize}
    \def\myLarge{\gdef\FontStil{\large}\large}
    
    \begin{document}\sffamily
    
    \begin{tabular}{>{\Fontstil}l>{\Fontstil}r}
      Bezeichnung & Betrag \\
    Kostenposition 1 & 1.000.000\\
    Kostenposition 2 & 3.123.123\\[-.5\normalbaselineskip]
    \Tiny 
    aus JA 2009: & gilt auch 2010\\[-.5\normalbaselineskip]
    Bankdarlehen & 1\\[-.5\normalbaselineskip]
    Forderungen geg. Gesellschafter & 123\\[-.5\normalbaselineskip]
    Erinnerungsposten & 456\\
    \Normalsize
    Kostenposition 3 & 1.234.567\\
    \myLarge 
    Summe & 4.567.890\\
    \end{tabular}
    
    \end{document}
    Herbert

  3. #3
    Registrierter Benutzer
    Registriert seit
    28.06.2005
    Ort
    Karlsruhe
    Beiträge
    1.407
    Hallo Herbert,

    alles Gute zum neuen Jahr. Danke für Deine Antwort. Bei mir zumindest führen Deine Definitionen dazu, dass bei Kostenposition 3 die Zahl noch klein ist.

    Ich verstehe leider kein TeX. Aber das, was ich hier vorhabe, wäre für die Erstellung beispielsweise eines Jahresabschlusses ziemlich unentbehrlich.

    Mit LuaTeX steht jetzt ein Werkzeug zur Verfügung, mit dem man wie in einer Tabellenkalkulation rechnen kann. So kam ich auf den Gedanken, in einem Kaufvertrag zur besseren Nachvollziehbarkeit den tatsächlichen Rechenweg mit allen notwendigen Zahlen darzustellen.

    Gruß,
    Alexander

  4. #4
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von cookie170 Beitrag anzeigen
    Bei mir zumindest führen Deine Definitionen dazu, dass bei Kostenposition 3 die Zahl noch klein ist.
    ich habe in der Präambel versehentlich zweimal FontStil statt Fontstil geschrieben.

    Herbert

  5. #5
    Registrierter Benutzer
    Registriert seit
    28.06.2005
    Ort
    Karlsruhe
    Beiträge
    1.407
    Zitat Zitat von voss Beitrag anzeigen
    ich habe in der Präambel versehentlich zweimal FontStil statt Fontstil geschrieben.

    Herbert
    OK, das habe ich geändert:

    Code:
    \documentclass[pagesize, fontsize=12pt, ngerman]{scrartcl}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{babel}
    \usepackage{array}
    
    \def\Fontstil{\normalsize\normalfont}
    
    \def\Tiny{\gdef\Fontstil{\tiny}\tiny}
    \def\Normalsize{\gdef\Fontstil{\normalsize}\normalsize}
    \def\myLarge{\gdef\Fontstil{\large}\large}
    
    \begin{document}\sffamily
    
    \begin{tabular}{>{\Fontstil}l>{\Fontstil}r}
      Bezeichnung & Betrag \\
    Kostenposition 1 & 1.000.000\\
    Kostenposition 2 & 3.123.123\\[-.5\normalbaselineskip]
    \Tiny 
    aus JA 2009: & gilt auch 2010\\[-.5\normalbaselineskip]
    Bankdarlehen & 1\\[-.5\normalbaselineskip]
    Forderungen geg. Gesellschafter & 123\\[-.5\normalbaselineskip]
    Erinnerungsposten & 456\\
    \Normalsize
    Kostenposition 3 & 1.234.567\\
    \myLarge 
    Summe & 4.567.890\\
    \end{tabular}
    
    \end{document}
    Im pdf sieht man jedoch, dass die Schrift nach "aus JA 2009" seltsamerweise wechselt.

    Als ich in diesem TeX-Blog nach längerem Suchen las, dass das Problem nicht trivial ist, dachte ich mir schon, dass es nicht so einfach werden würde. Falls Du gelegentlich noch eine Idee hast, wäre das natürlich schön.

    Gruß,
    Alexander

  6. #6
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von cookie170 Beitrag anzeigen

    Als ich in diesem TeX-Blog nach längerem Suchen las, dass das Problem nicht trivial ist, dachte ich mir schon, dass es nicht so einfach werden würde. Falls Du gelegentlich noch eine Idee hast, wäre das natürlich schön.
    Hier ist eine Lösung. Das einzige Problem ist, dass du beim Umschalten
    _keinen_ Zeilenende-Befehl vorsiehtst!
    Es empfiehlt sich daher diesen in eine eigene Zeile zu schreiben.
    Mit dem optionalen Argument kannst du nochmals einen eigen Zeilenvorschub
    machen:

    Code:
    \documentclass[pagesize, fontsize=12pt, ngerman]{scrartcl}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{babel}
    \usepackage{array}
    \makeatletter
    \newcommand\Strut[1][1]{\global\setbox\@arstrutbox\hbox{%
        \vrule \@height#1\ht\strutbox
               \@depth#1\dp\strutbox
               \@width\z@}}%
    \makeatother
    
    \def\Fontstil{\normalsize\normalfont}
    \newcommand\Tiny[1][0pt]{\gdef\Fontstil{\tiny\normalfont}\Strut[0.5]\tabularnewline[#1]}
    \newcommand\Normalsize[1][0pt]{\gdef\Fontstil{\normalsize\normalfont}\Strut\tabularnewline[#1]}
    \newcommand\myLarge[1][0pt]{\gdef\Fontstil{\large\normalfont}\Strut[2]\tabularnewline[#1]}
    
    \begin{document}\sffamily
    
    \begin{tabular}{>{\Fontstil}l>{\Fontstil}r}
      Bezeichnung & Betrag \\
    Kostenposition 1 & 1.000.000\\
    Kostenposition 2 & 3.123.123
    \Tiny
    aus JA 2009: & gilt auch 2010\\
    Bankdarlehen & 1\\
    Forderungen geg. Gesellschafter & 123\\
    Erinnerungsposten & 456             
    \myLarge[10pt]
    Kostenposition 3 & 1.234.567\\
    Summe & 4.567.890\\
    \end{tabular}
    
    \end{document}
    Herbert
    Geändert von voss (03-01-2011 um 21:57 Uhr) Grund: Habe den Code jetzt in die endgültige Form gebracht.

  7. #7
    Registrierter Benutzer
    Registriert seit
    28.06.2005
    Ort
    Karlsruhe
    Beiträge
    1.407
    Hallo Herbert,

    vielen Dank abermals für Deinen schönen Code. Im Grunde ist das der Kern eines eigenen Pakets.

    Allerdings widerstrebt es mir etwas, die gewohnte Syntax zu verlassen und am Ende einer Zeile, nach der ich die Schriftgröße ändern will, kein Zeilenende zu schreiben. Versetzt man dann ein \Tiny, erhält man eine Fehlermeldung.

    Meine Tabellen sind inzwischen beklagenswert schwer überschaubar, weil ich ja die Bezüge auf die für Lua definierten Variablen unterbringen muss. Zwar verwende ich Befehle wie

    Code:
    \newcommand{\wert}[1]{\ifluatex\numprint{\directlua{tex.sprint (#1)}}
      \else XXX \fi}
    , aber trotzdem würde ich diese zusätzliche Fehlerquelle gerne vermeiden.

    Was mir noch auffällt, ist, dass der vertikale Abstand nach \myLarge[10pt] sehr groß ist.

    Du kannst besser als ich beurteilen, welchen Stellenwert Tabellen für LaTeX haben. Nur für mich lohnt sich die viele Mühe vielleicht nicht. Aber ich halte es für wahrscheinlich, dass auch andere auf die Rechnerei einsteigen und dann wird es noch mehr Wünsche geben, Tabellen mit unterschiedlichen Schriftgrößen in abgegrenzte Bereiche zu gliedern.

    Gruß,
    Alexander

  8. #8
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von cookie170 Beitrag anzeigen
    Allerdings widerstrebt es mir etwas, die gewohnte Syntax zu verlassen und am Ende einer Zeile, nach der ich die Schriftgröße ändern will, kein Zeilenende zu schreiben. Versetzt man dann ein \Tiny, erhält man eine Fehlermeldung.

    Meine Tabellen sind inzwischen beklagenswert schwer überschaubar, weil ich ja die Bezüge auf die für Lua definierten Variablen unterbringen muss. Zwar verwende ich Befehle wie

    Code:
    \newcommand{\wert}[1]{\ifluatex\numprint{\directlua{tex.sprint (#1)}}
      \else XXX \fi}
    , aber trotzdem würde ich diese zusätzliche Fehlerquelle gerne vermeiden.

    Was mir noch auffällt, ist, dass der vertikale Abstand nach \myLarge[10pt] sehr groß ist.

    Du kannst besser als ich beurteilen, welchen Stellenwert Tabellen für LaTeX haben. Nur für mich lohnt sich die viele Mühe vielleicht nicht. Aber ich halte es für wahrscheinlich, dass auch andere auf die Rechnerei einsteigen und dann wird es noch mehr Wünsche geben, Tabellen mit unterschiedlichen Schriftgrößen in abgegrenzte Bereiche zu gliedern.
    Alexander,
    du kannst mal überprüfen, ob nicht eine Tabelle in einer Tabelle sinnvoller ist.

    Code:
    \documentclass[pagesize, fontsize=12pt, ngerman]{scrartcl}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{babel}
    \usepackage{array}
    
    \begin{document}\sffamily
    
    \begin{tabular}{lr}
      Bezeichnung & Betrag \\
    Kostenposition 1 & 1.000.000\\
    Kostenposition 2 & 3.123.123\\
    \multicolumn{2}{@{}l@{}}{\tiny
    \begin{tabular}{lr}
    aus JA 2009: & gilt auch 2010\\
    Bankdarlehen & 1\\
    Forderungen geg. Gesellschafter & 123\\
    Erinnerungsposten & 456 
    \end{tabular}}\\
    Kostenposition 3 & 1.234.567\\
    Summe & 4.567.890\\
    \end{tabular}
    
    \end{document}
    Herbert

  9. #9
    Registrierter Benutzer
    Registriert seit
    28.06.2005
    Ort
    Karlsruhe
    Beiträge
    1.407
    Hallo Herbert,

    ich fürchte, Du hast recht. Die letzte Zeile habe ich bislang sowieso mit Fettdruck hervorgehoben und vorher hilft die eingefügte Tabelle weiter, ja, sie ist sogar flexibler.

    Tabellen in Tabellen hat mich immer abgestoßen, weil es so unelegant erscheint. Merkwürdiges Gefühl. Wie auch immer, Thema erledigt,

    Danke nochmals,

    Gruß,
    Alexander

Lesezeichen

Berechtigungen

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