Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

jurabook/book: Abstand zwischen Nummer und Kapitelüberschrift verkleinern

42 views
Skip to first unread message

Ben Hardt

unread,
Jul 27, 2015, 10:34:43 AM7/27/15
to
Hallo,

mein Verlag möchte, dass ich den Abstand zwischen "Kapitel 1:" und
Kapitelüberschrift verkleinere. Beispiel:

\documentclass[a4paper,10pt]{jurabook}
\usepackage[utf8]{inputenc}
\setchaptername[:]{Kapitel}
\begin{document}

\chapter{Test}

\end{document}


Ich nehme an, dass ist der gleiche Abstand, der auch in book.cls
zwischen der Nummerierung und dem Titel gesetzt wird. Ich habe nur
nirgendwo in book.cls noch in dem darauf basierenden jurabook.cls (das
ich eh anpasse) gefunden, wo genau ich da etwas ändern muss.

Gruß
Ben

Markus Kohm

unread,
Jul 28, 2015, 4:11:33 AM7/28/15
to
Ben Hardt (Montag, 27. Juli 2015 16:34):

> mein Verlag möchte, dass ich den Abstand zwischen "Kapitel 1:" und
> Kapitelüberschrift verkleinere. Beispiel:
>
> \documentclass[a4paper,10pt]{jurabook}
> \usepackage[utf8]{inputenc}
> \setchaptername[:]{Kapitel}
> \begin{document}
>
> \chapter{Test}
>
> \end{document}

Mit jurabook 2007/1/09 V0.91 (beta), das bei TeX Live seit ewigen Zeiten
dabei ist, produziert Dein Beispiel unter TeX Live 2015 kein "Kapitel 1:",
sondern

§1 Test

Der Grund liegt wohl in der schlechten Mehrsprachigkeit des Pakets. Man muss
\setchaptername schon ein wenig verschieben, damit es wirkt.

Um dann den Abstand zwischen §1 und Test zu verringern, muss man in der
Definition von \@makechapterhead in Zeile 1846 und in Zeile 1852 das \@quad
jeweils beispielsweise durch ein \enskip oder ein \nobreakspace ersetzen.
Das macht man natürlich nicht direkt in der Klasse. Am einfachsten geht so
eine Änderung mit einem Paket wie xpatch direkt in der Dokumentpräambel:

\documentclass[a4paper,10pt]{jurabook}
\usepackage[utf8]{inputenc}
\usepackage{xpatch}
\makeatletter
% Alle drei \quad in \@makechapterhead durch \enskip ersetzen:
\xpatchcmd{\@makechapterhead}{\quad}{\enskip}{}{\HeyIFailedToPatch}
\xpatchcmd{\@makechapterhead}{\quad}{\enskip}{}{\HeyIFailedToPatch}
\xpatchcmd{\@makechapterhead}{\quad}{\enskip}{}{\HeyIFailedToPatch}
\makeatother
\AtBeginDocument{\setchaptername[:]{Kapitel}}

\begin{document}

\chapter{Test}

\end{document}

Dabei wird auch gleich noch der Fall mit behandelt, dass mit zentrierten
Überschriften gearbeitet wird.

Gruß
Markus Kohm
--
KOMA-Script, eine Sammlung von Klassen und Paketen für LaTeX2e
Aktuell: KOMA-Script 3.18.x (siehe <http://www.komascript.de/current>)
Anleitung: <http://www.komascript.de/scrguide>

Ben Hardt

unread,
Jul 28, 2015, 7:03:26 AM7/28/15
to
Am 28.07.2015 um 10:11 schrieb Markus Kohm:
> Ben Hardt (Montag, 27. Juli 2015 16:34):
>
>> mein Verlag möchte, dass ich den Abstand zwischen "Kapitel 1:" und
>> Kapitelüberschrift verkleinere. Beispiel:
>>
>> \documentclass[a4paper,10pt]{jurabook}
>> \usepackage[utf8]{inputenc}
>> \setchaptername[:]{Kapitel}
>> \begin{document}
>>
>> \chapter{Test}
>>
>> \end{document}
>
> Mit jurabook 2007/1/09 V0.91 (beta), das bei TeX Live seit ewigen Zeiten
> dabei ist, produziert Dein Beispiel unter TeX Live 2015 kein "Kapitel
1:",
> sondern
>
> §1 Test
>
> Der Grund liegt wohl in der schlechten Mehrsprachigkeit des Pakets.
Man muss
> \setchaptername schon ein wenig verschieben, damit es wirkt.

Korrekt, mein Minimalbeispiel war nicht ganz korrekt, \setchaptername
gehört nach \begin{document}.

>
> Um dann den Abstand zwischen §1 und Test zu verringern, muss man in der
> Definition von \@makechapterhead in Zeile 1846 und in Zeile 1852 das
\@quad
> jeweils beispielsweise durch ein \enskip oder ein \nobreakspace ersetzen.
> Das macht man natürlich nicht direkt in der Klasse. Am einfachsten
geht so
> eine Änderung mit einem Paket wie xpatch direkt in der Dokumentpräambel:
>
> \documentclass[a4paper,10pt]{jurabook}
> \usepackage[utf8]{inputenc}
> \usepackage{xpatch}
> \makeatletter
> % Alle drei \quad in \@makechapterhead durch \enskip ersetzen:
> \xpatchcmd{\@makechapterhead}{\quad}{\enskip}{}{\HeyIFailedToPatch}
> \xpatchcmd{\@makechapterhead}{\quad}{\enskip}{}{\HeyIFailedToPatch}
> \xpatchcmd{\@makechapterhead}{\quad}{\enskip}{}{\HeyIFailedToPatch}
> \makeatother
> \AtBeginDocument{\setchaptername[:]{Kapitel}}
>
> \begin{document}
>
> \chapter{Test}
>
> \end{document}
>
> Dabei wird auch gleich noch der Fall mit behandelt, dass mit zentrierten
> Überschriften gearbeitet wird.

Danke Markus, das wars. Danke auf für die Lösung mit xpatch, auch wenn
ich es in der Klasse selbst ändere, die bei mir dann juramohrbook.cls
heißt. Ich muss eine Reihe von Sachen ändern, da erschien es mir
einfacher, eine eigene Klasse zu erstellen als über xpatch zu arbeiten.
Wofür steht \HeyIFailedToPatch?

Gruß
Ben

Markus Kohm

unread,
Jul 28, 2015, 7:30:36 AM7/28/15
to
Ben Hardt (Dienstag, 28. Juli 2015 13:03):

> Wofür steht \HeyIFailedToPatch?

Das letzte Argument von \xpatchcmd wird abgearbeitet, wenn patchen nicht
möglich war. Im Beispiel wäre \HeyIFailedToPatch ein undefiniertes Macro,
also würde sich LaTeX über ein nicht definiertes Macro \HeyFailedToPatch
beschweren. Damit hätte man dann wenigsten eine Fehlermeldung. Ich war
schlicht zu faul, eine echte Fehlermeldung (beispielsweise mit
\GenericError) zu bauen.

Ben Hardt

unread,
Aug 9, 2015, 7:59:23 AM8/9/15
to
> Das letzte Argument von \xpatchcmd wird abgearbeitet, wenn patchen nicht
> möglich war. Im Beispiel wäre \HeyIFailedToPatch ein undefiniertes Macro,
> also würde sich LaTeX über ein nicht definiertes Macro \HeyFailedToPatch
> beschweren. Damit hätte man dann wenigsten eine Fehlermeldung. Ich war
> schlicht zu faul, eine echte Fehlermeldung (beispielsweise mit
> \GenericError) zu bauen.

Verstehe, brauche ich dann bei meiner direkten Änderung im cls-Dokument
nicht.

Jetzt will der Verlag die gleiche Abstandsverkürzung auch bei den
unteren Ebenen (section usw.) erreichen? Bei den entsprechenden
Definitionen in jurabook.cls steige ich nicht durch, um den richtigen
Ansatzpunkt zu finden.

Gruß
Ben

Ben Hardt

unread,
Aug 11, 2015, 2:46:30 AM8/11/15
to
Am 09.08.2015 um 13:59 schrieb Ben Hardt:
>> Das letzte Argument von \xpatchcmd wird abgearbeitet, wenn patchen nicht
>> möglich war. Im Beispiel wäre \HeyIFailedToPatch ein undefiniertes Macro,
>> also würde sich LaTeX über ein nicht definiertes Macro \HeyFailedToPatch
>> beschweren. Damit hätte man dann wenigsten eine Fehlermeldung. Ich war
>> schlicht zu faul, eine echte Fehlermeldung (beispielsweise mit
>> \GenericError) zu bauen.
>
> Verstehe, brauche ich dann bei meiner direkten Änderung im cls-Dokument
> nicht.
>
> Jetzt will der Verlag die gleiche Abstandsverkürzung auch bei den
> unteren Ebenen (section usw.) erreichen?
Habe es gefunden: jurabook greift da auf die normale Definition
(\@seccntformat) zurück, so dass ich den Abstand durch eine
entsprechende Umdefinition einfach verkürzen kann:

\renewcommand{\@seccntformat}[1]{%
\csname the#1\endcsname\nobreakspace}

Gruß
Ben


Markus Kohm

unread,
Aug 25, 2015, 6:24:53 AM8/25/15
to
Ben Hardt (Sonntag, 9. August 2015 13:59):

> Verstehe, brauche ich dann bei meiner direkten Änderung im cls-Dokument
> nicht.

Hoffentlich nach Umbenennung etc. entsprechend der Lizenz (AFAIK LPPL),
falls Du die Datei irgendwann mal (und sei es versehentlich) weitergibst –
beispielsweise an den Verlag.

0 new messages