Ich kämpfe mit einem einfachen Problem. Ich verwende die KOMA-Klasse
\documentclass[11pt]{scrartcl}%
Ich muss meine Titelüberschriften so formatieren, dass:
- Abschnittsüberschriftensollte durch arabische Zahlen gefolgt von einem Punkt identifiziert werden, z. B. 1., 2. usw.Fettgedruckter Text
- Unterüberschriftensollte durch arabische Zahlen gefolgt von einem Punkt gekennzeichnet sein, z. B. 1.1, 2.1 Text nicht fett
- Unterunterüberschriftendurch arabische Zahlen gefolgt von einem Punkt identifiziert werden. zB 1.1.1Text kursiv.
Bei allen Abschnittstiteln sollten alle Hauptwörter im Titel groß geschrieben werden, z. B. „Hallo Stackoverflow, das ist großartig“.
Danke!!!!
Antwort1
Es gibt eine einfache Möglichkeit, die Punkte zu allen Abschnittsebenen hinzuzufügen:
\usepackage[numbers=endperiod]{scrartcl}
Tatsächlich möchten Sie aber nur, dass Abschnitte Schlusspunkte haben. Daher müssen Sie Folgendes tun:
\documentclass[]{scrartcl}
\renewcommand*{\sectionformat}{\thesection.\enskip}
Es gibt eine einfache Möglichkeit, die Schriftarten zu ändern:
\setkomafont{subsection}{\normalfont}
\setkomafont{subsubsection}{\normalfont\itshape}
Es gibt keine einfache Möglichkeit, die Groß- und Kleinschreibung automatisch zu ändern. Aber die Antwort hier anpassen:
titlecaps
Es ist möglich, das Paket mit der Klasse auf folgende Weise zu verwenden scrartcl
. Wenn Sie ohne automatische Groß-/Kleinschreibung auskommen können (ich würde das persönlich einfach selbst machen), können Sie diesen Teil des Codes vollständig weglassen. Hier ist das vollständige Beispiel.
Wenn Sie dies tun möchten, dannSchweinebackes Antwortist etwas einfacher, da es Code ändert, der eine Abstraktionsebene höher ist als der Code, den ich geändert habe.
\documentclass[]{scrartcl}
\setkomafont{subsection}{\normalfont}
\setkomafont{subsubsection}{\normalfont\itshape}
\renewcommand*{\sectionformat}{\thesection.\enskip}
% The rest of this preamble code is only needed for automatic title casing
\usepackage{titlecaps}
% this is a space separated list of words that should be lowercase
% since you have to add to this list manually, title casing is not truly automatic
\Addlcwords{a an the that to this is are and with}
\makeatletter
% adapted from https://tex.stackexchange.com/a/33215/
% ---- only needed for automatic title case ----
\let\scr@section\section
\let\scr@subsection\subsection
\let\scr@subsubsection\subsubsection
\def\section{\@ifstar\cased@sections\cased@section}
\def\subsection{\@ifstar\cased@subsections\cased@subsection}
\def\subsubsection{\@ifstar\cased@subsubsections\cased@subsubsection}
\def\cased@sections#1{\scr@section*{\titlecap{#1}}}
\def\cased@subsections#1{\scr@subsection*{\titlecap{#1}}}
\def\cased@subsubsections#1{\scr@subsubsection*{\titlecap{#1}}}
\def\cased@section{\@dblarg{\cased@section@}}
\def\cased@subsection{\@dblarg{\cased@subsection@}}
\def\cased@subsubsection{\@dblarg{\cased@subsubsection@}}
\def\cased@section@[#1]#2{%
\scr@section[\titlecap{#1}]{\titlecap{#2}}}
\def\cased@subsection@[#1]#2{%
\scr@subsection[\titlecap{#1}]{\titlecap{#2}}}
\def\cased@subsubsection@[#1]#2{%
\scr@subsubsection[\titlecap{#1}]{\titlecap{#2}}}
\makeatother
% ---- only needed for automatic titlecase ----
\begin{document}
\section{A section with a word that should use uppercase}
\subsection{This is a subsection with most words uppercase}
\subsubsection{This is a subsubsection}
\end{document}
Antwort2
In Anpassung anAlans tolle AntwortSie könnten \sectionlinesformat
statt neu definieren und \section
die automatische Großschreibung der Überschriften vornehmen:\subsection
\subsubsection
\let\orig@sectionlinesformat\sectionlinesformat
\renewcommand*{\sectionlinesformat}[4]{%
\orig@sectionlinesformat{#1}{#2}{#3}{\titlecap{#4}}%
}%
Um die Groß-/Kleinschreibung der Einträge im Inhaltsverzeichnis zu ändern, können Sie Folgendes neu definieren \addtocentrydefault
:
\let\orig@addtocentrydefault\addtocentrydefault
\renewcommand*{\addtocentrydefault}[3]{%
\orig@addtocentrydefault{#1}{#2}{\titlecap{#3}}%
}
Und um die Groß-/Kleinschreibung der Kopfzeile zu ändern, können Sie Folgendes neu definieren \MakeMarkcase
:
\let\MakeMarkcase\titlecap
MWE:
\documentclass[]{scrartcl}
\setkomafont{subsection}{\normalfont}
\setkomafont{subsubsection}{\normalfont\itshape}
\renewcommand*{\sectionformat}{\thesection.\enskip}
\renewcommand*{\sectionmarkformat}{\sectionformat}% also for running head
% The rest of this preamble code is only needed for automatic title casing
\usepackage{titlecaps}
% this is a space separated list of words that should be lowercase
% since you have to add to this list manually, title casing is not truly automatic
\Addlcwords{a an the that to this is are and with}
\makeatletter
\let\orig@sectionlinesformat\sectionlinesformat
\renewcommand*{\sectionlinesformat}[4]{%
\orig@sectionlinesformat{#1}{#2}{#3}{\titlecap{#4}}%
}%
\let\orig@addtocentrydefault\addtocentrydefault
\renewcommand*{\addtocentrydefault}[3]{%
\orig@addtocentrydefault{#1}{#2}{\titlecap{#3}}%
}
% and if you also want the case change for \paragraph and \subparagraph:
\let\orig@sectioncatchphraseformat\sectioncatchphraseformat
\renewcommand*{\sectioncatchphraseformat}[4]{%
\orig@sectioncatchphraseformat{#1}{#2}{#3}{\titlecap{#4}}%
}
\makeatother
\let\MakeMarkcase\titlecap
% ---- only needed for automatic titlecase ----
\pagestyle{headings}% to show the running head
\begin{document}
\tableofcontents
\section{A section with a word that should use uppercase}
\subsection{This is a subsection with most words uppercase}
\subsubsection{This is a subsubsection}
\newpage
Empty page
\end{document}
Aber wenn Sie schmutzige Tricks mögen, können Sie auch Folgendes tun:
\documentclass[]{scrartcl}
\setkomafont{subsection}{\normalfont}
\setkomafont{subsubsection}{\normalfont\itshape}
\renewcommand*{\sectionformat}{\thesection.\enskip}
\renewcommand*{\sectionmarkformat}{\sectionformat}% also for running head
% The rest of this preamble code is only needed for automatic title casing
\usepackage{titlecaps}
% this is a space separated list of words that should be lowercase
% since you have to add to this list manually, title casing is not truly automatic
\Addlcwords{a an the that to this is are and with}
\makeatletter
\let\orig@sectionlinesformat\sectionlinesformat
\renewcommand*{\sectionlinesformat}[4]{%
\orig@sectionlinesformat{#1}{#2}{#3}{\titlecap{#4}}%
\expandafter\gdef\expandafter\@currenttocentry\expandafter{%
\expandafter\titlecap\expandafter{\@currenttocentry}%
}%
\expandafter\gdef\expandafter\@currentheadentry\expandafter{%
\expandafter\titlecap\expandafter{\@currentheadentry}%
}%
}%
\let\orig@sectioncatchphraseformat\sectioncatchphraseformat
\renewcommand*{\sectioncatchphraseformat}[4]{%
\orig@sectioncatchphraseformat{#1}{#2}{#3}{\titlecap{#4}}%
\expandafter\gdef\expandafter\@currentheadentry\expandafter{%
\expandafter\titlecap\expandafter{\@currentheadentry}%
}%
}
\makeatother
% ---- only needed for automatic titlecase ----
\pagestyle{headings}% to show the running head
\begin{document}
\tableofcontents
\section{A section with a word that should use uppercase}
\subsection{This is a subsection with most words uppercase}
\subsubsection{This is a subsubsection}
\newpage
Empty page
\end{document}
Beide Vorschläge führen zu:
Der Schlagwortcode lautet für \paragraph
und \subparagraph
.
Antwort3
Letzte Änderung(Ich musste die Antwort bearbeiten, weil sie zu viele Upvotes erhielt, die sie nicht wirklich verdiente)
\documentclass[11pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{nameref}
\usepackage{mfirstuc}
\MFUnocap{$f(x)=2\cdot x$}
\renewcommand{\sectionformat}{}
\renewcommand{\subsectionformat}{}
\renewcommand{\subsubsectionformat}{}
\renewcommand*\sectionformat{\normalfont\bfseries\Large}
\renewcommand*\subsectionformat{\normalfont\mdseries\rmfamily\large}
\renewcommand*\subsubsectionformat{\normalfont\itshape\large}
\let\oldsection\section
\makeatletter
\def\section{%
\@ifstar{\@Starred}{\@nonStarred}%
}
\def\@Starred{%
\setkomafont{section}{\sectionformat}%
\@ifnextchar[%
{\GenericWarning{}{Warning: A starred section can not have parameters. I am going to ignore them!}\@StarredWith}%
{\@StarredWithout}%
}
\def\@StarredWith[#1]#2{%
\oldsection*{\capitalisewords{#2}}%
}
\def\@StarredWithout#1{%% This would be simpler if your table of contents is not a section...
\ifnum\pdfstrcmp{#1}{\contentsname}=0%
\renewcommand{\sectionformat}{}%
\setkomafont{section}{\sectionformat}%
\oldsection*{\contentsname}%
\else%
\oldsection*{\capitalisewords{#1}}%
\fi%
}
\def\@nonStarred{%
\setkomafont{section}{\sectionformat\thesection.\space}%
\@ifnextchar[%
{\@nonStarredWith}%
{\@nonStarredWithout}%
}
\def\@nonStarredWith[#1]#2{%
\oldsection[#1]{\capitalisewords{#2}}%
}
\def\@nonStarredWithout#1{%
\oldsection{\capitalisewords{#1}}%
}
\makeatother
\let\oldsubsection\subsection
\makeatletter
\def\subsection{%
\@ifstar{\@Starredss}{\@nonStarredss}%
}
\def\@Starredss{%
\setkomafont{subsection}{\subsectionformat}%
\@ifnextchar[%
{\GenericWarning{}{Warning: A starred section can not have parameters. I am going to ignore them!}\@StarredWithss}%
{\@StarredWithout}%
}
\def\@StarredWithss[#1]#2{%
\oldsubsection*{\capitalisewords{#2}}%
}
\def\@StarredWithoutss#1{%% This would be simpler if your table of contents is not a subsection...
\ifnum\pdfstrcmp{#1}{\contentsname}=0%
\renewcommand{\sectionformat}{}%
\setkomafont{subsection}{\sectionformat}%
\oldsubsection*{\contentsname}%
\else%
\oldsubsection*{\capitalisewords{#1}}%
\fi%
}
\def\@nonStarredss{%
\setkomafont{subsection}{\subsectionformat\thesubsection\space}%
\@ifnextchar[%
{\@nonStarredWithss}%
{\@nonStarredWithoutss}%
}
\def\@nonStarredWithss[#1]#2{%
\oldsubsection[#1]{\capitalisewords{#2}}%
}
\def\@nonStarredWithoutss#1{%
\oldsubsection{\capitalisewords{#1}}%
}
\makeatother
\let\oldsubsubsection\subsubsection
\makeatletter
\def\subsubsection{%
\@ifstar{\@Starredsss}{\@nonStarredsss}%
}
\def\@Starredsss{%
\setkomafont{subsubsection}{\subsubsectionformat}%
\@ifnextchar[%
{\GenericWarning{}{Warning: A starred section can not have parameters. I am going to ignore them!}\@StarredWithsss}%
{\@StarredWithout}%
}
\def\@StarredWithsss[#1]#2{%
\oldsubsubsection*{\capitalisewords{#2}}%
}
\def\@StarredWithoutsss#1{%% This would be simpler if your table of contents is not a subsection...
\ifnum\pdfstrcmp{#1}{\contentsname}=0%
\renewcommand{\sectionformat}{}%
\setkomafont{subsection}{\sectionformat}%
\oldsubsubsection*{\contentsname}%
\else%
\oldsubsubsection*{\capitalisewords{#1}}%
\fi%
}
\def\@nonStarredsss{%
\setkomafont{subsubsection}{\subsubsectionformat\thesubsubsection\space}%
\@ifnextchar[%
{\@nonStarredWithsss}%
{\@nonStarredWithoutsss}%
}
\def\@nonStarredWithsss[#1]#2{%
\oldsubsubsection[#1]{\capitalisewords{#2}}%
}
\def\@nonStarredWithoutsss#1{%
\oldsubsubsection{\capitalisewords{#1}}%
}
\makeatother
\begin{document}
\tableofcontents
\section{test section 1 with text of non-capitalized first word}
That was the first test section and here comes the second named ``\nameref{sec:secd}''
\section{the second section with equation $f(x)=2\cdot x$}\label{sec:secd}
\section*{a section with star}
\subsection{the first subsection}
And we can use very simple the nameref like this: ``\nameref{subsub}''
\subsubsection{a subsubsection}\label{subsub}
\end{document}
Bearbeiten: Wie @AlanMunn erwähnt hat, wird meine Methode mit dieser Dokumentklasse nicht empfohlen und ich werde die Antwort aktualisieren, um diese Dokumentklasse einzuschließen … Wenn jemand diese Frage mithilfe einer anderen Dokumentklasse erreicht hat, kann er diese Methode wahrscheinlich als einfache Methode verwenden.
Hier ist eine einfache Möglichkeit für alles, was Sie brauchen ... Vergessen Sie nur nicht, die Gleichungen oder die Wörter, die Sie nicht groß schreiben möchten, aus der Großschreibungsfunktion auszuschließen, wie ich es mit dem Befehl MFUnocap getan habe ... sonst treten Fehler auf.
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{nameref}
\usepackage[explicit]{titlesec}
\usepackage{mfirstuc}
\MFUnocap{$f(x)=2\cdot x$}
\titleformat{\section}
{\normalfont\Large\bfseries}{\thesection.}{1em}{\capitalisewords{#1}}
\titleformat{\subsection}
{\normalfont\large}{\thesubsection}{1em}{\capitalisewords{#1}}
\titleformat{\subsubsection}
{\normalfont\large\itshape}{\thesubsubsection}{1em}{\capitalisewords{#1}}
\begin{document}
\section{Test section 1 with text of non-capitalized first word}
That was the first test section and here comes the second named ``\nameref{sec:second}''
\section{the second section with equation $f(x)=2\cdot x$}\label{sec:second}
\subsection{the first subsection}
\subsubsection{a subsubsection}
\end{document}
Beachten Sie auch, dass die mögliche Verwendung von nameref den Titel nicht so anzeigt, wie er wirklich im Titel steht. Sie müssen die Titel also manuell korrigieren, wenn Sie nameref verwenden möchten, wie von @MichaelPalmer vorgeschlagen.
Ergebnis: