PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dokumentklassen in LaTeX



André25
02-12-2011, 01:33
Hallo Freunde!

Ich bin mitten in meinem (zweiten) Studium und stehe kurz davor einen ersten Bericht zu schreiben. Aus meinen (weniger guten) Vorerfahrungen wollte ich eigentlich auf ein Schreiben mit Word verzichten.

Mit LaTeX komme ich gut zu recht. Das Problem ist aber nun, dass wir nach den Richtlinien der APA (American Psychological Association) schreiben müssen und die Vorgaben für ALLES im Text bis ins allerkleinste Detail vorgegeben sind.

Die eigentliche verfügbare Dokumentklasse APA bezieht sich noch auf die veraltete 5. Edition, die deutlich anders gestaltet ist und fällt somit weg. Nun hatte ich nach längerem Suchen eine Dokumentklasse für 6. Edition (http://code.google.com/p/apa6e/downloads/detail?name=apa6e-v0.3.zip) gefunden. Allerdings ist das, wie der Autor selbst schreibt, eine "minimalist class file". Sie spezifiziert also einige Dinge nicht so recht. Manche sind im amerikanischen auch anders als wir dies machen sollen oder tlw. haben wir einige spezifische Vorgaben - die so natürlich in der Klasse nicht umgesetzt sind.

So, lange Rede - wenig Sinn; ich hab ja auch noch Fragen: Wenn ich jetzt die Textformatierung so anpassen will, wie ich sie brauche, muss ich doch die *.cls Datei bearbeiten, oder? Was ist das in dieser Dokumentenklassen-Datei für eine "Sprache" und gibt es hierfür Dokumentationen?

Wenn ich es irgendwie schaffe, eine entsprechende Dokumentklasse anzupassen/zu entwerfen, dann habe ich auch für alle folgenden Arbeiten (und das werden noch ein paar sein) viel gewonnen. Wenn ich aber nicht schon am Anfang auf LaTeX setze und doch zu einem Office Produkt übergehe, werde ich es wohl sicher gar nicht mehr angehen (ganz abgesehen davon, dass das mit einem Office Programm auch nicht sooo ohne ist...).

Würde mich freuen, wenn jemand einen guten Tipp für mich hat!

Besten Dank und liebe Grüße,

André :)

sommerfee
02-12-2011, 06:56
So, lange Rede - wenig Sinn; ich hab ja auch noch Fragen: Wenn ich jetzt die Textformatierung so anpassen will, wie ich sie brauche, muss ich doch die *.cls Datei bearbeiten, oder?

Nein. Natürlich wäre es der "schönere" Weg, aber ob man zusätzliche Anweisungen oder Modifikationen in die cls-Datei schreibt, oder in sein Dokument, es geht beides. Man kann sie auch erst in den Dokumentenvorspann schreiben, und dann später in eine eigene cls-Datei übernehmen oder...


Was ist das in dieser Dokumentenklassen-Datei für eine "Sprache"

LaTeX bzw. TeX.


und gibt es hierfür Dokumentationen?

Speziell für Dokumentenklassen gibt es den clsguide (Einfach 'mal "texdoc clsguide" auf der Kommandozeile eingeben), und dann könnte man article.dtx mit LaTeX übersetzen, dann erhält man eine kommentierte Ausgabe des Quellcodes der article-Klasse. Sich den Quelltext von apa6.cls anzuschauen kann sicherlich auch nicht schaden. Was das eigene Layout etc. angeht, sollte sich in jedem LaTeX-Buch etwas dazu finden lassen, z.B. in der "LaTeX Referenz" von Herbert Voß: http://www.dante.de/index/Literatur/LaTeXRef.html

Entscheidet man sich dazu, nicht bei apa6 anzufangen, sondern von vorne, könnte man auch auf die Idee kommen, auf KOMA-Script aufzusetzen. Damit hat man eine sehr mächtige Klasse als Basis, die sehr viele Modifikationsmöglichkeiten von sich aus mitbringt. (texdoc scrguide) Die Möglichkeiten von KOMA-Script sind so zahlreich, daß es die Anleitung auch als Buch gibt: http://www.dante.de/index/Literatur/KOMA-Script.html

Schweinebacke
02-12-2011, 16:03
und dann könnte man article.dtx mit LaTeX übersetzen, dann erhält man eine kommentierte Ausgabe des Quellcodes der article-Klasse.
article.dtx gab es noch zu LaTeX2.09-Zeiten. Seit LaTeX2e ist classes.dtx die Quelldatei der Standard-Klassen.


Die Möglichkeiten von KOMA-Script sind so zahlreich, daß es die Anleitung auch als Buch gibt: http://www.dante.de/index/Literatur/KOMA-Script.html
Eventuell gibt es bei DANTE noch ein paar Exemplare des Buches für Mitglieder. Lehmanns (http://www.lob.de/isbn/3865412912) führt das Buch seit Wochen mit dem Status "Titel wird nachgedruckt". Der Autor gibt allerdings auf Nachfrage die Auskunft, dass sich ein weiterer Nachdruck der 3. Auflage nicht mehr lohne.

Worauf ich aber eigentlich hinweisen wollte (und was ich jetzt fast vergessen hätte): cls-Dateien sollte man in keinem Fall ändern. Wenn schon, sollte man eine Wrapper-Klasse schreiben, in der die ursprüngliche Klasse mit <code>\LoadClass</code> oder <code>\LoadClassWithOptions</code> geladen wird. Näheres zu diesen beiden Anweisungen ist in dem von sommerfee bereits genannten clsguide zu finden.

André25
03-12-2011, 10:33
Hallöchen zusammen!

Danke für die Antworten! So ein Buch ist mir "zu viel". Hört sich sehr interessant an, aber das schaffe ich so nebenbei nicht.

Zitat von sommerfee: Natürlich wäre es der "schönere" Weg [die *.cls Datei zu bearbeiten] vs. Zitat von Schweinebacke: cls-Dateien sollte man in keinem Fall ändern.

Widerspricht sich ein bisschen. Ich weiß aber, was mit dem Vorbehalt gemeint ist. Ganz nachvollziehen kann ich ihn nicht. Ich passe mir die Klasse so an, wie ich sie brauche und kann dann immer so drauf zurück greifen...

Gibt es eigentlich ein Programm, in dem ich meine Formatangaben auswählen/eintragen kann und welches mir eine cls-Datei auswirft?

Besten Dank und viele Grüße,

André :D

Schweinebacke
03-12-2011, 11:21
Widerspricht sich ein bisschen. Ich weiß aber, was mit dem Vorbehalt gemeint ist. Ganz nachvollziehen kann ich ihn nicht. Ich passe mir die Klasse so an, wie ich sie brauche und kann dann immer so drauf zurück greifen...
Das ist bei einer Wrapper-Klasse auch so. Du hast aber bei einer Wrapper-Klassen den Vorteil, dass Du nur den Code selbst pflegen musst, den Du selbst geschrieben hast. Gleichzeitig profitierst Du automatisch von Bug-Fixes und Erweiterungen der Basisklasse. Wenn Du hingegen eine Klassendatei selbst bearbeitest, musst Du Dich ab dem Zeitpunkt um den kompletten Code selbst kümmern.

Wenn Du Dich trotzdem daran wagst, eine fremde Klassendatei zu ändern, dann solltest Du unbedingt die Lizenz gründlich lesen. So ist es beispielsweise nach LPPL AFAIK u. a. nicht zulässig eine geänderte Klassendatei ohne das Original weiterzugeben bzw. anderen verfügbar zu machen. Außerdem darf sich die geänderte Klasse nicht mehr als die ursprüngliche Klasse identifizieren (das betrifft u. a. die Kommentare am Anfang der Klassendatei, alle Fehlermeldungen, Warnunen etc. und auch den Klassenname). Bei einer Wrapper-Klasse spart man sich diese rechtlichen Probleme.

Zum Schluss noch der Hinweis: Vieles, was bei anderen Klassen aufwändig neu implementiert werden muss oder nur mit zusätzlichen Paketen (deren Anleitung man ebenfalls lesen muss) zu erreichen ist, ist bei den KOMA-Script-Klassen konfigurierbar. Deshalb ist das Buch auch so dick. Trotzdem gehe ich davon aus, dass es häufig schneller ist, die relevanten Teile des Buchs (oder auch das ganze Buch) zu lesen, als sich mit der Programmierung einer Klasse zu beschäftigen. Ich besitze selbst alle bisherigen Auflagen des Buches und habe sie alle komplett gelesen - diverse Abschnitte auch mehrfach. Ich war auch immer überrascht, wie schnell ich das jeweilige Buch durch hatte. Dazu lagen die Bücher nach der Anschaffung immer ein paar Tage in meinem Badezimmer … Honi soit qui mal y pense.

sommerfee
03-12-2011, 15:03
Zitat von sommerfee: Natürlich wäre es der "schönere" Weg [die *.cls Datei zu bearbeiten] vs. Zitat von Schweinebacke: cls-Dateien sollte man in keinem Fall ändern.

Widerspricht sich ein bisschen.

Nein. Was ich meinte, ist das Erstellen einer eigenen cls-Datei gemäß clsguide als "schöneren" Weg (im Vergleich zum Ändern des Layouts im Dokument selber), da habe ich mich wohl unklar ausgedrückt.

Hierbei kann man natürlich eine existierende als Basis nehmen; diese bindet man aber entweder in seine Dokumentenklasse ein, oder aber modifziert sie (und gibt ihr einen neuen Namen und Dateinamen), je nachdem, was sinnvoller ist. Das hängt von der Art der Änderungen und der Anzahl der Änderungen ab. Möchte ich nur ein paar Dinge anpassen bzw. anders haben, würde ich immer eine Wrapperklasse schreiben. (Gründe dafür hat Schweinebacke ja schon dargelegt, und ich bin ganz auf seiner Linie.)

Schweinebacke
03-12-2011, 19:44
und gibt ihr einen neuen Namen und Dateinamen und ändert unverzüglich alle Vorkommen des Klassennamens in Befehlen wie <code>\ProvidesClass</code>, <code>\typeout</code>, <code>\ClassError…</code>, <code>\ClassWarning…</code>, <code>\ClassInfo…</code>. Auch den Copyright-Kommentar am Anfang der Klasse sollte man unverzüglich anpassen. Dort sollte man sowohl den Abstammung angeben, als auch klar darauf hinweisen, wer für die Änderungen verantwortlich ist.

Bei einem Verlag war beispielsweise einmal eine Klasse in Umlauf, die sich selbst in Fehlermeldungen als scrbook ausgegeben hat. Markus hat damals auf komascript.de extra eine Warnung vor dieser (gegen die LPPL verstoßende) Klasse ausgegeben, nachdem er mehrere Support-Anfragen dazu erhalten hatte. Vermutlich hatte der Klassenbastler nicht erwartet, dass die Klasse vom Verlag irgendwann bis an die Autoren verteilt wird. Früher oder später tauchen modifizierte Klassen aber nicht selten in freier Wildbahn auf. Deshalb sollte man solche Probleme bereits im Ansatz vermeiden.

André25
04-12-2011, 21:06
Hallo Freunde!

Ja, Ihr habt mich überzeugt. ;) Ich habe mir das Buch Koma-Script bestellt (es gibt solche Buchsuchmaschinen und die finden noch Anbieter, wo es das noch gibt). Danke auch "Benutzer mit dem lustigen Namen" für die Anmerkungen zu den rechtlichen Bedingungen!

Finde ich in dem Buch alles, um eine solche Wrapper-Klasse zu erstellen?

In meinem Fall heißt meine Hauptklasse (od. wie man die in diesem Fall nennt) apa6e.cls. Dort sind Zeilen, wie:
\RequirePackage[margin=1in,headheight=15pt]{geometry} % bei dieser möchte ich, dass die "headheight=15pt" weg sind
Author Note\par\RaggedRight\@authornote% statt "Author Note" soll hier "Autorenhinweis" stehen
\mspart{Abstract}% statt "Abstract" soll es "Zusammenfassung" heißen

Das wären doch sicher nicht viele Einträge, oder? Das in der *.cls zu ändern wäre natürlich schon recht einfach. Ich habe aber nun verstanden, dass das nicht sehr schön ist.

Ich stecke zwar momentan mächtig viel Arbeit darin, die gewünschte Formatdefinitionen zu haben (und überhaupt mich adäquat in LaTeX einzuarbeiten), aber ich verspreche mir dann davon, bei weiteren Dokumenten einen klaren Vorteil zu haben. Das ist schon genial, die Elemente einzugeben und ein den Vorstellungen entsprechenden Output zu generieren (also das LaTeX Konzept allgemein).

Besten Dank und liebe Grüße,

André :D

sommerfee
04-12-2011, 21:17
Finde ich in dem Buch alles, um eine solche Wrapper-Klasse zu erstellen?

Nein, die Informationen dazu findet man im clsguide. Das KOMA-Script-Buch macht IMHO nur dann Sinn, wenn du eine neue Klasse "from the scratch", basierend auf KOMA-Script, erstellen willst. (Das hatte ich in http://www.mrunix.de/forums/showpost.php?p=337131&postcount=2 auch so geschrieben.) Soll deine eigene Klasse auf apa6e.cls aufbauen, brauchst du das Buch IMHO nicht.


Dort sind Zeilen, wie: \RequirePackage[margin=1in,headheight=15pt]{geometry} % bei dieser möchte ich, dass die "headheight=15pt" weg sind

Kein Problem, rufe in deiner Wrapperklasse \geometry{...} mit denjenigen Optionen auf, die du haben möchtest, und überschreibe damit die Einstellungen in apa6e.cls.


Author Note\par\RaggedRight\@authornote% statt "Author Note" soll hier "Autorenhinweis" stehen

Definiere das Kommando um, in dem das steht.

usw.

P.S.:: Du kennst http://www.ctan.org/pkg/apa6 ? Vielleicht ist diese Klasse näher an deinen Vorstellungen als apa6e?

André25
04-12-2011, 23:03
Definiere das Kommando um, in dem das steht.

Ich finde noch heraus wie das geht. ;)


P.S.:: Du kennst http://www.ctan.org/pkg/apa6 ? Vielleicht ist diese Klasse näher an deinen Vorstellungen als apa6e?

Nein, kannte ich noch nicht! Das ist ja der Hammer!!! http://www.cosgan.de/images/midi/froehlich/b020.gif Nach so etwas habe ich die ganze Zeit gesucht! http://www.cosgan.de/images/midi/froehlich/a115.gif Ich hatte nur die apa6e gefunden. Boah! Danke! http://www.cosgan.de/images/midi/froehlich/k020.gif

(Jetzt hoffe ich nur, dass die Klasse hält was sie verspricht ;) ).

Liebe Grüße,

André

Schweinebacke
05-12-2011, 08:54
Finde ich in dem Buch alles, um eine solche Wrapper-Klasse zu erstellen?

In meinem Fall heißt meine Hauptklasse (od. wie man die in diesem Fall nennt) apa6e.cls.
Du hast da etwas völlig falsch verstanden. Das KOMA-Script-Buch behandelt die KOMA-Script-Klassen (und KOMA-Script-Pakete) sowohl für relative Anfänger unter den Anwendern als auch für fortgeschrittene Anwender, die alle möglichen Einstellungen ändern wollen. Mit apa6e hat das rein gar nichts zu tun. Wenn Du ein Buch über LaTeX-Programmierung im allgemeinen suchst (und da Du anscheinend noch nicht weißt, wie man Befehle umdefinieren, wäre das sicher eine gute Idee), wäre eher »Der LaTeX Begleiter« (http://www.lehmanns.de/shop/mathematik-informatik/13670449-9783868940886-der-latex-begleiter-bafoeg-ausgabe) etwas für dich. Die darin aufgeführten Pakete sind zwar nicht mehr das neuste vom neusten. Sie sind aber größtenteils noch immer aktuell, so dass der Begleiter zusammen mit der jeweiligen Paketdoku noch immer sehr gut zu gebrauchen ist.

André25
05-12-2011, 11:16
Hallöchen Schweinebacke!


Du hast da etwas völlig falsch verstanden. Das KOMA-Script-Buch behandelt die KOMA-Script-Klassen (und KOMA-Script-Pakete) sowohl für relative Anfänger unter den Anwendern als auch für fortgeschrittene Anwender, die alle möglichen Einstellungen ändern wollen. Mit apa6e hat das rein gar nichts zu tun.

Da hast Du jetzt aber etwas falsch verstanden. Ich habe nie gemeint, dass das Buch etwas mit apa6e zu tun hat.


Wenn Du ein Buch über LaTeX-Programmierung im allgemeinen suchst (und da Du anscheinend noch nicht weißt, wie man Befehle umdefinieren, wäre das sicher eine gute Idee), wäre eher »Der LaTeX Begleiter« (http://www.lehmanns.de/shop/mathematik-informatik/13670449-9783868940886-der-latex-begleiter-bafoeg-ausgabe) etwas für dich.

Danke für den Tipp mit dem Buch. Ich hatte vor gut einem Jahr (digitale) Einführungsbücher zu LaTeX gelesen (so etwas wie "LaTeX – Eine Einführung und ein bisschen mehr.pdf"; und habe auch Programmier- und HTML-Kenntnisse) und mache es seither so, dass ich learning by doing praktiziere. Ich schreibe los und suche mir dann im Netz die Antworten die ich gerade benötige. Wenn ich damit nicht weiter komme, frage ich z.B. hier im Forum.

Liebe Grüße und besten Dank,

André :cool: