PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Präambel wie css auslagern?



Federstrich
17-06-2010, 11:58
Hallo Leute,

schon seit einer Weile frage ich mich, ob ich meinen LaTeX-Workflow nicht verbessern könnte, indem ich mir ein paar Masterpräambeln erstelle, die ich dann lediglich in meine TeX-Dateien einbinde.

Ich habe also die Frage: Kann ich die gesamte Präambel aus meinen TeX-Dateien auslagern?

Für mich hätte dies viele Vorteile:
- ich hätte je ein Layout für Berichte, Protokolle, Präsentationen, die alle gleich aussehen
- es wäre leichter, das Layout der Dokumente global zu verwalten
- ich müsste mich wirklich nur noch um den Inhalt kümmern und hätte oben im Dokument lediglich eine Zeile der Art \IncludeLayout(/user/home/bericht)
- die Dokumente würden übersichtlicher
- ich hätte einen Ordner, in dem sich alle meine Präambeln befinden: Copy-Paste-Geschichten (also eine Präambel von einem Dokument ins nächste kopieren) würde komplett wegfallen...

Bisher bin ich den Weg immer umgekehrt gegangen und habe per \include oder \input Dokumente eingebunden.
Das hat aber mehrere fiese Nachteile:
- ich überschreibe damit immer die älteren Dateien
- ich muss jede Datei umbennen, da sie zunächst alle bericht.tex heißen
- ich habe immer das Dokument mit der Präambel geöffnet und den Text, an dem ich gerade arbeite...

Wisst ihr eine Lösung dafür? Ich glaube, dass es klüger wäre die Präambel in den Inhalt einzubinden und nicht den Inhalt in die Präambel. Ähnlich wie das auch im Webdesign gemacht wird, wo ganz klar der Inhalt wichtiger ist als das Layout: ich binde hier ein stylesheet in mein html-Dokument ein. So wie das bei LaTeX geregelt ist, scheint mir die Priorität mehr auf dem Layout zu liegen. Funktioniert für LaTeX auch die stylesheet-Methode?

Vielen Dank für eure Hilfe
Federstrich

u_fischer
17-06-2010, 12:31
Nun, natürlich geht das. Du lädst doch bereits jetzt per \documentclass/\usepackage externe (Layout)-Dateien. Du kannst selbstverständlich eigene "myclass.cls" oder "mypackages.sty" schreiben, die alle deine Pakete laden und Einstellungen machen. Du kannst auch \input in der Präambel benutzen.

Die wesentliche Frage ist, inwieweit es sinnvoll ist. Eigene Pakete und Klassen habe ein paar Nachteile:
- Es ist schwerer für Fragen ein Minimalbeispiel zu erstellen.
- Auf Dauer vergisst du vielleicht, was du so alles in dein lokales Paket getan hast, und hast dann vielleicht mögliche Nebeneffekte nicht mehr im Griff. Außerdem wird es anwachsen. Eine Präambel hast du immer im Blick, und wenn sie unübersichtlich wird, fühlst du dich eher gezwungen mal aufzuräumen.
- Du wirst unflexibler. Z.B. Lädt dein Paket vielleicht hyperref mit bestimmten Optionen. Was machst du, wenn du einmal andere Optionen brauchst?
- Wenn du dein lokales Paket änderst, z.B. weil du bei einem neueren Dokument irgendwas anderst haben willst, kann das auf alle alten Dokumente zurückschlagen.

Federstrich
17-06-2010, 12:59
Das stimmt, Ulrike, darüber sollte ich nachdenken!

In einem Fall muss ich dir aber die Zustimmung verweigern: Und zwar genau dann, wenn es mir nicht um individuell neu gestaltete Dokumente geht.

Ich spreche von Berichten, Protokollen und Artikeln, die immer gleich aussehen sollen - immer. Das sind Textdokumente im wahrsten Sinne, ohne Bilder, ohne Schnickschnack. Dort ist es wichtig, schnell gut lesbare Dokumente zu erstellen (das ist auch der einzige Grund, weshalb ich dafür LaTeX benutze, txt-files kann ich nicht abgeben).
Präambeln hin und her zu kopieren ist nicht zeitgemäß, außerdem will ich nicht ständig überprüfen, ob ich mit \include{*.tex} die letzte pdf-Datei überschrieben habe, weil ich sie nicht zusätzlich unter anderem Namen gespeichert habe. Die tex-Dateien lösche ich, da Protokolle nicht überarbeitet werden müssen. Mir reichen zum Archivieren die pdf-Dateien.

Ich verstehe, dass viele hier den Wunsch haben, ihre Dokumente auch noch in Jahrzehnten überarbeiten zu können. Ich arbeite nun schon seit mehr als zehn Jahren mit Texten und in all der Zeit habe ich alte Texte zwar des öfteren gelesen, aber nur in ein oder zwei Fällen recyclen müssen. Würde ich ein Buch schreiben, das in mehreren Auflagen rauskommen soll, so würde ich mir natürlich die Möglichkeit offen halten, den Quelltext zu überarbeiten. In den meisten anderen Fällen interessiert mich diese Möglichkeit jedoch nicht.

Vielleicht hat der Wunsch nach Vereinfachung etwas damit zu tun, wie ich LaTeX inzwischen nutze. Zu Beginn meiner LaTeX-Zeit habe ich noch Dutzende Pakete eingebunden und oft hat die Dauer der Gestaltung die des Schreibens überstiegen.
Inzwischen bin ich eher Minimalist und gehe äußerst sparsam mit den vielen verschiedenen Paketen um. Da liegt der Wunsch nach stylesheets eben nicht mehr fern... Außerdem ist Schlichtheit immer noch ein Merkmal guter Typographie.

Wenn ich ein Dokument erstelle, mit dem ich beeindrucken will, dann werde ich die Präambel sicherlich neu schreiben, im Alltagsgeschäft versuche ich das jedoch zu vermeiden.

Ich werde mir die von dir genannten "myclass.cls" und "mypackages.sty" genau ansehen. Vielen Dank für den Hinweis, er ist sehr wertvoll für mich.

Viele Grüße
Federstrich

lockstep
17-06-2010, 13:28
Eigene Pakete und Klassen habe ein paar Nachteile:
[...]
- Auf Dauer vergisst du vielleicht, was du so alles in dein lokales Paket getan hast, und hast dann vielleicht mögliche Nebeneffekte nicht mehr im Griff. Außerdem wird es anwachsen. Eine Präambel hast du immer im Blick, und wenn sie unübersichtlich wird, fühlst du dich eher gezwungen mal aufzuräumen.

Ich persönlich bin gerade durch die Tatsache, dass fast alle Einstellungen in meinem lokalen Paket konzentriert sind, dazu motiviert, dieses Paket aufgeräumt zu halten und bei Erweiterungen auf Nebenwirkungen zu achten.



- Du wirst unflexibler. Z.B. Lädt dein Paket vielleicht hyperref mit bestimmten Optionen. Was machst du, wenn du einmal andere Optionen brauchst?

Das Problem lässt sich oft dadurch umgehen, dass man a) die speziellen Optionen nachträglich mittels eines setup-Befehls in der Dokumentpräambel umstellt (z.B. \captionsetup für die Einstellungen des Pakets caption) oder b) Pakete zwar in "mypackages.sty" lädt, aber die zugehörigen Optionen als Klassenoption mitgibt (z.B "english,ngerman" für die Pakete babel, varioref und cleveref).

lockstep

voss
17-06-2010, 13:49
schon seit einer Weile frage ich mich, ob ich meinen LaTeX-Workflow nicht verbessern könnte, indem ich mir ein paar Masterpräambeln erstelle, die ich dann lediglich in meine TeX-Dateien einbinde.

Ich habe also die Frage: Kann ich die gesamte Präambel aus meinen TeX-Dateien auslagern?


man kann sich eine eigene Dokumentenklasse definieren, die dann
schon all das enthält, was imemr geladen wird. Das ist noch effektiver
als \input{...}

Herbert

Federstrich
17-06-2010, 13:53
Hallo Herbert,

vielen Dank für den Hinweis! Vielleicht verstehe ich dich falsch, aber es geht mir nicht darum, das Rad neu zu erfinden. Ich bin mit KOMA sehr zufrieden. Ich hatte eher an eine Lösung gedacht, die auf bestehenden Strukturen aufbaut.

Könntest du mir ein paar Anhaltspunkte geben, welche Kenntnisse ich benötige und wie gut ich programmieren können muss, um eine gute Klasse für mich zu erstellen?

Danke für die Unterstützung
Federstrich

voss
17-06-2010, 14:10
vielen Dank für den Hinweis! Vielleicht verstehe ich dich falsch, aber es geht mir nicht darum, das Rad neu zu erfinden. Ich bin mit KOMA sehr zufrieden. Ich hatte eher an eine Lösung gedacht, die auf bestehenden Strukturen aufbaut.

Könntest du mir ein paar Anhaltspunkte geben, welche Kenntnisse ich benötige und wie gut ich programmieren können muss, um eine gute Klasse für mich zu erstellen?


http://mirror.ctan.org/graphics/pstricks/base/doc/

darin findest du als Beispiel die Dokumentenklasse pst-doc.cls
und den Indexstil pst-doc.ist

Eine Anwendung für die Klasse findest du beispielsweise hier:
http://mirror.ctan.org/graphics/pstricks/contrib/pst-func/

pst-doc benutzt ebenfalls scrbook, definiert aber den ganzen Kram
bereits, den man jedesmal neu festlegen müsste, wenn man eine
Doku zu einem PSTricks-Paket schreibt.

Herbert

Federstrich
17-06-2010, 14:54
Danke Herbert!

Das war genau das, was ich gesucht habe. Ich wusste nicht, dass ich auf Koma--Script aufbauend mir meine eigenen Klassen zusammenbasteln kann. Für sich ständig wiederholende Schreibarbeiten ist das DIE Lösung.

Zum Schluss noch eine ganz verwegene Frage: Kann ich meine neue bericht.cls-Datei auf meinem Webspace speichern, und sie via \documentclass{http://www.blabla.de/Latex/class/bericht.cls} in das .tex-Dokument einbinden?

So könnte ich selbst auf fremden Systemen meine Präambeln immer benutzen und sie sogar meinen Mitarbeitern zur Verfügung stellen. Wenn ich das Corporate Design ändere, ändert es sich gleich auch für alle Mitarbeiter mit, ohne dass ich erst jedem die veränderte Klasse aufspielen muss...

Vielen, vielen Dank
Federstrich

voss
17-06-2010, 14:56
Das war genau das, was ich gesucht habe. Ich wusste nicht, dass ich auf Koma--Script aufbauend mir meine eigenen Klassen zusammenbasteln kann. Für sich ständig wiederholende Schreibarbeiten ist das DIE Lösung.

Zum Schluss noch eine ganz verwegene Frage: Kann ich meine neue bericht.cls-Datei auf meinem Webspace speichern, und sie via \documentclass{http://www.blabla.de/Latex/class/bericht.cls} in das .tex-Dokument einbinden?

geht nicht



So könnte ich selbst auf fremden Systemen meine Präambeln immer benutzen und sie sogar meinen Mitarbeitern zur Verfügung stellen. Wenn ich das Corporate Design ändere, ändert es sich gleich auch für alle Mitarbeiter mit, ohne dass ich erst jedem die veränderte Klasse aufspielen muss...


lade sie auf CTAN hoch und dann wird sie Teil eienr jeden TeX-Distribution.

Herbert