Wenn ich in einem Quelltext mehrere verschiedene Dokumentklassen angebe, erscheint ein Fehlermeldung. Das ist beim ersten Ansehen nachvollziehbar und sinnvoll, da sich einige Voreinstellungen ggf widersprechen(Maße etc). Es ist jedoch hinderlich, wenn ich Vorteile der einen und der anderen Klasse nach Belieben nutzen möchte, zum Beispiel, wenn ich innerhalb desselben Dokumentes zwischen unterschiedlichen Klassen hin und her schalten möchte. Man kann sich zwar aus den Klassen eine eigene Klasse zusammenwürfeln, aber das ist ein schlechte und aufwändige Lösung. Gibt es eine Möglichkeit, innerhalb eines Dokumentes die Klasse zu wechseln? Gibt es eine Möglichkeit, bestimmte Klassendefinitionen abzuschalten oder wäre es eventuell eine zukünftige Option, eine Metaklasse zu entwickeln, die klassenspezifische Einstellungen in Optionen verwandelt?

gefragt 04 Sep '13, 01:37

ctansearch's gravatar image

ctansearch
(ausgesetzt)
Akzeptiert-Rate: 18%

bearbeitet 19 Aug '14, 22:38

stefan's gravatar image

stefan ♦♦
18.3k163148

Kannst du vielleicht ein Beispiel bringen, wo das sinnvoll ist? Saputello hat ja schon die Bewerbung erwähnt, aber ich habe das Gefühl du meinst noch etwas anderes.

(04 Sep '13, 08:37) sudo

Ich habe mich bemüht, die Frage so allgemein wie sie abgefasst ist, zu beantworten. Allerdings wäre es deutlich leichter und vielleicht auch für Anwender mit ähnlichen Problemen hilfreicher, wenn die Frage konkreter wäre und sich damit auch die Antworten ganz konkret daran orientieren könnten. Deshalb habe ich u. a. auch das Beispiel mit der Bewerbung aufgegriffen, das anderenorts häufiger nachgefragt wird.

(04 Sep '13, 08:45) saputello

saputello hat die Steilvorlage mal wieder elegant versenkt. Genau die drei Fälle waren Gründe zur Frage.

(04 Sep '13, 21:18) ctansearch

@sudo Die erweiterte Idee ist, Klassendefinitionen ganz anders anzugehen und Befehlskomplexe modular anzulegen, also bspw. Definitionen von article,letter, report etc, die eine spezifische Thematik (section, dimensions etc) betreffen, jeweils in einem Block zusammenzufassen und diese optional verfügbar zu machen. Wie saputello aber richtig anmerkt, erfordert dies einen sehr großen Aufwand an Kompatibilitätsprüfungen innerhalb der Klassen. Möglich ist das sicherlich. aber gewiss eine Hölle für Entwickler.

(04 Sep '13, 22:43) ctansearch

Diese Frage ist letztlich vergleichbar mit der Frage, TeX-Code in LaTeX – Ist „Down-Compatibility“ noch möglich?. Der Hauptunterschied ist, dass hier eventuell noch mehr Informationen zwischen den unterschiedlichen Zuständen ausgetauscht werden müssten, wobei irgendwie festzulegen wäre, um welche Informationen es sich handelt. Außerdem sollen hier unterschiedliche Dinge wohl weniger aufgrund unterschiedlicher Codierungsmethoden als vielmehr unterschiedlicher zu erzielender Ergebnisse gemischt werden.

Mehrere Klassen gleichzeitig zu verwenden widerspräche jedoch der Idee, die hinter Klassen steht. In LaTeX sind Dokumentklassen so gedacht, dass eine Klasse eine bestimmte Art von Dokumenten abbildet. Wenn es also Dokumente gibt, innerhalb derer bestimmte Dinge an unterschiedlichen Stellen im Dokument unterschiedlich gehandhabt werden sollen, dann wäre der ideale Weg, eine einzige Klasse zu erstellen, die genau dies ermöglicht. Wenn ein Anwender dazu nicht in der Lage ist, sollte er sich dafür einen Klassenautoren suchen, der das ist. Dokumente dieser Art dürften außerdem eher die Ausnahme als die Regel sein.

Häufiger ist, dass man eigentlich unterschiedliche Dokumente zu einer Datei zusammenfassen will, beispielsweise für Anschreiben, Lebenslauf etc. einer Bewerbung. Hier bieten sich zwei Wege an:

  1. Tatsächlich die Einzeldokumente mit einer Art Rahmendokument verbinden. Das ist mit Hilfe von combine möglich. Allerdings funktioniert combine tatsächlich am besten, wenn alle Einzeldokumente dieselbe Klasse verwenden. Unterschiedliche Klassen und unterschiedliche Pakete sind aber in gewissen Grenzen möglich. Probleme gibt es jedoch, wenn Klassen oder Pakete verwendet werden, die inkompatibel sind.

  2. Das Zusammenbinden der Einzeldokumente auf Ebene des Ergebnisses der Einzeldokumente. Es gibt beispielsweise mehrere Werkzeuge, um PDF-Datei miteinander zu kombinieren, beispielsweise pdftk oder eine Acrobat-Vollversion oder ein minimales LaTeX-Dokument, das die Teile mit Hilfe von pdfpages lädt. Die Methode mit pdfpages kann man auch so abwandeln, dass das erste Dokument in der Datei am Ende die restlichen Dokumente lädt.

    Will man zusätzlich gemeinsame Verzeichnisse, ist ggf. etwas weitere Handarbeit notwendig aber auf Ebene der Hilfsdateien meist durchaus möglich. Querverweise zwischen den Einzeldateien sind mit Hilfe von xr möglich. Programme wie makeindex können in der Regel auch auf mehrere Hilfsdateien gleichzeitig angewendet werden. Alternativ kann man Hilfsdateien zunächst mit Hilfe von Skripten oder in Handarbeit mischen oder schlicht aneinander hängen.

Natürlich wäre auch hier der eingangs erwähnte Weg, eine einzige Klasse zu erstellen, die alle beteiligten Dokumentarten abdeckt, denkbar. Ob das sinnvoll ist, hängt letztlich davon ab, wie stark die Einzeldokumente miteinander verzahnt sein sollen, also tatsächlich ein Gesamtdokument entstehen soll, oder letztlich nur eine Datei, die mehrere Dokumente enthält.

Permanenter link

beantwortet 04 Sep '13, 08:24

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

bearbeitet 04 Sep '13, 08:42

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×38
×13
×7

gestellte Frage: 04 Sep '13, 01:37

Frage wurde gesehen: 12,898 Mal

zuletzt geändert: 19 Aug '14, 22:38