124 lines
4.2 KiB
Plaintext
124 lines
4.2 KiB
Plaintext
|
|
% Section heading formatting for the SKS @document klammer.
|
||
|
|
%
|
||
|
|
% The \sect command dispatches between book and article document classes.
|
||
|
|
% Section klammers (@s1-@s7) emit \sA-\sE, which expand to the appropriate
|
||
|
|
% LaTeX sectioning command based on \documentisbook. The \defineheading
|
||
|
|
% utility eliminates duplication across heading levels.
|
||
|
|
|
||
|
|
\usepackage[bf,sf,big,raggedright,compact,newlinetospace,explicit,pagestyles,clearempty]{titlesec}
|
||
|
|
\usepackage{etoolbox}
|
||
|
|
\usepackage{ifthen}
|
||
|
|
|
||
|
|
% --- Structure dispatch ---
|
||
|
|
|
||
|
|
% Select first or second argument based on document class:
|
||
|
|
\newcommand{\sect}[2]{\ifthenelse{\equal{\documentisbook}{true}}{#1}{#2}}
|
||
|
|
|
||
|
|
% Sectioning commands, shifted by structure:
|
||
|
|
\newcommand{\sA}{\sect{\chapter}{\section}}
|
||
|
|
\newcommand{\sB}{\sect{\section}{\subsection}}
|
||
|
|
\newcommand{\sC}{\sect{\subsection}{\subsubsection}}
|
||
|
|
\newcommand{\sD}{\sect{\subsubsection}{\paragraph}}
|
||
|
|
\newcommand{\sE}{\sect{\paragraph}{\subparagraph}}
|
||
|
|
|
||
|
|
% Counters, shifted by structure:
|
||
|
|
\newcommand{\snA}{\sect{\thechapter}{\thesection}}
|
||
|
|
\newcommand{\snB}{\sect{\thesection}{\thesubsection}}
|
||
|
|
\newcommand{\snC}{\sect{\thesubsection}{\thesubsubsection}}
|
||
|
|
\newcommand{\snD}{\sect{\thesubsubsection}{\theparagraph}}
|
||
|
|
\newcommand{\snE}{\sect{\theparagraph}{\thesubparagraph}}
|
||
|
|
|
||
|
|
% Font sizes, shifted by structure:
|
||
|
|
\newcommand{\fsect}[2]{\ifthenelse{\equal{\documentisbook}{true}}{\sfont{#1}}{\sfont{#2}}}
|
||
|
|
\newcommand{\fA}{\fsect{1.6}{1.2}}
|
||
|
|
\newcommand{\fB}{\fsect{1.2}{1.1}}
|
||
|
|
\newcommand{\fC}{\fsect{1.1}{1.1}}
|
||
|
|
\newcommand{\fD}{\fsect{1.1}{1.1}}
|
||
|
|
\newcommand{\fE}{\fsect{1.1}{1.1}}
|
||
|
|
|
||
|
|
% --- Shared heading parameters ---
|
||
|
|
|
||
|
|
\newlength{\beforeheading}\setlength{\beforeheading}{4pt}
|
||
|
|
\newlength{\afterheading}\setlength{\afterheading}{-4pt}
|
||
|
|
\newcommand{\numsep}{8pt}
|
||
|
|
|
||
|
|
% Outdent section numbers into the left margin:
|
||
|
|
\newlength{\sectionoutdent}
|
||
|
|
\newcommand{\numleft}[1]{%
|
||
|
|
\ifthenelse{\equal{#1}{}}%
|
||
|
|
{}%
|
||
|
|
{\setlength{\sectionoutdent}{0pt-\widthof{#1}-8pt}%
|
||
|
|
\hspace*{\sectionoutdent}}}
|
||
|
|
|
||
|
|
% --- Heading definition utility ---
|
||
|
|
|
||
|
|
% Define titleformat and titlespacing for a heading level.
|
||
|
|
% #1 = LaTeX sectioning command (e.g., \section, \chapter)
|
||
|
|
% #2 = font command (e.g., \fA)
|
||
|
|
% #3 = counter (e.g., \thesection, \thechapter)
|
||
|
|
\newcommand{\defineheading}[3]{%
|
||
|
|
\titlespacing*{name=#1}{0pt}{\beforeheading}{\afterheading}%
|
||
|
|
\titleformat{name=#1}[block]%
|
||
|
|
{#2\numleft{#3}}%
|
||
|
|
{#2#3}%
|
||
|
|
{\numsep}%
|
||
|
|
{##1}%
|
||
|
|
\titlespacing*{name=#1,numberless}{0pt}{\beforeheading}{\afterheading}%
|
||
|
|
\titleformat{name=#1,numberless}[block]%
|
||
|
|
{#2}%
|
||
|
|
{}%
|
||
|
|
{0pt}%
|
||
|
|
{##1}%
|
||
|
|
}
|
||
|
|
|
||
|
|
% --- Heading definitions ---
|
||
|
|
%
|
||
|
|
% Register \titleformat for the actual LaTeX sectioning commands, not for
|
||
|
|
% \sA-\sE. When \sA{title} is used in the document, TeX expands \sA to
|
||
|
|
% \section or \chapter, and titlesec intercepts that command. Formatting
|
||
|
|
% registered for \sA would never be reached.
|
||
|
|
|
||
|
|
% In book structure, chapters start on recto (odd) pages. titlesec
|
||
|
|
% replaces \chapter's internals and ignores the book class's openright
|
||
|
|
% default, using \clearpage instead of \cleardoublepage. The
|
||
|
|
% \chapterbreak hook restores recto-start behavior.
|
||
|
|
\ifthenelse{\equal{\documentisbook}{true}}{%
|
||
|
|
\newcommand{\chapterbreak}{\cleardoublepage}
|
||
|
|
\titleclass{\chapter}{top}
|
||
|
|
\defineheading{\chapter}{\fA}{\thechapter}
|
||
|
|
\defineheading{\section}{\fB}{\thesection}
|
||
|
|
\defineheading{\subsection}{\fC}{\thesubsection}
|
||
|
|
\defineheading{\subsubsection}{\fD}{\thesubsubsection}
|
||
|
|
\defineheading{\paragraph}{\fE}{\theparagraph}
|
||
|
|
}{%
|
||
|
|
\defineheading{\section}{\fA}{\thesection}
|
||
|
|
\defineheading{\subsection}{\fB}{\thesubsection}
|
||
|
|
\defineheading{\subsubsection}{\fC}{\thesubsubsection}
|
||
|
|
\defineheading{\paragraph}{\fD}{\theparagraph}
|
||
|
|
\defineheading{\subparagraph}{\fE}{\thesubparagraph}
|
||
|
|
}
|
||
|
|
|
||
|
|
% --- Counter resets ---
|
||
|
|
|
||
|
|
\makeatletter
|
||
|
|
\@addtoreset{paragraph}{section}
|
||
|
|
\@addtoreset{paragraph}{subsection}
|
||
|
|
\@addtoreset{paragraph}{subsubsection}
|
||
|
|
|
||
|
|
\@addtoreset{subparagraph}{section}
|
||
|
|
\@addtoreset{subparagraph}{subsection}
|
||
|
|
\@addtoreset{subparagraph}{subsubsection}
|
||
|
|
\@addtoreset{subparagraph}{paragraph}
|
||
|
|
\makeatother
|
||
|
|
|
||
|
|
\setcounter{secnumdepth}{6}
|
||
|
|
\setcounter{tocdepth}{6}
|
||
|
|
|
||
|
|
% --- Part ---
|
||
|
|
|
||
|
|
\newcounter{partnumber}
|
||
|
|
\stepcounter{partnumber}
|
||
|
|
|
||
|
|
\newcommand{\partspace}{\hspace*{64pt}}
|
||
|
|
\newcommand{\partindent}[1]{\partspace\large\bfseries #1}
|