Normblatt / aufgeteilte Seite mit Latex gestalten

Layout von Seiten, Rändern, Fusszeilen, usw, modifizieren


Evilamblonyx
Forum-Anfänger
Forum-Anfänger
Beiträge: 15
Registriert: Di 25. Dez 2018, 14:34

Normblatt / aufgeteilte Seite mit Latex gestalten

Beitrag von Evilamblonyx »

Hallo,
ich hoffe die Frage ist im richtigen Bereich, ansonsten bitte Verschieben.
ich möchte eine Vorlage für ein Normblatt mit Latex erstellen.

Wie das ganze aussehen soll, sieht man auf dem Bild im Anhang.

Die bisherige Vorlage ist in Word gemacht, und sieht nicht befriedigend aus.
Der Kopf und Fußbereich soll auf jeder neuen Seite wieder auftauchen. Der mittlere große Bereich soll ziemlich frei gestaltet werden können, also Bilder Tabellen, Text usw. enthalten.
Für mich stellt sich die Frage, wie ich das in Latex am besten umsetze.Das ganze Blatt als Tabelle? Die einzelnen bereiche als einzelne Frames?

Was wäre die eleganteste Lösung?

Die Vorlage soll möglichst lange haltbar (kompatibel) werden. Daher möchte ich möglichst auf exotische und schlecht gepflegte Pakete verzichten.

LG Evilamblonyx[/img]
Dateianhänge
BeispielBlatt.jpg
BeispielBlatt.jpg (274.9 KiB) 2285 mal betrachtet

Rolli
Forum-Guru
Forum-Guru
Beiträge: 382
Registriert: Mi 15. Feb 2017, 08:50
Wohnort: Mittelfranken

Beitrag von Rolli »

Hallo Evilamblonyx,

willkommen im Forum!

Vielleicht so:
% !TeX Program = pdflatex
% !TeX encoding = UTF-8 Unicode
% !TeX spellcheck = de-DE

\documentclass{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\usepackage[absolute]{textpos}
\usepackage{tikz}
\usepackage{scrlayer-scrpage}
\usepackage{blindtext}

\usepackage[left=2cm,top=4cm,right=2cm,bottom=4cm]{geometry}


\begin{document}

\pagestyle{scrheadings}
\clearscrheadfoot

% Wir packen die statischen Elemente (Linien, Kästen, fixer Text, usw.) in eine TikZ-Umgebung in die Kopfzeile.

\ihead{\begin{textblock*}{210mm}(0mm,0mm)
  \begin{tikzpicture}
    \draw (0,29.7) node {}; %Anker linke obere Ecke setzen 
    \draw (1.0,1.0) rectangle (20.0,28.7);
    \draw (1.0,27.2) -- ++(19.0,0.0);
    \draw (1.0,26.2) -- ++(19.0,0.0);
    \draw (4.0,28.7) -- ++(0.0,-1.5);
    \draw (2.5,27.95) node {\huge UVV};
    \draw (1.0,26.7) node [right] {Beschreibung:\quad Zerlegen, Reinigen und Prüfen ...};
    \draw (6.0,27.95) node [right]{\color{red} und hier dann die weiteren statischen Elemente, wie Linien + Text};
  \end{tikzpicture}
\end{textblock*}}

% Und auf jeder einzelnen Seite dann der individuelle Text:

\blinddocument

\end{document}
Gruß vom Rolli

Evilamblonyx
Forum-Anfänger
Forum-Anfänger
Beiträge: 15
Registriert: Di 25. Dez 2018, 14:34

Beitrag von Evilamblonyx »

Hallo Rolli,
die Lösung gefällt mir sehr gut. Zumal ich mit Tikz auch schon ein bisschen Erfahrung habe.

Was ich bei deinem Code nur noch nicht verstanden habe, ist an welcher Stelle die Linien am linken und rechten Rand erzeugt werden. Vielleicht bin ich da aber gerade auch einfach blind. :shock:

Vielen dank auf jeden Fall schon mal für deine Hilfe.

LG Evilamblonyx

Rolli
Forum-Guru
Forum-Guru
Beiträge: 382
Registriert: Mi 15. Feb 2017, 08:50
Wohnort: Mittelfranken

Beitrag von Rolli »

Bitteschön: Etwas aufgebohrt, die Linienerzeugung kommentiert, außerdem unterschiedliche Farben und Dicken - dann sollte es klar werden.

Die genaue Positionierung der Linien und Texte musst Du Dir halt noch von Deiner Vorlage heraus messen, und Schriftgröße, Font etc. auch noch so setzen, wie gewünscht.

Und: Ich würde empfehlen, die Daten, die pro Dokument feststehen (also z.B. "Beispielanlage", "Beschreibung", ...) nicht so wie ich es quick-and-dirty gemacht habe, im Code zu verstecken, sondern diese am Anfang des Dokuments zu definieren (siehe vier Beispiele).
% !TeX Program = pdflatex
% !TeX encoding = UTF-8 Unicode
% !TeX spellcheck = de-DE

\documentclass{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\usepackage[absolute]{textpos}
\usepackage{tikz}
\usepackage{scrlayer-scrpage}
\usepackage{lastpage}
\usepackage{blindtext}

\renewcommand*{\headfont}{\normalfont}

% Die Werte in geometry beschreiben den Textbereich im Inneren des Blattes.
% showframe auskommentieren, dann wird es angezeigt.

\usepackage[left=2cm,top=4cm,right=2cm,bottom=4cm]{geometry}
%\usepackage{showframe}

\newcommand{\texti}{Beispielanlage}
\newcommand{\textii}{Beschreibung:\quad Zerlegen, Reinigen und Prüfen des ausgebauten Beispielteils}
\newcommand{\textiii}{AL000 $\to$ AL003 $\to$\quad\color{red}\textbf{AL005}\color{black}\quad$\to$ AL011 $\to$ AL0015}
\newcommand{\textiv}{Herr Niemand\qquad Tel: 12345}

\begin{document}

\pagestyle{scrheadings}
\clearscrheadfoot

% Wir packen die statischen Elemente (Linien, Kästen, fixer Text, usw.) in eine TikZ-Umgebung in die Kopfzeile.

\ihead{\begin{textblock*}{210mm}(0mm,0mm)
  \begin{tikzpicture}
    \draw (0,29.7) node {}; %Anker linke obere Ecke setzen 
    \draw [ultra thick,red] (1.0,1.0) rectangle ++(19.0,27.7); % Gesamtrahmen
    \draw [ultra thin,red] (1.0,27.2) -- ++(19.0,0.0); % Horizontal oben oben
    \draw [ultra thick,blue] (1.0,26.2) -- ++(19.0,0.0); % Horizontal oben etwas tiefer
    \draw [ultra thick,green] (4.0,28.7) -- ++(0.0,-1.5); % Vertikal oben links
    \draw [ultra thick,yellow] (17.0,28.7) -- ++(0.0,-2.5); % Vertikal oben rechts
    \draw (2.5,27.95) node {\huge UVV};
    \draw (4.0,28.7) node [below right] {Anleitung};
    \draw (1.0,26.7) node [right] {\textii};
    \draw (10.5,27.95) node {\huge\textbf{\texti}};
    \draw (18.5,27.95) node {Logo};
    \draw (18.5,26.7) node {Juli 2018};
    \draw [ultra thick,brown] (1.0,1.5) -- ++(19.0,0.0); % Horizontal unten unten
    \draw [ultra thin,brown] (1.0,3.0) -- ++(19.0,0.0); % Horizontal unten etwas höher
    \draw [ultra thick, black] (11.0,1.5) -- ++(0.0,1.5); % Vertikal unten Mitte
    \draw [ultra thick, black] (17.0,1.5) -- ++(0.0,1.5); % Vertikal unten rechts
    \draw (6.0,2.7) node {\scriptsize{\color{red} Dokumentennummer} und Arbeitsablauf};
    \draw (14.0,2.7) node {\scriptsize Verantwortlicher für dieses Dokument};
    \draw (6.0,2.0) node {\textiii};
    \draw (14.0,2.0) node {\textiv};
    \draw (18.5,2.25) node {Seite \thepage\ von \pageref{LastPage}};
    \draw (1.0,1.25) node [right] {\tiny Vermerke:};
  \end{tikzpicture}
\end{textblock*}}

% Und auf jeder einzelnen Seite dann der individuelle Text:

\blinddocument

\end{document}
Gruß vom Rolli

Evilamblonyx
Forum-Anfänger
Forum-Anfänger
Beiträge: 15
Registriert: Di 25. Dez 2018, 14:34

Beitrag von Evilamblonyx »

Wow, das ist ja fast schon ein Tutorial was du mir da geschrieben hast.
Anhand von deinem Code kann ich jetzt wirklich alles nachvollziehen, was da passiert. Mir war z.B, vorher nicht klar, dass sich das Tikz Bild in der Kopfzeile einfach über das gesamte Blatt erstrecken kann, und dann trotzdem noch "Platz" für den Text in der Mitte der Seite ist.

Vielen dank für die tolle Hilfe, das ist wirklich ein klasse Forum hier.

LG Evilamblonyx

Rolli
Forum-Guru
Forum-Guru
Beiträge: 382
Registriert: Mi 15. Feb 2017, 08:50
Wohnort: Mittelfranken

Beitrag von Rolli »

Das Geheimnis ist die textblock*-Umgebung - die Ausgabe kann man damit (unabhängig davon, was gerade die aktuelle Position ist) überall hin setzen. In der Kopfzeile steht sie nur, weil es ja auf jeder Seite statisch erscheinen soll - packst Du sie in die Fußzeile, geht es genau so gut.

Und der Bereich in der Mitte (da, wo der "eigentliche" Text + Bilder usw. rein sollen) wird mit geometry gesetzt.

Am Besten bastelst Du Dir erstmal die ganzen Linien und Texte in den Feldern so, dass es paßt. Dann aktivierst Du showframe und legst den "Satzspiegel" so in Dein Blatt rein, dass auch dieses passt.

Alles Gute für 2019, Gruß vom Rolli

Antworten