Discussion:
Problem mit Registerhaltigkeitseingabe (mit Minimalbeispiel)
(zu alt für eine Antwort)
Markus Gail
2021-05-22 10:19:15 UTC
Permalink
Hallo!

Das nachfolgende Minimalbeispiel funktioniert problemlos mit TeXLive-2015
und -2016, ab TeXLive-2019 gibt es Probleme mit der Kapitelüberschrift.

Bei einem Buchprojekt kommt die Fehlermeldung, daß das fehlende \endcsname
eingefügt wurde. Beim Minimalbeispiel kommt \undefined control sequence.

Ich fürchte, ich habe zuwenig Ahnung, um das in Ordnung zu bringen. Kann
jemand helfen?

Danke!

Gruß
M.


%!TEX encoding = UTF-8 Unicode

\documentclass[11pt]{book}

\usepackage{lipsum}



%% Registerhaltigkeit

\makeatletter

\newbox\tmpboxa
\newbox\tmpboxb
\newdimen\tmpdimena
\renewcommand*{\@makechapterhead}[1]{%
\***@chapter@***@preamble%
\setbox\tmpboxa=\vbox{\@@makechapterhead{#1}}%
\tmpdimena=\ht\tmpboxa \advance\tmpdimena by\dp\tmpboxa
\advance\tmpdimena by.9999\normalbaselineskip
\divide\tmpdimena by\normalbaselineskip
\multiply\tmpdimena by\normalbaselineskip
\vbox to\tmpdimena{\unvbox\tmpboxa\vfill\vbox to0pt{\hbox{\
\hskip3cm}\vss}}%
\***@preamble{***@u}\nobreak%
\nointerlineskip

}

\def\@sect#1#2#3#4#5#6[#7]#8{%
\ifnum #2>\***@secnumdepth
\let\@svsec\@empty
\else
\refstepcounter{#1}%
\***@edef\@svsec{\@seccntformat{#1}\relax}%
\fi
\setbox\tmpboxa=\vbox{%
\@tempskipa #5\relax
\ifdim \@tempskipa>\z@
\begingroup
#6{%
\@hangfrom{\hskip #3\relax\@svsec}%
\interlinepenalty \@M #8\@@par}%
\endgroup
\else
\def\@svsechd{%
#6{\hskip #3\relax
\@svsec #8}%
}%
\fi
}%
\tmpdimena=\ht\tmpboxa \advance\tmpdimena by\dp\tmpboxa
\advance\tmpdimena by\normalbaselineskip
\divide\tmpdimena by\normalbaselineskip
\multiply\tmpdimena by\normalbaselineskip
\vbox to\tmpdimena{\vfill\unvbox\tmpboxa\vbox
to0pt{\hbox{\ \hskip 3cm}\vss}}%
\csname #1mark\endcsname{#7}%
\addcontentsline{toc}{#1}{%
\ifnum #2>\***@secnumdepth \else
\protect\numberline{\csname the#1\endcsname}%
\fi
#7}%
\@xsect{#5}\nointerlineskip}

\def\@xsect#1{%
\@tempskipa #1\relax
\ifdim \@tempskipa>\z@
\par \nobreak
\setbox\tmpboxa=\vbox{\vskip \@tempskipa}%
\tmpdimena=\ht\tmpboxa \advance\tmpdimena by\dp\tmpboxa
\advance\tmpdimena by.5\normalbaselineskip
\divide\tmpdimena by\normalbaselineskip
\multiply\tmpdimena by\normalbaselineskip
\vbox to\tmpdimena{\vbox
to0pt{\hbox{}\vss}\unvbox\tmpboxa\vfill}%
\@afterheading
\else
\@nobreakfalse
\global\@noskipsectrue
\everypar{%
\***@noskipsec
\global\@noskipsecfalse
{\setbox\z@\lastbox}%
\clubpenalty\@M
\begingroup \@svsechd \endgroup
\unskip
\@tempskipa #1\relax
\hskip -\@tempskipa
\else
\clubpenalty \@clubpenalty
\everypar{}%
\fi}%
\fi
\ignorespaces}

\makeatother

%% Registerhaltigkeit Ende


\begin{document}

\chapter{Lorem ipsum}

\section{Dolor sit amet}

\lipsum

\chapter{Lorem ipsum}

\section{Dolor sit amet}

\lipsum

\end{document}
Ulrike Fischer
2021-05-22 10:41:57 UTC
Permalink
Post by Markus Gail
Hallo!
Das nachfolgende Minimalbeispiel funktioniert problemlos mit TeXLive-2015
und -2016, ab TeXLive-2019 gibt es Probleme mit der Kapitelüberschrift.
Bei einem Buchprojekt kommt die Fehlermeldung, daß das fehlende \endcsname
eingefügt wurde. Beim Minimalbeispiel kommt \undefined control sequence.
Ich fürchte, ich habe zuwenig Ahnung, um das in Ordnung zu bringen. Kann
jemand helfen?
Der Befehl gehört(e) zu scrbook, dein Beispiel, das book benutzt,
funktioniert mit Sicherheit auch nicht in texlive 2015.

Falls das echte Dokument scrbook verwendet, kann das vielleicht
funktioniert haben, aber das KOMA intern sich massiv geändert hat,
würde ich nicht darauf bauen, dass es das immer noch tut.

Der Code muss wahrscheinlich grundlegend neu geschrieben werden.
--
Ulrike Fischer
http://www.troubleshooting-tex.de/
Markus Gail
2021-05-22 10:48:44 UTC
Permalink
Post by Ulrike Fischer
Post by Markus Gail
Das nachfolgende Minimalbeispiel funktioniert problemlos mit TeXLive-2015
und -2016, ab TeXLive-2019 gibt es Probleme mit der Kapitelüberschrift.
Bei einem Buchprojekt kommt die Fehlermeldung, daß das fehlende \endcsname
eingefügt wurde. Beim Minimalbeispiel kommt \undefined control sequence.
Ich fürchte, ich habe zuwenig Ahnung, um das in Ordnung zu bringen. Kann
jemand helfen?
Der Befehl gehört(e) zu scrbook, dein Beispiel, das book benutzt,
funktioniert mit Sicherheit auch nicht in texlive 2015.
Stimmt, hatte ich im Minimalbeispiel vergessen zu ändern.

Für mein Buchprojekt verwende ich scrbook.
Post by Ulrike Fischer
Falls das echte Dokument scrbook verwendet, kann das vielleicht
funktioniert haben, aber das KOMA intern sich massiv geändert hat,
würde ich nicht darauf bauen, dass es das immer noch tut.
Der Code muss wahrscheinlich grundlegend neu geschrieben werden.
Mmh, das wäre schade.

Trotzdem danke für die schnelle Rückmeldung!

Gruß
M.

Lesen Sie weiter auf narkive:
Loading...