
Wenn ich den Code verwende
\makeatletter
\renewcommand{\@secnumfont}{\bfseries}
\makeatother
ausWie wird eine Abschnittsüberschrift fett dargestellt? (einschließlich Titel und Nummer)es macht auch die Anzahl der Abschnitte fett. Wie bekomme ich eine fettgedruckte Zahl nur für Unterabschnitte? Wenn man sich amsart.cls ansieht, scheint es keinen speziellen Befehl für Unterabschnitte oder Absätze zu geben.
Antwort1
Durch Tippen auf \@seccntformat
können Sie die Anzeige des Abschnittszählers je nach verwendetem Zählertyp Ihren Anforderungen entsprechend formatieren.
Unten habe ich eine Bedingung hinzugefügt, die überprüft, ob Sie den subsection
Zähler einstellen. Wenn ja, verwenden Sie \bfseries
. Natürlich kann dies erweitert werden, um auch andere Abschnittszählereinstellungen zu ändern, indem weitere Bedingungen hinzugefügt werden:
\documentclass{amsart}
\makeatletter
\def\@seccntformat#1{%
\protect\textup{\protect\@secnumfont
\ifnum\pdfstrcmp{subsection}{#1}=0 \bfseries\fi% subsection # in \bfseries
\csname the#1\endcsname
\protect\@secnumpunct
}%
}
\makeatother
\begin{document}
\section{A section}
\subsection{A subsection}
\subsubsection{A subsection}
\end{document}
Dies erfordert e-TeX aufgrund von \pdfstrcmp
.
Antwort2
Werners Idee, auf zuzugreifen, \@seccntformat
ist gut, aber es gibt eine elegantere Möglichkeit, dies umzusetzen: Fügen Sie einen Befehl der Form hinzu. Wenn der Befehl nicht definiert ist, wird er \format<level>
bei Verwendung mit gleichwertig mit .\csname...\endcsname
\relax
\documentclass{amsart}
\makeatletter
\def\@seccntformat#1{%
\protect\textup{%
\protect\@secnumfont
\expandafter\protect\csname format#1\endcsname % <--- added
\csname the#1\endcsname
\protect\@secnumpunct
}%
}
% define what you want for the various levels
\newcommand{\formatsubsection}{\bfseries}
%\newcommand{\formatsubsubsection}{\Huge} %%%% try for experimenting
\makeatother
\begin{document}
\section{A section}
\subsection{A subsection}
\subsubsection{A subsection}
\end{document}
Versuchen Sie versuchsweise, die \formatsubsubsection
Zeile zu kommentieren.
Antwort3
Amsart hat ein merkwürdiges Verhalten: Wenn ein Unterabschnittstitel leer ist, wird seine Nummer fett dargestellt. Dies wird durch die folgenden Zeilen innerhalb \sect
der Definition erreicht:
\@ifempty{#8}{%
\ifnum #2=\tw@ \def\@secnumfont{\bfseries}\fi}{}%
Hier #2
ist die Abschnittsebene (1 für Abschnitt, 2 für Unterabschnitt, 3 für Unterunterabschnitt usw.).
Sie müssen also prüfen, ob der Titel ( #8
) leer ist, und die Unterabschnittsnummer wird immer fett gedruckt.
Das hier funktioniert (ich habe einfach den Amsart-Code genommen und \@ifempty
das Häkchen gelöscht):
\makeatletter
\def\@sect#1#2#3#4#5#6[#7]#8{%
\edef\@toclevel{\ifnum#2=\@m 0\else\number#2\fi}%
\ifnum #2>\c@secnumdepth \let\@secnumber\@empty
\else \@xp\let\@xp\@secnumber\csname the#1\endcsname\fi
\@tempskipa #5\relax
\ifnum #2>\c@secnumdepth
\let\@svsec\@empty
\else
\refstepcounter{#1}%
\edef\@secnumpunct{%
\ifdim\@tempskipa>\z@ % not a run-in section heading
\@ifnotempty{#8}{.\@nx\enspace}%
\else
\@ifempty{#8}{.}{.\@nx\enspace}%
\fi
}%
\ifnum #2=\tw@ \def\@secnumfont{\bfseries}\fi
\protected@edef\@svsec{%
\ifnum#2<\@m
\@ifundefined{#1name}{}{%
\ignorespaces\csname #1name\endcsname\space
}%
\fi
\@seccntformat{#1}%
}%
\fi
\ifdim \@tempskipa>\z@ % then this is not a run-in section heading
\begingroup #6\relax
\@hangfrom{\hskip #3\relax\@svsec}{\interlinepenalty\@M #8\par}%
\endgroup
\ifnum#2>\@m \else \@tocwrite{#1}{#8}\fi
\else
\def\@svsechd{#6\hskip #3\@svsec
\@ifnotempty{#8}{\ignorespaces#8\unskip
\@addpunct.}%
\ifnum#2>\@m \else \@tocwrite{#1}{#8}\fi
}%
\fi
\global\@nobreaktrue
\@xsect{#5}}
\makeatother