
Я хотел бы использовать заглавные буквы в заголовках разделов и титульных листов, набранных шрифтом KOMA-script-typeset.
Конечно, я могу это сделать.
\documentclass[version=last]{scrreprt} % it's 3.32
\usepackage{titlecaps}
\title{\titlecap{The Beginning of the document}}
\begin{document}
\maketitle
\tableofcontents
\section{\titlecap{My title with caps}}
\end{document}
Однако мне бы хотелось иметь что-то идиоматическое, скажем,
\setkomafont{disposition}{\rmfamily\MakeTitleCase}
Как автоматизировать регистр заголовков?
решение1
Вы могли бы исправить \chapterlinesformat
, \chapterlineswithprefixformat
, \sectionlinesformat
, \sectioncatchphraseformat
и, возможно \minisec
, :
\usepackage{titlecaps}
\usepackage{xpatch}
\newcommand*\MakeTitleCase[1]{\titlecap{#1}}
\xpatchcmd\chapterlinesformat{#3}{\MakeTitleCase{#3}}{}{\clfpatchfailed}
\xpatchcmd\chapterlineswithprefixformat{#3}{\MakeTitleCase{#3}}{}{\clwpfpatchfailed}
\xpatchcmd\sectionlinesformat{#4}{\MakeTitleCase{#4}}{}{\slfpatchfailed}
\xpatchcmd\sectioncatchphraseformat{#4}{\MakeTitleCase{#4}}{}{\scpfpatchfailed}
\xpatchcmd\minisec{#1}{\MakeTitleCase{#1}}{}{\mspatchfailed}
Для заголовка вы можете использовать
\newcommand*\originaltitle{}
\let\originaltitle\title
\renewcommand\title[1]{\originaltitle{\MakeTitleCase{#1}}}
С
\newcommand*\originaladdchaptertocentry{}
\let\originaladdchaptertocentry\addchaptertocentry
\renewcommand*\addchaptertocentry[2]{\originaladdchaptertocentry{#1}{\MakeTitleCase{#2}}}
\MakeTitleCase
в оглавлении будут использоваться только записи глав .
Если все записи в оглавлении должны использовать \MakeTitleCase
:
\newcommand*\originaladdtocentrydefault{}
\let\originaladdtocentrydefault\addtocentrydefault
\renewcommand*\addtocentrydefault[3]{\originaladdtocentrydefault{#1}{#2}{\MakeTitleCase{#3}}}
Пример:
\documentclass[version=last]{scrreprt} % it's 3.32
\usepackage{titlecaps}
\usepackage{xpatch}
\newcommand*\MakeTitleCase[1]{\titlecap{#1}}
\xpatchcmd\chapterlinesformat{#3}{\MakeTitleCase{#3}}{}{\clfpatchfailed}
\xpatchcmd\chapterlineswithprefixformat{#3}{\MakeTitleCase{#3}}{}{\clwpfpatchfailed}
\xpatchcmd\sectionlinesformat{#4}{\MakeTitleCase{#4}}{}{\slfpatchfailed}
\xpatchcmd\sectioncatchphraseformat{#4}{\MakeTitleCase{#4}}{}{\scpfpatchfailed}
\xpatchcmd\minisec{#1}{\MakeTitleCase{#1}}{}{\mspatchfailed}
\newcommand*\originaltitle{}
\let\originaltitle\title
\renewcommand\title[1]{\originaltitle{\MakeTitleCase{#1}}}
\newcommand*\originaladdtocentrydefault{}
\let\originaladdtocentrydefault\addtocentrydefault
\renewcommand*\addtocentrydefault[3]{\originaladdtocentrydefault{#1}{#2}{\MakeTitleCase{#3}}}
\title{The Beginning of the document}
\author{Author}
\begin{document}
\maketitle
\tableofcontents
\chapter{A chapter with caps}
\section{A section with caps}
\minisec{A minisec with caps}
\paragraph{A paragraph with caps}
Example text ...
\end{document}