# dvdcoll.cls v1.1a+
Footnote †: dvdcoll.cls@dvdcoll.josef-kleber.de

A class for typesetting DVD archives+
Footnote †: dvdcoll.cls@dvdcoll.josef-kleber.de

Josef Kleber

[http://dvdcoll.josef-kleber.de](http://dvdcoll.josef-kleber.de)

26. April 2008

Zusammenfassung

Eines Tages verlor ich den Uberblick uber meine DVD Sammlung. Ich konnte mich nicht mehr daran erinnern, ob ich die Dokumentation - die an diesen Abend im Fersehen laufen wurde - schon aufgenommen hatte. Ich entschied mich daher eine Ubersicht mit der Hilfe von LaTeX zu erstellen. Ich dachte an ein verlinktes und voll durchsuchbares PDF-Dokument, das alle DVDs mit ihren Titeln, Inhaltsbeschreibungen1, Langen und so weiter enthalt. Weitere Anforderungen waren die Unterstutzung der Staffeln von Fernsehserien, sowie eine Liste mit allen fehlenden oder fehlerhaften Aufnahmen, um diese erneut aufnehmen zu konnen.

dvdcoll.cls folgt der Struktur <Nummer><Titel><Lange>. Deshalb ist die Klasse nicht begrenzt auf DVD Sammlungen. Sie konnen selbstverstandlich auch Sammlungen von CD-ROMs, Audio-CDs und so weiter erstellen.

**Benotige Klassen und Pakete**

die Klassen aus dem KOMA-Script-Bundle (ab v2.96), sowie hyperref (v6.77m), xkeyval, ifthen, tabularx, booktabs, array, multicol, ragged2e, ifpdf, marginnote und die von diesen Paketen aufgerufenen Dateien.


## 1 Einfaches Beispiel

Zunachst werfen wir einen Blick auf ein einfaches und eigentlich selbsterklaren redes Beispiel:

\documentclass[pagenumbers=yes]{dvdcolU}

\usepackage[german]{babel}

\usepackage[[atin1]{inputec}

\usepackage[T1]{fontenc}

\usepackage{textcomp}

\usepackage{bgra}

\begin{document}

\tableofcontents

\DvdPart{Fernsehserien}

\DvdSeries{Jake 2.0}

\begin{Dvd}{\{}

\DvdTitle{Geburt eines Helden}{40:16}

\DvdTitle{Erste Schritte}{39:45}

\DvdTitle{Die China-Connection}{40:14}

\DvdTitle{Die Waffen und das M\dchen}{38:29}

\end{Dvd}

\begin{Dvd}{\{}

\DvdTitle{Die Akte Dumont}{38:50}

\DvdTitle{Der Feind in meinem Korper}{39:52}

\DvdTitle{Jerry 2.0}{39:53}

\DvdTitle{Der Mittelsmann}{39:21}

\end{Dvd}

\end{document}

Ein grosserees und komplexeres Beispiel (mehr Details, Befehle, Optionen,...) finden Sie in der Datei dcexample.<tex/pdf>.

Wie Sie sehen ist die Nutzung von dvdcoll.cls nicht sonderlich schwer!

## 2 Klassenoptionen

Die Klassenoptionen werden mit allen m\oglichen Werten aufgefuhrt. Die jeweiligen Default-Werte sind **fett** gedruckt.

### dvdlabel

\dvdlabel = \(\langle\)_wide_\(\rangle\), \(\langle\)narrow\(\rangle\)

Bei Verwendung der Option \(\langle\)_wide_\(\rangle\) werden die Label rechtsbundig gesetzt, wohingegen die Label mit der Option \(\langle\)_narrow_\(\rangle\) in kurzen Abstand direkt hinter den DVD Titel gesetzt werden.

### dvdskip

\[\text{dvdskip = }\langle\text{small}\rangle,\langle\textbf{medium}\rangle, \langle\text{big}\rangle\]

Die Option dvdskip beeinflusst den vertikalen Abstand zwischen zwei DVDs (Dvd). Spielen Sie einfach etwas mit den Werten, um die Einstellung zu finden, die Ihren Erwartungen entspricht.

### Language

\[\text{language = }\langle\textbf{babel}\rangle,\text{ eine andere Sprache}\]

dvdcoll.cls wurde so programmiert, dass es problemlos mit allen Sprachen funktioniert, sofern fur die jeweilige Sprache eine Definitionsdatei vorliegt. Die folgende Tabelle gibt einen Uberblick uber die momentan unterstutzten Sprachen. Sie konnen jederzeit eine Definitionsdatei fur Ihre Sprache anlegen.

\[\text{Sprachen}^{2} \text{mogliche Optionen}^{3}\]

\[\text{deutsch} \langle\text{german}\rangle,\langle\langle\text{german}\rangle\rangle, \langle\text{ngerman}\rangle,\langle\text{austrian}\rangle,\langle\text{naustrian}\rangle\] \[\text{englisch} \langle\text{english}\rangle,\langle\text{UKenglish}\rangle, \langle\text{Ugtish}\rangle,\langle\text{USenglish}\rangle,\langle\text{(american)},\langle\text{canadian}\rangle\rangle,\langle\text{australian}\rangle,\langle\text{(newzealand)}\rangle\] franzosisch \langle\text{french}\rangle,\langle\langle\text{french}\rangle\rangle, \langle\langle\text{francais}\rangle\rangle,\langle\langle\text{acadian}\rangle\rangle, \langle\langle\text{canadien}\rangle\rangle\] italienisch \[\langle\text{italian}\rangle\] polnisch4 \[\langle\text{polish}\rangle\] portugisisch \[\langle\text{portuges}\rangle,\langle\text{(portuguese)}\rangle,\langle\text{brazilian}\rangle,\langle\text{(brazil)}\rangle\] spanish \[\langle\text{spanish}\rangle\]

Die Auswertung der Option Language folgt dabei den nachfolgenden Prioritaten:

1. explizit angegebene Option
2. Ubernahme der Option, die an das Paket babel ubergeben wurde
3. Ruckgriff auf die Default-Option \(\langle\text{english}\rangle\)

Daraus folgt, dass Sie nicht unbedingt eine Sprache spezifizieren mussen. Zunachst versucht dvdcoll.cls die Option, die an das Paket babel ubergeben wurde, auszuwerten. Sollte das nicht gelingen wird notfalls auf den Defaultwert \(\langle\text{english}\rangle\) zuruckgegriffen!

### 2.4 pagenumbers

\[\text{pagenumbers = }\langle\textbf{yes}\rangle,\langle\text{no}\rangle\]

Der Vermutung folgend liefert die Option \(\langle\text{yes}\rangle\) Seiten mit Seitenzahlen, wohingegen die Option \(\langle\text{no}\rangle\) zu Seiten ohne Seitenzahlen fuhrt.

### 2.5 heading

\[\text{heading = }\langle\text{\bf nonumber}\rangle,\langle\text{\bf number}\rangle\]

Analog zu voriger Option liefert \(\langle\text{\bf nonumber}\rangle\) unnummerierte Uberschritten und \(\langle\text{\bf number}\rangle\) nummerierte Uberschritten.

Tip1 Falls Sie auch eine Printversion erzeugen mochten, sollten Sie die Kombination pagenumbers = \(\langle\text{\bf no}\rangle\) und heading = \(\langle\text{\bf nonumber}\rangle\) uberdenken. Sie mussen nur die neuen Seiten drucken und in Ihren Papierberg einsortieren.

### 2.6 pdfencoding

pdfencoding = \(\langle\text{\bf pdfdocencoding}\rangle,\langle\text{\bf unicode}\rangle\)

Um das korrekte Setzen der Bookmarks und Beschreibungen in den PDF Annotations zu gewahrleisten verfugt dvdcoll.cls seit Version 1.1 uber die Klassenoption pdfencoding. Es besteht die Moglichkeit zwischen PDFDocEncoding (entspricht in etwa latin1) und Unicode zu wahlen. Fur das Umwandeln in das jeweilige Encoding nutzt dvdcoll.cls den Befehl \(\backslash\)pdfstringdef aus dem Paket hyperref. Leider ist die Kodierung eine nicht ganz triviale Angelegenheit und der Algorithmus den \(\backslash\)pdfstringdef verwendet eher fur kurze Texte geeignet, da er nichtlineare Komplexitat aufweist. Mit wachsender Textlange - besonders in den Beschreibungen - steigt die Laufzeit des Algorithmus uberproportional an. Daher verfugt dvdcoll.cls uber eine vereinfachte - aber laufzeitoptimierte - Version dieses Befehls, der leider nur mit PDFDocEncoding funktioniert. Deshalb sollte - wenn moglich - immer PDFDocEncoding verwendet werden. Unglucklicherweise ist das aber nur bei Sprachen moglich, die sich mit dem Zeichenvorrat von PDFDocEncoding beginugen. Das sind im wesentlichen die Sprachen Westeuropas. Daraus folgt, dass die Unterstutzung des gesamten polinschen Zeichensatzes nur mit der Option \(\langle\text{\bf unicode}\rangle\) moglich ist. Wegen der weiter oben geschilderten Probleme bei der Unicode-Kodierung ist es empfehlenswert die Texte der Beschreibungen moglichst kurz zu halten, was selbstverstandlich zu einem gewissen Zielkonflikt zwischen Textlange und Nutzbarkeit fuhrt. Abschliessend mochte ich noch darauf hinweisen, dass kein Zusammenhang zwischen Input-Encoding (z.B.utf8) und der Option \(\langle\text{\bf unicode}\rangle\) besteht, d.h. es konnen auch unicode-kodierte Dateien mit der Option \(\langle\text{\bf dfdocencoding}\rangle\) von pdflatex bearbeitet werden, falls man sich dabei auf die Zeichen, die in PDFDocEncoding enthalten sind, beschrankt.


bzw. "01x15 Hemlock'. Sie konnen das Ausgabeformat jederzeit andern durch Umdefinieren des Befehls \dc@print@counter.

Durch Setzen der Befehlsoption [\(\dvdnumering)] auf den Wert \season\ wird auch eine zusatzliche Ebene 'Staffel' in die Bookmarks eingefuhrt, um die DVDs in die jeweilige Staffel einzuordnen.

Die optionalen Befehlsoptionen [\labelbase)]* konnen benutzt werden, um die DVDs einer Serie automatisch mit Labeln zu versehen. Diese Label haben das folgende Format:

\[\labelbaseprefix\]

\[\labelbase\]

\[\labelbasesuffix\]

Dabei hat [\labelbase\]

\[\labelbaselength\]

\[\labelbaselength\]

\[\labelbaseprefix=EB01, EB02,... (labelbase=1, labelbaselength=2 (default: 4), labelbaseprefix=EB).

Falls Sie eine DVD Liste mit dem Befehl \listofdvds (siehe: 4.4.3) \ersstellen mochten, sollten die Label im gesamten Dokument dieselbe Lange aufweisen, um eine schone Ausgabe zu erreichen.

### DVD Titel Befehle

\DvdTitle(\{\_tuple\})\{\(\_length\})\DvdTitle dient der Festlegung der einzelnen Titel der DVD inerhalb der Umgebung Dvd.

Mit dem zweiten obligatorischen Argument \(\{\_length\}\) definieren Sie die Lange der jeweiligen Sendung, der im Dokument der Zusatz **min** folgt. Sie konnen das mit dem Befehl \SetThirdColumnAddition andern. (see: 4.4.2)

AuSerdem konnen Sie das Argument \(\{\_length\}\) dazu benutzen, um die Sendung als fehlerhaft oder fehlend zu markieren. Dadurch wird der Titel in die Liste der fehlerhaften oder fehlenden Aufzeichnungen aufgenommen. (siehe: 4.4.5) Alle im Moment unterstutzten Sprachen nutzen dazu den Buchstaben **F**.

#### 4.2.2 \DvdTitleWithDescription

\DvdTitleWithDescription \DvdTitleWithDescription entspricht dem Befehl \DvdTitle mit dem Unterstablied, daB \(\{\_title\}\) mit einem Link zu einer PDF Annotation versehen wird mit der Beschreibung der Sendung. (siehe: 4.2.3)

\Description(\{\_description\}) Sie mussen \Description vor \DvdTitleWithDescription (siehe: 4.2.2) benutzen, um mit dem Argument \(\{\_description\}\) die Beschreibung festzulegen, die in eine PDF Annotation gesetzt wird.

#### 4.2.4 \AutoTitle

\AutofTitle Falls Sie einen Zusatztitel an den automatisch erstellten Titel anfugen mochten, konnen Sie einfach den Befehl \AutoTitle im Argument \(\{\_title\}\) verwenden und einfach Ihren Zusatztitel anfugen.


#### 4.4.3 Ulstofdvds

\listofdvds erzeugt eine Liste der DVDs mit \(\(\mathit{columns})\) (default: 2) Spalten, fur die ein Label angegeben wurde, um sie ins Archiv einzuordnen. Das optionale Argument \(\(\mathit{heading})\) | dient zur Anderung der vordefinierten Uberschrift. Um diese Liste erzeugen zu konnen, schreibt dvdcoll.cls eine Datenbank on-the-fly im BiBTEX-Format in das Arbeitsverzeichnis. Nachfolgend muß ein Aufnuf von BibTEX erfolgen mit im allgemeinen zwei weiteren Aufnufen von (pdf)latex.

#### 4.4.4 \listofemptydescriptions

\listofemptydescriptions erzeugt ein Verzeichnis mit den Titeln, fur die nur eine leere Beschreibung vorliegt. (siehe: 4.2.3) Damit hat man eine gute Grundlage fur eine weitere Recherche, z.B. im Internet auf Fan-Seiten.

#### 4.4.5 \listoffaultyrecordings

\listoffaultyrecordings erzeugt ein Verzeichnis, vergleichbar mit dem Inhaltsverzeichnis, das die Sendungen enthalt, die als fehlerhaft oder fehlend markiert wurden.

#### 4.4.6 \SetLFRName

\SetLFRName(\(\mathit{lfframe})\) Falls Ihnen die vordefinierte Uberschrift der LFR-Liste nicht gefallt, konnen Sie mit dem Befehl \SetLFRName Ihre eigene Uberschrift festlegen.

#### 4.4.7 \pdfmarginnote

\pdfmarginnote setzte eine PDF Annotation in den Rand. Der Defaultwert des optionalen Arguments \(\{\mathit{style}\}\) | ist auf 'Help'6 festgelegt.

## Literatur

* URL: [http://partners.adobe.com/public/developer/en/pdf/PDFReference16.pdf](http://partners.adobe.com/public/developer/en/pdf/PDFReference16.pdf)
* URL: [http://partners.adobe.com/public/developer/en/acrobat/sdk/pdf/javascript/AcroJS.pdf](http://partners.adobe.com/public/developer/en/acrobat/sdk/pdf/javascript/AcroJS.pdf)

* ISBN 3-8266-0785-6

* ISBN 3-936427-45-3
* ISBN 3-8273-7166-X
* ISBN 3-7723-6109-9


