From a154db8e1d632841d762b9425602f798aaeaf8f7 Mon Sep 17 00:00:00 2001 From: "Marei (peiTeX)" Date: Fri, 25 Sep 2020 22:52:49 +0200 Subject: [PATCH] marei: user cofig for tables --- templates/print/marei/Readme.md | 79 ++++++++++++++++++++++++++++ templates/print/marei/kiviletter.sty | 3 ++ 2 files changed, 82 insertions(+) diff --git a/templates/print/marei/Readme.md b/templates/print/marei/Readme.md index d2d804432..e44bf14e4 100644 --- a/templates/print/marei/Readme.md +++ b/templates/print/marei/Readme.md @@ -56,9 +56,88 @@ Währungen / Konten: Fusszeile: Die Tabelle im Fuß verwendet die Angaben aus firma/ident.tex und firma/*_account.tex. + +## Seitenstil/Basislayout: + ## Tabellen: +Die Tabellenstruktur wurde komplett überarbeitet. Der Vorlagensatz verfügt über Tabellen, die automatisch die Breite der Textbreite anpassen und zusätzlich Seitenumbrüche erlauben. + +### SimpleTabular + +Der einfache Tabellentyp ist die Umgebung `SimpleTabular`. die ist eine Tabelle basieren auf dem xltabular-Paket, die die sich der Textbreite anpasst. Sie wird in den Dateien *zahlungserinnerung_invoice.tex*, *zahlungserinnerung.tex* und *statement.tex* verwendet. + +Sie verfügt über ein optionales Argument um die Spaltenkonfiguration und die Kopfzeile anzupassen. Die Voreinstellung (also ohne optionales Argument) entspricht der, der folgenden Angabe: + +``` +\begin{SimpleTabular}[colspec=rrX,headline={\bfseries\position & \bfseries\menge & \bfseries\bezeichnung}] + +``` + +#### Kopfzeile +Die Kopfzeile wird über den Optionsschlüssel headline angepasst. Entsprechend dem LaTeX-Standard werden Tabellen Spalten mit `&` getrennt. `\bfseries` setzt den Tabellenkopf zusätzlich in Fettschrift. + +#### Spaltenkonfiguration (fortgeschrittene Nutzer) +Die voreingestellte Spaltenkonfiguration entspricht `rrX`, also zwei rechtsbündigen Spalten und einer Blocksatzspalte, die die restliche Breite einnimmt. Soll von dieser Spaltenkonfiguration abgewichen werden, steht der Optionsschlüssel `colspec` zur Verfügung. Das folgende Beispiel tauscht die beiden rechtsbündigen Spalten in linksbündige: + +``` +\begin{SimpleTabular}[colspec=llX] + +``` +Als Spaltentypen sind Konfigurationen aus den folgenden Einträgen am sinnvollsten: +* `l`, `r`, `c`: Linksbündig, rechtsbündig, zentriert. Spaltenbreite passt sich dem Inhalt an. +* `X`: Blocksatz, Spaltenbreite füllt den übrigen Platz auf. Bei mehreren `X`-Spalten wird gleichmäßig aufgeteilt + +Zusätzlich ist es möglich die Währung automatisch in der Spalte zu ergänzen. +Der Mechanismus ist so kontruiert, dass diese nicht in der Kopfzeile sondern lediglich in den Inhaltszeilen eingefügt wird. +In diesem Fall wird die Spaltenspezifikation durch `<{\tabcurrency}` ergänzt. +Eine rechtsbündige Spalte mit Währungsangabe wird somit durch `r<{\tabcurrency}` erzeugt. + + +#### PricingTabular + +`PricingTabular` wurde entwickelt um Tabellen für Rechnungen vereinfacht erstellen zu können. +Die Voreinstellung verfügt über die Spalten `pos`, `id`, `desc`, `amount`, `price`, `pricetotal'. +Alle Spalten, außer der Spalte `desc` haben eine Feste Breite. + +Die Einstellungen können Entweder als Optionales Argument zu `\begin{PricingTabular}[]` vorgenommen werden oder über das Makro `\SetupPricingTabular{}` für alle folgenden Umgebungen gesetzt werden. + + +##### Spaltenbreiten + +Die Spaltenbreiten werden angepasst indem der Spaltenname verwendet wird. +Um die Positionsspalte zu ändern ist somit die Option `pos=` notwendig. +Hier können alle Längenangaben verwendet werden, die LaTeX versteht. (cm, mm, em, ex, …) + +Die Spaltenbreite der Spalte `desc` für die Artikelbeschreibung nimmt dabei jeweils den übrigen Platz ein. + +#### Kopfzeileneinträge + +Die Kopfzeileneinträge werden über die Option `/header=` angepasst. +Vorbelegt ist die Konfiguration: + +``` +\SetupPricingTabular{ + pos/header=\position, + id/header=\artikelnummer, + desc/header=\bezeichnung, + amount/header=\menge, + price/header=\einzelpreis, + pricetotal/header=\gesamtpreis +} +``` + +#### Reihenfolge/Anzahl der Spalten ändern + +Die Reihenfolge wurde über die Option `columns` festgelegt. +Soll daher eine Tabelle mit nur drei Spalten und lediglich bestehend aus Produktnummer, Beschreibung und Menge genutzt werden, ist dies mit der Option `columns={id,desc,amount}` möglich. + +Einzelne Spalten können auch über `=false` abgeschaltet werden. Dies ist z.B. dann hilfreich, wenn die Angabe einer Produktnummer aus platzgründen nicht sinnvoll ist (`id=false`). + + + + Quickstart (wo kann was angepasst werden?): insettings.tex : Pfad zu Angaben über Mandanten (default: firma) diff --git a/templates/print/marei/kiviletter.sty b/templates/print/marei/kiviletter.sty index 56302706b..0b0403dd1 100644 --- a/templates/print/marei/kiviletter.sty +++ b/templates/print/marei/kiviletter.sty @@ -395,6 +395,9 @@ contents={\usebox\shippingAddressBox} headline .initial:n = {\bfseries\position & \bfseries\menge & \bfseries\bezeichnung}, } +\newcommand*{\SetupSimpleTabular}{\keys_set:nn {kivi/SimpleTabular} {#1}} +\newcommand*{\SetupPricingTabular}{\keys_set:nn {kivi/PricingTable} {#1}} + \newenvironment{SimpleTabular}[1][] { \tl_if_in:nnTF {#1} {=} {\keys_set:nn {kivi/SimpleTabular} {#1}} {\tl_if_empty:nF {#1} {\tl_set:Nn \l_kivi_SimpleTabular_headline_tl {#1}}} -- 2.20.1