marei: user cofig for tables
[kivitendo-erp.git] / templates / print / marei / Readme.md
1
2 # Bemerkungen zum Vorlagensatz von
3 ### © 2020 by Marei Peischl (peiTeX TeXnical Solutions)
4
5 ## Aufbau:
6 Die Grundstruktur besteht je Dokumententyp aus einer Basisdatei und verschiedenen Setup-Dateien.
7
8 Die Basis wurde so überarbeitet, dass Dokumente nun generell auf der Dokumentenklasse *scrartcl.cls* basieren und das Paket *kiviletter.sty* benutzen.
9
10 Mandantenspezifische Konfiguration findet sich in der Datei *insettings.tex* und dem Ordner eines spezifischen Mandanten (default=*firma/*). 
11
12
13 ### Struktur der Basisdatei (je Dokumententyp eine)
14         1. Dokumentenklasse
15         2. *kiviletter.sty*
16         3. Einstellungen, die über Variablen gesetzt werden: Mandant, Währung, Sprache
17         4. `\input{insettings.tex}` Anteil der spezifischen Anpassungen, die von den Variablen unter 2. abhängig sind. Geladen werden darin die Dateien:
18                 - Sprache: lädt die entsprechende Sprachdatei, falls DE -> *deutsch.tex*, falls EN *englisch.tex* und setzt die babel Optionen. Die Datei enthält Übersetzungen von Einzelbegriffen und Textbausteinen.
19                 - Lädt die Konfigurationsdatei, ohne spezielle Mandanten ist der Suchpfad zur Konfiguration der Unterordner *firma/*
20                         * Lädt die Datei *ident.tex*, sowie die Abbildung Briefkopf.
21                 
22 Mandanten / Firma:
23     Um gleiche Vorlagen für verschiedene Firmen verwenden zu können, wird je
24     nach dem Wert der Kivitendo-Variablen <%kivicompany%> ein
25     Firmenverzeichnis ausgewählt (siehe 'insettings.tex'), in dem Briefkopf,
26     Identitäten und Währungs-/Kontoeinstellungen hinterlegt sind.
27     <%kivicompany%> enthält den Namen des verwendeten Mandantendaten.
28     Ist kein Firmenname eingetragen, so wird das
29     generische Unterverzeichnis 'firma' verwendet.
30
31 Identitäten:
32     In jedem Firmen-Unterverzeichnis soll eine Datei 'ident.tex'
33     vorhanden sein, die mit \newcommand Werte für \telefon, \fax,
34     \firma, \strasse, \ort, \ustid, \email und \homepage definiert.
35
36 Währungen / Konten:
37     Für jede Währung (siehe 'insettings.tex') soll eine Datei vorhanden
38     sein, die das Währungssymbol (\currency) und folgende Angaben für
39     ein Konto in dieser Währung enthält \kontonummer, \bank,
40     \bankleitzahl, \bic und \iban.
41     So kann in den Dokumenten je nach Währung ein anderes Konto
42     angegeben werden.
43     Nach demselben Schema können auch weitere, alternative Bankverbindungen
44     angelegt werden, die dann in insettings.tex als Variable im
45     unteren Abschnitt der Datei 'insettings.tex', Kommentar Fußzeile
46     (cfoot) eingefügt werden.
47    Briefbogen/Logos:
48     Eine Hintergrundgrafik oder ein Logo kann in Abhängigkeit vom
49     Medium (z.B. nur beim Verschicken mit E-Mail) eingebunden
50     werden. Dies ist im Moment auskommentiert.
51     
52     Desweiteren sind (auskommentierte) Beispiele enthalten für eine
53     Grafik als Briefkopf, nur ein Logo, oder ein komplettes DinA4-PDF
54     als Briefpapier.
55     
56     Fusszeile:
57     Die Tabelle im Fuß verwendet die Angaben aus firma/ident.tex und
58     firma/*_account.tex.
59
60 ## Seitenstil/Basislayout:
61
62         
63 ## Tabellen:
64
65 Die Tabellenstruktur wurde komplett überarbeitet. Der Vorlagensatz verfügt über Tabellen, die automatisch die Breite der Textbreite anpassen und zusätzlich Seitenumbrüche erlauben.
66
67 ### SimpleTabular
68
69 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.
70
71 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:
72
73 ```
74 \begin{SimpleTabular}[colspec=rrX,headline={\bfseries\position & \bfseries\menge & \bfseries\bezeichnung}]
75
76 ```
77
78 #### Kopfzeile
79 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.
80
81 #### Spaltenkonfiguration (fortgeschrittene Nutzer)
82 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:
83
84 ```
85 \begin{SimpleTabular}[colspec=llX]
86
87 ```
88 Als Spaltentypen sind Konfigurationen aus den folgenden Einträgen am sinnvollsten:
89 * `l`, `r`, `c`: Linksbündig, rechtsbündig, zentriert. Spaltenbreite passt sich dem Inhalt an.
90 * `X`: Blocksatz, Spaltenbreite füllt den übrigen Platz auf. Bei mehreren `X`-Spalten wird gleichmäßig aufgeteilt
91
92 Zusätzlich ist es möglich die Währung automatisch in der Spalte zu ergänzen.
93 Der Mechanismus ist so kontruiert, dass diese nicht in der Kopfzeile sondern lediglich in den Inhaltszeilen eingefügt wird.
94 In diesem Fall wird die Spaltenspezifikation durch `<{\tabcurrency}` ergänzt.
95 Eine rechtsbündige Spalte mit Währungsangabe wird somit durch `r<{\tabcurrency}` erzeugt.
96
97
98 #### PricingTabular
99
100 `PricingTabular` wurde entwickelt um Tabellen für Rechnungen vereinfacht erstellen zu können.
101 Die Voreinstellung verfügt über die Spalten `pos`, `id`, `desc`, `amount`, `price`, `pricetotal'.
102 Alle Spalten, außer der Spalte `desc` haben eine Feste Breite.
103
104 Die Einstellungen können Entweder als Optionales Argument zu `\begin{PricingTabular}[<Optionen>]` vorgenommen werden oder über das Makro `\SetupPricingTabular{<Optionen>}` für alle folgenden Umgebungen gesetzt werden.
105
106
107 ##### Spaltenbreiten
108
109 Die Spaltenbreiten werden angepasst indem der Spaltenname verwendet wird.
110 Um die Positionsspalte zu ändern ist somit die Option `pos=<Breite>` notwendig.
111 Hier können alle Längenangaben verwendet werden, die LaTeX versteht. (cm, mm, em, ex, …)
112
113 Die Spaltenbreite der Spalte `desc` für die Artikelbeschreibung nimmt dabei jeweils den übrigen Platz ein.
114
115 #### Kopfzeileneinträge
116
117 Die Kopfzeileneinträge werden über die Option `<Spaltenname>/header=<Neue Beschriftung>` angepasst.
118 Vorbelegt ist die Konfiguration: 
119
120 ```
121 \SetupPricingTabular{
122         pos/header=\position,
123         id/header=\artikelnummer,
124         desc/header=\bezeichnung,
125         amount/header=\menge,
126         price/header=\einzelpreis,
127         pricetotal/header=\gesamtpreis
128 }
129 ```
130
131 #### Reihenfolge/Anzahl der Spalten ändern
132
133 Die Reihenfolge wurde über die Option `columns` festgelegt.
134 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.
135
136 Einzelne Spalten können auch über `<Spaltenname>=false` abgeschaltet werden. Dies ist z.B. dann hilfreich, wenn die Angabe einer Produktnummer aus platzgründen nicht sinnvoll ist (`id=false`).
137
138
139
140
141
142  Quickstart (wo kann was angepasst werden?):
143     insettings.tex : Pfad zu Angaben über Mandanten (default: firma)
144                      Logo/Briefpapier
145                      Layout der Kopf/Fußzeile
146     firma/*        : Angaben über Mandanten
147  Es muß mindestens eine Sprache angelegt werden!
148     deutsch.tex    : Textschnipsel für Deutsch
149                      Dafür eine Sprache mit Vorlagenkürzel DE anlegen
150     english.tex    : Textschnipsel für Englisch
151                      Dafür eine Sprache mit Vorlagenkürzel EN anlegen
152