Sie sind hier

addmargin

Guten Morgen alle miteinander!

Gibt es "etwas", das so arbeitet wie
\begin{addmargin*} ... \end{addmargin*},
aber über mehr als EINE Seite (das Layout ist zweiseitig)?
Konkret gehts um folgendes Problem:

Mein Dokument hat eine breite Marginalienspalte (55mm) und eine Textbreite von 120mm (5mm Abstand dazwischen). Für den nachfolgenden Index soll jedoch die Marginalienspalte verschwinden und die Textbreite vergrößert werden (Textbreite daher 180mm).

Also im Prinzip genauso wie im Latex-Begleiter!

Die gleiche Textbreite (180mm) soll allerdings auch für das Inhaltsverzeichnis am Anfang eingestellt werden!

Bild von Markus Kohm

Mit addmargin* geht das nicht. Ich habe in letzte Zeit zwar einiges an Arbeit investiert, um eine Lösung dafür zu finden, man müsste aber so tief in die output-Routine eingreifen, dass ich das verworfen habe. Im Beispiel eines zweispaltigen Index würde es ohnehin nicht funktionieren.

Da der Index üblicherweise mit einer neuen Seite beginnt, würde ich an Deiner Stelle einfach ab dem Index Satzspiegel und Ränder neu einstellen. Theoretisch geht das mit typearea. Da Du aber vermutlich einen selbst erstellen Seitenspiegel hast, werden Dir \typearea oder \areaset in dem Fall kaum das gewünschte Ergebnis liefern. Also eher ein Fall für das Paket chngpage.

Bei neueren Versionen von KOMA-Script kann man auch \activateareas verwenden. Dazu einfach nach \clearpage oder \cleardoublepage die üblichen Längen, also \textwidth, \oddsidemargin, \evensidemargin, \topmargin, \textheight, \headheight, \headsep, \marginparwidth wie gewünscht ändern und dann \activateareas aufrufen. Weil das - wie auch chngpage - ein Hack ist, gibt typearea dann eine Warnung aus, berechnet aber die LaTeX-internen Längen für die Seiten neu. In Deinem Fall läuft das also wohl auf etwas wie:

\cleardoublepage
\addtolength{\textwidth}{\marginparwidth}
\addtolength{\evensidemargin}{-\marginparwidth}
\addtolength{\textwidth}{\marginparsep}
\addtolength{\evensidemargin}{-\marginparsep}
\activateareas
\printindex

Falls erwünscht, kann man das auch wieder rückgängig machen (beispielsweise, wenn Du das für das Inhaltsverzeichnis verwendest).
Den Seitenstil musst Du eventuell auch noch an das neue Format anpassen. Am besten definierst Du Dir zwei Anweisungen, um zwischen den beiden Layouts umzuschalten.

Danke Markus!
Deine Lösung funktioniert super.
Ergänzt um die Befehle \setheadwidth... und \setfootwidth...--> das Ganze als neuer Befehl definiert --> toll!
\activateareas war mir nicht bekannt (kennst wahrscheinlich nur du als Erzeuger ?)!

Vielen Dank noch einmal!
Robert

Bild von Markus Kohm

Die Anweisung existiert zwar schon seit Version 2.96a, ist aber bisher nur mir, den Quellcode-Lesern und (theoretisch) den Testlesern der Neuauflage des KOMA-Script-Buches bekannt. Die Möglichkeit existierte zwar früher schon, aber nur als interne Anweisung unter anderem Namen.

Einer der Vorteile, wenn man sich hier anmeldet und traut, eine Frage zu stellen, ist eben, dass man auch Antworten bekommt, die (noch) undokumentierte, neue Möglichkeiten nutzen. Wer ein Minimalbeispiel zur Frage erstellt, hat sogar eine gute Chance eine getestete Antwort zu bekommen – wenn ich die Zeit dafür aufbringen kann.

Hallo Markus,

ich muss das uralte Thema noch einmal ausgraben. Hintergrund ist, dass ich bei einer Klasse für die Titel- und Part-Seiten das Layout verändere (Kopfzeile vergrößern, restliche Seitengröße darauf anpassen). Das mache ich ganz bewusst und bin sehr froh, dafür \activateareas verwenden zu können. In der Anwendung ergibt sich jedoch das Problem, dass der Benutzer dementsprechend mit Warnungen von typearea übersät wird. Gibt es eine Möglichkeit, diese zu unterdrücken bzw. temporär abzuschalten?

Grüße
Falk

Bild von Markus Kohm

Die Verwendung von \activateareas birgt ein Risiko, da diese Anweisung nur dadurch realisierbar war, dass undokumentierte Features von LaTeX verwendet wurden. Daher betrachte ich es weiterhin für sinnvoll, eine entsprechende Warnung auszugeben.

AFAIK gibt es bei CTAN ein Paket, mit dem man Meldungen aller Art gezielt abschalten kann. Auch dabei werden Interna verwendet. Dasselbe gilt, wenn man mit etoolbox die Warnung aus KOMA-Script entfernt. Ich selbst werde das jedenfalls nicht unterstützen und kann es auch nicht empfehlen.

Ok, das kann ich nachvollziehen. Vielleicht wäre ja aber möglich, die Warnung nur ein einziges Mal auszugeben? Ich habe schlichtweg das Problem, dass diese (wiederkehrende) Warnung für den Anwender möglicherweise verwirrend bzw. nicht nachvollziehbar ist, schließlich wird der \activateareas im Hintergrund und nicht explizit durch den Anwender verwendet. Falls dies aber nicht möglich ist oder zu viel Aufwand bedeutet, werde ich wohl damit leben müssen.

Ich sehe leider keine andere Möglichkeit, die mir vorgegebene Formatvorlage auf eine andere Art und Weise als eben genau mit \activateareas umzusetzen, da ich nur für die Titelseite bzw. für die Part-Seite das Seitenlayout ändern muss. Gäbe es dazu eine Alternative? Falls dir da etwas in den Sinn kommen sollte, kann ich gerne ein Minimalbeispiel aufsetzen.

Vielen Dank für dein Hilfe und viele Grüße
Falk

Bild von Markus Kohm

  • Das titlepage-Paket bietet eine Umgebung ganz ohne Ränder.
  • Die Umgebung addmargin bietet die Möglichkeit, linken und rechten Rand anzupassen. Man kann das auch mit \vspace* kombinieren, um den oberen Rand zu ändern und mit \enlargethispage für den unteren Rand.

Hallo Markus,

danke für die aufgezeigten Alternativen. Eine Umgebung ganz ohne Ränder bringt mich nicht viel weiter, da ich nur eine vertikale Verschiebung ausgleichen will. So müsste ich mich dann ja wieder händisch um den inneren und äußeren Rand kümmern. Mein erster Versuch war es auch, das vertikale Layout mithilfe von \vspace* und \enlargethispage zu verändern. Prinzipiell würde das auch funktionieren. Allerdings tritt dann aber das Problem auf, dass durch den größeren Kopf die Seitenzahlen nicht an der richtigen vertikalen Position sind. Deshalb verwende ich \activateareas. Ich werde in meiner Klasse diesen Befehl kopieren, intern mit \patchcmd abwandeln und eine angepasste Warnung einmalig ausgeben. Trotzdem vielen Dank für deine Bemühungen und Hinweise.

Vielleicht nur kurz zur Information: Ich möchte ein CD umsetzen, für das der Kopf der Titelseite und der Part-Seiten fest vorgegeben ist. Dieser Kopf ist auch wesentlich höher (Logo) als für das restliche Dokument. Allerdings kann die Fußzeile für die Part-Seiten frei gesetzt werden. Ich möchte also den Kopf unabhängig vom benutzerdefinierten Aussehen der Kopf- und Fußzeilen fest vorgeben können. Durch die lokale Änderung von \@evenhead bzw. \@oddhead bleibt die Fußzeile dabei unbehelligt.
Durch die viel größere Kopfzeile kommt es zu einer Verschiebung des kompletten Satzspiegels inklusive Fußzeile. Mit \enlargethispage kann ich zwar den Textbereich auf dieser Seite zwar anpassen, aber die Fußzeile bleibt trotzdem nach unten versetzt. Deshalb greife ich auf \activateareas zurück. Un da ich das bei jeder Part-Seite machen muss, können ggf. mehrere gleiche Warnungen auftreten, ohne das der Anwender weiß warum. Falls Interesse deinerseits besteht, mir eine bessere Lösung vorzuschlagen oder du dir einfach das Problem bzw. den aktuellen Stand genauer ansehen möchtest, erstelle ich dir gerne eine Minimalbeispiel. Ich bin allerdings mit meiner aktuellen Lösung zufriedengestellt.

Grüße
Falk

Comments for "addmargin" abonnieren