% \iffalse meta-comment %/GitFileInfo=tudscr-twocolfix.dtx % % TUD-Script -- Corporate Design of Technische Universität Dresden % ---------------------------------------------------------------------------- % % Copyright (C) Falk Hanisch , 2012-2022 % % ---------------------------------------------------------------------------- % % This work may be distributed and/or modified under the conditions of the % LaTeX Project Public License, either version 1.3c of this license or % any later version. The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3c or later is part of all distributions of % LaTeX version 2008-05-04 or later. % % This work has the LPPL maintenance status "maintained". % % The current maintainer and author of this work is Falk Hanisch. % % ---------------------------------------------------------------------------- % % \fi % % \iffalse ins:batch + dtx:driver %<*ins> \ifx\documentclass\undefined \input docstrip.tex \ifToplevel{\batchinput{tudscr.ins}} \else \let\endbatchfile\relax \fi \endbatchfile % %<*dtx> \ProvidesFile{tudscr-twocolfix.dtx}[2022/08/09] \RequirePackage{tudscr-gitinfo} \documentclass[english,ngerman,xindy]{tudscrdoc} \iftutex \usepackage{fontspec} \else \usepackage[T1]{fontenc} \usepackage[ngerman=ngerman-x-latest]{hyphsubst} \fi \usepackage{babel} \usepackage{tudscrfonts} \usepackage[babel]{microtype} \GitHubBase{\TUDScriptRepository} \begin{document} \author{Falk Hanisch\TUDScriptContactTitle} \maketitle \tableofcontents \DocInput{\filename} \end{document} % % \fi % % \selectlanguage{ngerman} % % \changes{v2.05}{2016/04/25}{Überprüfen der Definition von \cs{@topnewpage} % des \LaTeXe"~Kernels}^^A % % \ToDo{Als eingenständiges Paket herauslösen}[v2.08] % \ToDo{CheckCommand verwenden?}[v2.08] % % % % \section{Das Paket \pkg{twocolfix} -- Bugfix für den zweispaltigen Satz} % % Der \LaTeXe"~Kernel enthält einen % \href{http://latex-project.org/cgi-bin/ltxbugs2html?pr=latex/3126}{Fehler}, % wodurch im zweispaltigen Satz Kapitelüberschriften höher als im % einspaltigen Layout gesetzt werden. Zwar ist dieser schon länger bekannt, % jedoch bisher noch nicht behoben (\GitHubRepo(latex3/latex2e)<509>). % % Das Paket \pkg{twocolfix} soll dies beheben. Eine Integration des Bugfixes % in \KOMAScript{} wurde bereits bei Markus Kohm angefragt, jedoch % \href{http://www.komascript.de/node/1681}{von ihm nicht weiter verfolgt}. % % \begin{macrocode} %<*package> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{twocolfix}[% %!TUD@Version package (twocolumn layout bugfix)% ] % % \end{macrocode} % % \iffalse %<*package> % \fi % % Es wird der fehlerhafte Befehl aus dem \LaTeXe"~Kernel neu definiert. % Allerdings definieren die \KOMAScript-Klassen das Makro \cs{@topnewpage} % um und sichern vorher das Original in \cs{scr@topnewpage}. Daher wird der % neue Befehl erst temporär definiert. % \begin{macrocode} \long\def \@tempa [#1]{% \@nodocument% \@next\@currbox\@freelist{}{}% \global \setbox\@currbox% \vbox {% \break% \prevdepth\z@% \begingroup% \normalcolor% \hsize\textwidth% % \end{macrocode} % Damit der Inhalt des optionale Argumentes mit den gleichen Absatzeinstellungen % gesetzt wird, werden diese nach \cs{@parboxrestore} für \KOMAScript-Klassen % wiederhergestellt. % \begin{macrocode} \@parboxrestore% \ifcsname KOMAClassName\endcsname% \KOMAoptionOf[\KOMAoption{parskip}]{\KOMAClassFileName}{parskip}% \fi% \col@number \@ne% \ignorespaces #1\par% \ifdim\parskip>\z@\null\fi% \vskip -\dbltextfloatsep% \endgroup% \ifdim\parskip>\z@\vskip\parskip\else\null\fi% \vskip -\topskip% }% \begingroup% \splitmaxdepth\maxdepth \splittopskip\topskip% \setbox\@tempboxa \vsplit\@currbox to\z@% \endgroup% \ifdim \ht\@currbox>\textheight% \ht\@currbox \textheight% \fi% \global \count\@currbox \tw@% \@tempdima -\ht\@currbox% \advance \@tempdima -\dbltextfloatsep% \global \advance \@colht \@tempdima% \ifx \@dbltoplist \@empty% \else% \@latexerr{Float(s) lost}\@ehb% \let \@dbltoplist \@empty% \fi% \@cons \@dbltoplist \@currbox% \global \@dbltopnum \m@ne% \ifdim \@colht<2.5\baselineskip% \@latex@warning@no@line {Optional argument of \noexpand\twocolumn too tall on page \thepage}% \@emptycol% \if@firstcolumn% \else% \@emptycol% \fi% \else% \global \vsize \@colht% \global \@colroom \@colht% \@floatplacement% \fi% } % \end{macrocode} % Um eine Änderung am \LaTeXe-Kernel feststellen zu können, wird auf die zum % Zeitpunkt des Paketes aktuelle Definition von \cs{@topnewpage} geprüft. % \begin{macrocode} \long\def\@tempb[#1]{% \@nodocument \@next\@currbox\@freelist{}{}% \global \setbox\@currbox \color@vbox \normalcolor \vbox {% \hsize\textwidth \@parboxrestore \col@number \@ne #1% \vskip -\dbltextfloatsep }% \color@endbox \ifdim \ht\@currbox>\textheight \ht\@currbox \textheight \fi \global \count\@currbox \tw@ \@tempdima -\ht\@currbox \advance \@tempdima -\dbltextfloatsep \global \advance \@colht \@tempdima \ifx \@dbltoplist \@empty \else \@latexerr{Float(s) lost}\@ehb \let \@dbltoplist \@empty \fi \@cons \@dbltoplist \@currbox \global \@dbltopnum \m@ne \ifdim \@colht<2.5\baselineskip \@latex@warning@no@line {Optional argument of \noexpand\twocolumn too tall on page \thepage}% \@emptycol \if@firstcolumn \else \@emptycol \fi \else \global \vsize \@colht \global \@colroom \@colht \@floatplacement \fi } % \end{macrocode} % \begin{macro}{\@topnewpage} % \begin{macro}{\scr@topnewpage} % Nachdem der neue Befehl sowie die Definition aus dem \LaTeXe-Kernel zuerst % temporär definiert wurden, wird nun abhängig von der aktiven Klasse der % notwendige Befehl mit der neuen Definition überschrieben. % \begin{macrocode} \ifx\scr@topnewpage\@undefined \@check@eq\@topnewpage\@tempb% \let\@topnewpage\@tempa% \else \@check@eq\scr@topnewpage\@tempb% \let\scr@topnewpage\@tempa% \fi % \end{macrocode} % \end{macro}^^A \scr@topnewpage % \end{macro}^^A \@topnewpage % % \iffalse % % \fi % % \PrintBackMatter % \endinput