PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabelle mit unterschiedlichen Schriftgrößen



cookie170
02-01-2011, 21:26
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 (http://texhacks.blogspot.com/2010_03_01_archive.html) gefunden:


\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\globa l\fi}
\newcommand*\globalfontsize[1]{%
\begingroup
#1%
\def\@defaultunits{\helperfalse\afterassignment\un ithelper\global}%
\let\realvrule\vrule
\def\vrule{\helperfalse\global\helpertrue\afterass ignment\helper\realvrule}%
\global\helpertrue
\helper#1%
\helperfalse
\endgroup}
\makeatother
\newcommand*\globaltiny{\globalfontsize\tiny}
\newcommand*\globalnormal{\globalfontsize\normalsi ze}
\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

voss
02-01-2011, 21:58
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.


\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}\normal size}
\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

cookie170
03-01-2011, 11:14
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

voss
03-01-2011, 11:21
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

cookie170
03-01-2011, 15:17
ich habe in der Präambel versehentlich zweimal FontStil statt Fontstil geschrieben.

Herbert

OK, das habe ich geändert:


\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}\normal size}
\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

voss
03-01-2011, 21:37
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:



\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\tabu larnewline[#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

cookie170
04-01-2011, 07:21
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


\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

voss
04-01-2011, 07:52
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


\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.


\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

cookie170
04-01-2011, 22:00
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