Wie kann ich coverpageleftmargin auf 80% seines vorherigen Wertes setzen? Thema ist als GELÖST markiert

Klassen und Pakete zur einfachen Umsetzung individueller Vorstellungen


M0M0
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 54
Registriert: So 24. Nov 2019, 18:59

Wie kann ich coverpageleftmargin auf 80% seines vorherigen Wertes setzen?

Beitrag von M0M0 »

\documentclass[titlepage=firstiscover]{scrreport}
\NewCommandCopy{\oldcoverpageleftmargin}  {\coverpageleftmargin}
\NewCommandCopy{\oldcoverpagerightmargin} {\coverpagerightmargin}
\renewcommand{\coverpageleftmargin}       {.8\oldcoverpageleftmargin}
\renewcommand{\coverpagerightmargin}      {.8\oldcoverpagerightmargin}

\begin{document}
 \title{Ein langer Titel der über viele Zeilen umgebrochen wird, diese möchte ich reduzieren, in dem ich  die Seitenabstände links und rechts verringere}
 \maketitel 
\end{document}

liefert einen Fehler, dass eine unbekannte Längeneinheit verwendet wurde. Mein Ziel ist es coverpageleft(right)margin auf 80% seines vorherigen Wertes zu setzen


Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2957
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Re: Wie kann ich coverpageleftmargin auf 80% seines vorherigen Wertes setzen?

Beitrag von KOMA »

Man muss dafür sorgen, dass die Makros wie Längen verwendbar sind:

\documentclass[titlepage=firstiscover]{scrreport}
\NewCommandCopy{\oldcoverpageleftmargin}  {\coverpageleftmargin}
\NewCommandCopy{\oldcoverpagerightmargin} {\coverpagerightmargin}
\renewcommand{\coverpageleftmargin}       {\dimexpr.8\oldcoverpageleftmargin\relax}
\renewcommand{\coverpagerightmargin}      {\dimexpr.8\oldcoverpagerightmargin\relax}

\begin{document}
 \title{Ein langer Titel der über viele Zeilen umgebrochen wird, diese möchte ich reduzieren, in dem ich  die Seitenabstände links und rechts verringere}
 \maketitle
\end{document}

Genau genommen braucht man aber gar nichts zwischenspeichern:

\documentclass[titlepage=firstiscover]{scrreport}
\AtBeginDocument{%
  \edef\coverpageleftmargin       {\dimexpr 0.8\coverpageleftmargin\relax}
  \edef\coverpagerightmargin      {\dimexpr 0.8\coverpagerightmargin\relax}
}
\begin{document}
 \title{Ein langer Titel der über viele Zeilen umgebrochen wird, diese möchte ich reduzieren, in dem ich  die Seitenabstände links und rechts verringere}
 \maketitle% Tippfehler korrigiert
\end{document}

Die Verwendung von \edef ist an der Stelle zulässig, weil man ja bereits weiß, dass die beiden Anweisungen existieren, und sie überschreiben will.


M0M0
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 54
Registriert: So 24. Nov 2019, 18:59

Re: Wie kann ich coverpageleftmargin auf 80% seines vorherigen Wertes setzen?

Beitrag von M0M0 »

Vielen Dank, habe wieder etwas gelernt :)


M0M0
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 54
Registriert: So 24. Nov 2019, 18:59

Re: Wie kann ich coverpageleftmargin auf 80% seines vorherigen Wertes setzen?

Beitrag von M0M0 »

Kann es sein, dass die vorgeschlagene Lösung nicht mehr mit TeX Live 2025 funktioniert? Ich habe gerade nochmals das Dokument um das es damals ging rekompiliert, aber nun ist die gesammte Titelseite leicht "nach rechts versetzt" wenn
titlepage=firstiscover
verwendet wird
\documentclass[
  titlepage=firstiscover % auskommentieren um den Effekt zu sehen
]{scrreport}

\AtBeginDocument{
	\edef\coverpageleftmargin{\dimexpr .8\coverpageleftmargin\relax}
	\edef\coverpagerightmargin{\dimexpr .8\coverpagerightmargin\relax}
}

\begin{document}
  \title{
  	  Dieser Titel ist nur dann zentriert wenn nicht titlepage=firstiscover gesetzt ist.
  	  Andernfalls ist er zu weit rechts.
  	}
  \maketitle
\end{document}

cabohah

Re: Wie kann ich coverpageleftmargin auf 80% seines vorherigen Wertes setzen?

Beitrag von cabohah »

Ich kann da keine Änderung über die TeX-Live-Versionen erkennen. Aber ich vermute, dass du etwas anderes willst, als gezeigt, nämlich, dass \coverpageleftmargin 80% des zum Zeitpunkt der Berechnung aktuellen Werts bekommt und \coverpagerightmargin schlicht denselben Wert erhält. Dann wäre deine Berechnung Unsinn, weil in der Voreinstellung \coverpagerightmargin bei dir nämlich als \def\coverpagerightmargin{\coverpageleftmargin} definiert ist. Wenn du also erst \coverpageleftmargin auf 80% von \coverpageleftmargin setzt und danach \coverpagerightmargin auf 80% von \coverpagerightmargin, dann ist \coverpagerightmargin anschließend 80% des aktuellen \coverpageleftmargin und damit 80% von 80% des ursprünglichen \coverpageleftmargin. Die Lösung wäre also \coverpagerightmargin gar nicht umzudefinieren oder erneut explizit auf \coverpageleftmargin zu setzen, also beispielsweise:
\documentclass[
  titlepage=firstiscover
]{scrreport}

\AtBeginDocument{%
%  \show\coverpageleftmargin% so kannst du in der log-Datei die vorherigen Definition sehen
%  \show\coverpagerightmargin% so kannst du in der log-Datei die vorherige Definition sehen
  \edef\coverpageleftmargin{\the\dimexpr .8\coverpageleftmargin\relax}%
  \def\coverpagerightmargin{\coverpageleftmargin}% im Beispiel nicht erforderlich, weil Voreinstellung
%  \show\coverpageleftmargin% so kannst du in der log-Datei die verwendete Definition sehen
%  \show\coverpagerightmargin% so kannst du in der log-Datei die verwendete Definition sehen
}

\begin{document}
  \title{%
  	  Dieser Titel ist unabhängig davon, ob titlepage=firstiscover gesetzt ist oder nicht, zentriert.%
  	}
  \maketitle
\end{document}
Übrigens empfehle ich, mehr auf signifikante Leerzeichen, beispielsweise durch Zeilenenden zu achten. Wenn man sich diesbezüglich einen konsequenten Stil aneignet und selbst dann durchzieht, wenn man 100% sicher ist, dass LaTeX an der Stelle Leerzeichen automatisch ignoriert, macht man deutlich weniger Fehler an Stellen, an denen LaTeX die Leerzeichen eben doch nicht ignoriert.

Antworten