Markus Kohm, the author of KOMA-Script
(see his initials), utters about this frequently, but unluckily for TeX.SE usually in German.
Also I would prefer to say, some packages are not fully compatible instead of they are incompatible, because in most cases they work partially and often there’s a workaround.
Every package, that makes a redefinition of titling and heading, is potentially not fully compatible. A well-known example is titlesec
, where here on TeX.SE we have already a related question: Incompatibilities between KOMA-Script and titlesec.
Also packages with a heavy redefinition of footnote related stuff are potentially not fully compatible. I myself noticed, that footnotebackref
only works with an active symbol
(the footnote number is not turned into an active link, confer package manual).
By the way: This works fine:
\usepackage[symbol=${}^{\scriptscriptstyle\uparrow}$]{footnotebackref}% needs "hyperref"
The caption
package is according to its package documentation not fully compatible. But actually this was quite more serious in older versions both of caption
and KOMA-Script
(see also comment below of caption
author Axel Sommerfeldt).
Package minitoc
changes \@sect
and so breaks quite a number of KOMA-adaptions to section.
Packages tocloft
, titletoc
and tocbibind
also are not fully compatible with KOMA-script.
As old scrpage2
or new scrlayer-scrpage
is part of KOMA-Script
(but is a package and can be used with other classes!):
- Package
xwatermark
relies on fancyhdr
, so with scrpage2
/scrlayer-scrpage
you will get error messages.
If you want the same footskip
as used by the standard class article
then change it to 30pt
:
\documentclass[12pt,a4paper]{scrartcl}
\usepackage[margin=2cm,
footskip=30pt% <- added
]{geometry}
\begin{document}
A test document: \the\footskip
\end{document}
Explanation:
With a KOMA-Script class the \footskip
is set to 3.5\baselineskip
. The standard classes article
and report
use 30pt
as \footskip
while the book
class uses .35in
with fontsize 10pt
, .38in
with 11pt
and 30pt
with fontsize 12pt
. If you change only the margins using package geometry
the \footskip
is not changed even if you use a standard class. See the following example:
\documentclass[12pt,a4paper]{article}
\usepackage[
margin=30pt,
showframe% to show the page layout
]{geometry}
\begin{document}
A test document: \the\footskip
\end{document}
Result:
As you can see the page number can be also too close to the paper edge even if the standard class article
is used. Hence the page number is not placed wisely by the standard class - its baseline is simple placed 30pt
below the text body.
So if you change the margins manually it is your task to manually adjust the footskip
.
If the baseline of the page number should be in the middle of the white space you can use footskip=1cm
(= half of the bottom margin). Or choose something like footskip=\dimexpr1cm+.7ex\relax
if the page number should be nearly centered in the white space at the bottom.
Update/Addition (regarding the changed question and a comment)
Here is your second example using the packages showframe
and layout
:
\documentclass[12pt,a4paper,headsepline,twoside=false]{scrbook}
\usepackage[left=3.50cm, right=2.50cm, top=2.5cm, bottom=2.5cm,
%includehead,
]{geometry}
\usepackage{pagegrid}
\pagegridsetup{tl,firstcolor=blue!50}
\usepackage{showframe}
\usepackage{layout}
\usepackage{lipsum}
\begin{document}
\layout
\chapter{Test Chapter}
\lipsum[10]
\clearpage
\noindent\lipsum[10]
\end{document}
Result:
As you can see the text body starts 2.5cm below of the paper edge. Note that the KOMA option headsepline
sets the KOMAoption headinclude
for the KOMA package typearea
. But you change your layout using geometry
. So you have to tell this package that the header should be included. If you uncomment its option includehead
in the example you get
Now the top of the header is 2.5cm below of the paper edge.
The command \layout
from the package layout
shows us the exact values
The top of the header is 1inch+\voffset+\topmargin
below of the paper edge. Note that \voffset
is normally 0pt
. With option includehead
this results in your 2.5cm (set by geometry
).
The text body starts 1inch+\voffset+\topmargin+\headheight+\headskip
below of the paper edge. Without option includehead
this results in 2.5cm (set by geometry
).
Using geometry
you can controll:
- the distance to the text body (without
includehead
) or the distance to the top of the header by the geometry
option top
- the height of the head by the
geometry
option headheight
- the sep between header and text body by the
geometry
option headsep
See the documentation of geometry
for more Information.
Best Answer
Three aspects here, one on design, one on macro programming, one policy.
At the design level, it's well-known that the standard classes are somewhat esoteric without modification. However, there are many (probably millions) of documents out there which rely on the standard designs or on altering them in a predictable way. Any changes to the core styling would have a severe knock-on.
The second aspect is that changing anything in a macro can affect usage. For example, any code wanting to check 'is the header set up unchanged' will be caught out if the standard header code is altered. For example, if a change to the standard classes broke
fancyhdr
, that would be much worse than leaving the standard classes alone.The third aspect is consistency. Yes, there are few hooks for style changes in the core. That's been the case from day one and it's self-consistent if sometimes annoying. Adding some style hooks ad hoc without a complete overhaul would potentially be much more confusing. Packages can do that as they focus on one area. The team are keen to have new interfaces, but want those to apply in a systematic way: that's much more tricky.