Ich werde hier zeigen, wie man mit LaTeX Beschriftungskarten für die Kurzwahltasten eines Telefons machen kann.

Mein Telekom IQ-Tel 3

Viele Telefone kommen mit einer Reihe an programmierbaren Kurzwahltasten. Neben diesen, meist hinter einer dünnen Plastikscheibe, befindet sich eine Karte. Die kann man herausnehmen und beschriften, wenn man die Tasten programmiert. In meinem Fall ist das Label einfach schon alt, falsch beschriftet, und lässt sich auch nicht mehr radieren. In Betrieben könnte es aber eventuell praktisch sein, solche Karten automatisch zu erzeugen, wenn z.B. viele Telefone ausgetauscht werden sollen. Außerdem sieht das einfach viel besser aus, wenn die Karte komplett gedruckt ist.

Ich beginne also ein neues Projekt mit einem einzelnen TeX-File kurzwahl.tex. Ich empfehle die Nutzung von XeLaTeX wegen der guten Unterstützung für Unicode und Schriftarten. Da das Label keinen großen Textsatz braucht, wähle ich als Dokumentenklasse minimal.

\documentclass{minimal}

Dann muss ich mit dem Paket geometry die Größe des Beschriftungsfeldes einstellen. Mein Original ist 39 Millimeter breit und 85 hoch. Da die ganze Seite mit einem Bild ausgefüllt wird, gibt es keinen Rand und keine Fuß- oder Kopfzeile:

\usepackage[papersize={39mm,85mm}, margin={0mm,0mm}, nohead, nofoot]{geometry}

Um nachher ein Bild zu erzeugen, benutze ich das Paket tikz. Damit ich mit tikz später Berechnungen durchführen kann, lade ich die Bibliothek calc:

\usepackage{tikz}
\usetikzlibrary{calc}

Nun noch ein Dokument anfangen, das nur ein Bild beinhaltet:

\begin{document}
\begin{tikzpicture}
% ...
\end{tikzpicture}
\end{document}

Und schon kann ich anfangen zu malen. Als Ausschneidehilfe zeichne ich zunächst einen Rand:

\draw[thick] (current page.north west) rectangle (current page.south east);

Wenn ich das jetzt so setze ergibt sich folgendes Bild: Das Rechteck ist nicht ganz sichtbar und steht eingerückt auf der
zweiten Seite. Latex sieht, dass das Bild größer ist, als eigentlich Platz wäre. Deshalb wird es auf die nächste Seite gesetzt. Da es sich außerdem am Anfang eines Absatzes befindet, wird es ein Stück eingerückt. Die Einrückung bekommt man durch ein kurzes \parindent=0 in der Präambel weg. Alternativ kann auch \centering im Dokument verwendet werden. Damit das Bild nicht als zu breit behandelt wird, muss man als ersten Befehl die Bounding-Box auf die Seitengröße setzen:

% ... 
\begin{tikzpicture}

\useasboundingbox (current page.north west) rectangle (current page.south east);

\draw[thick, dotted] (current page.north west) rectangle (current page.south east);
% ...

Das Bild ist nun eine halbe Linienbreite größer als seine Bounding-Box und steht über die Seite heraus. Das sieht nun so aus: Das Rechteck geht nun an den Seitenrändern entlang.

Im Bild will ich nun wie im Original neben jedem Knopf einen Beschriftungsbereich haben. Die einzelnen Blöcke sollen mit fetten Linien abgetrennt sein, während die zwei Zeilen und die linke und rechte Seite mit dünnen Linien abgetrennt sein sollen.

Dafür mache ich mir zwei Makros: Eins für horizontale und eins für vertikale Linien. Das für die Horizontalen nimmt den Abstand von der Oberkante und die Dicke (eine Option für \draw) als Parameter. Das für vertikale Linien den Start- und Endabstand von der Oberkante. Zweiteres benutzt einfach die Default-Dicke. Die Abstände habe ich vorher an dem Original ausgemessen. Dafür werden jetzt erstmals die Rechenoperationen von calc benötigt. Zu beachten: Anders als beim Computerbildschirm befindet sich bei tikz der Ursprung links unten.

\newcommand{\horline}[2]{
    \draw[#2] ($ (current page.north west) - (0, #1) $)
        -- ($ (current page.north east) - (0, #1) $);
}

\newcommand{\verline}[2]{
    \draw ($ (current page.north) - (0, #1) $)
        -- ($ (current page.north) - (0, #2) $);
}

Nun beginne ich in der tikzpicture-Umgebung eine Schleife:

\foreach \i in {0, ..., 4} {
% ...
}

In jeder Iteration zeichne ich einen der fünf Blöcke. Das funktioniert so: Der erste Block hat einen Abstand von 17 Millimetern von der Oberkante. Der Versatz zwischen den Blöcken ist jeweils 14mm. Der Abstand zwischen der oberen und unteren Linie eines Blocks ist 10mm, die dünne Trennlinie liegt dazwischen. Die vertikale Trennlinie soll jeweils einen geringen Abstand (0.5mm) von den horizontalen Linien haben:

\horline{17mm + 14mm*\i}{thick};
\horline{17mm + 14mm*\i + 10mm}{thick};
\horline{17mm + 14mm*\i + 5mm}{thin};

\verline{17mm + 14mm*\i + 0.5mm}{22mm + 14mm*\i - 0.5mm};
\verline{22mm + 14mm*\i + 0.5mm}{27mm + 14mm*\i - 0.5mm};

Das ergibt dann schon ein ganz gutes Bild: Ein fast fertiges Label. Ich möchte noch, dass in den jeweils unteren Zeilen ein Symbol wie auf der Shift-Taste angezeigt wird. Dafür speichere ich den Code für das Bild im Voraus in einer Variablen:

\tikzset{shift/.pic={
    code={
        \draw[very thin] (-1mm, -0.5mm) -- (0mm, -0.5mm)
            -- (0mm, 0.5mm)  -- (1mm, 0.5mm);
    }
}}

Die Methode mit pic funktioniert gut für kleine Bilder. Wenn man jedoch viele Zeichenoperationen hat, sollte man das Bild in eine separate PDF-Datei setzen und diese als Grafik einbinden.

In die Schleife kommt also noch hinzu:

\path ($ (current page.north) - (0, 17mm + 14mm*\i + 7.5mm) + (2mm, 0) $) pic {shift};
\path ($ (current page.north west) - (0, 17mm + 14mm*\i + 7.5mm) + (2mm, 0) $) pic {shift};

Ein fertiges, leeres Kurzwahl-Schild.

Jetzt könnte man das ganze schon ausdrucken. Aber ich will die Label ja fertig mit Namen bedrucken. Deshalb baue ich mir so eine Art Array von Feld-Makros. Dafür ein Setter-Makro:

\newcommand{\setfield}[2]{
    \expandafter\def\csname labelfield#1\endcsname{#2}
}

Das funktioniert so: Durch \expandafter wird zuerst \csname labelfield#1\endcsname expandiert. So wird mit dem ersten Parameter ein neuer Makroname gebaut: Ruft man z.B. \setfield{l0}{links erste Reihe} auf, so führt TeX effektiv \def\labelfieldl0{links erste Reihe} aus.

Man benötigt einen passenden Getter, der einfach nur das entsprechende Makro expandiert:

\newcommand{\getfield}[1]{
    \csname labelfield#1\endcsname
}

Damit belege ich mir einige Felder mit (zufällig erzeugten) Namen vor:

\setfield{l0}{Charikleia}
\setfield{r0}{Methodios}
\setfield{l1}{Baard}
\setfield{r1}{Aslaug}
\setfield{l2}{Hans} 
\setfield{ls0}{Cauã}
\setfield{ls1}{Pia}
\setfield{rs0}{Alkmini}
\setfield{rs1}{Wulfrun}
\setfield{l4}{vermitteln}
\setfield{r4}{Türöffner}

Ich wähle als Konvention l (r) für linke (rechte) Spalte, Zeilennummern startend mit 0 und ein zusätzliches s für "shift".

Nun muss ich die Namen nur noch im Bild setzen. Dazu kann das tikz-Makro \node verwendet werden, mit dem man beliebiges TeX im Bild platzieren kann.

\node at ($ (current page.north west) - (-10mm, 17mm + 14mm*\i + 2.5mm) $) {\getfield{l\i}};
\node at ($ (current page.north east) - (+10mm, 17mm + 14mm*\i + 2.5mm) $) {\getfield{r\i}};
\node at ($ (current page.north west) - (-10mm, 17mm + 14mm*\i + 7.5mm) $) {\getfield{ls\i}};
\node at ($ (current page.north east) - (+10mm, 17mm + 14mm*\i + 7.5mm) $) {\getfield{rs\i}};

Das fertige Beschriftungsschild. Damit ist das Label fertig. Die fertige TeX-Datei ist hier zum Download verfügbar. Es gibt natürlich viele Möglichkeiten zur Verbesserung. Man könnte mit verschiedenen Schriftgrößen arbeiten, um längere Namen drucken zu können. Eine serifenlose Schriftart wäre vermutlich schöner. Sehr zu empfehlen wäre auch, ein Style- oder Klassenpaket daraus zu machen, damit es einfacher wird, schnell ein Label zu erzeugen.

Previous Post Next Post