
Se eu usar o código
\makeatletter
\renewcommand{\@secnumfont}{\bfseries}
\makeatother
deComo colocar em negrito o cabeçalho de uma seção? (incluindo título e número)isso também torna o número de seções em negrito. Como obter um número em negrito apenas para subseção? Olhando para amsart.cls, parece que não existe um comando específico para sub(sub)seções ou parágrafos.
Responder1
Tocar em \@seccntformat
você pode formatar a exibição do contador de seção para atender às suas necessidades com base no tipo de contador que está sendo usado.
Abaixo adicionei uma condicional que verifica se você está configurando o subsection
contador. Se sim, use \bfseries
. Claro, isso também pode ser expandido para alterar outras configurações do contador seccional, adicionando mais condições:
\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}
Isso requer e-TeX devido ao \pdfstrcmp
.
Responder2
A ideia de Werner de tocar \@seccntformat
é boa, mas há uma maneira mais inteligente de fazer isso: adicione um comando no formato \format<level>
; se o comando não estiver definido, ser usado with \csname...\endcsname
o tornará equivalente a \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}
Tente, apenas a título de experiência, descomentar a \formatsubsubsection
linha.
Responder3
Amsart tem um comportamento curioso: se o título de uma subseção estiver vazio, seu número estará em negrito. Isso é conseguido pelas seguintes linhas dentro \sect
da definição:
\@ifempty{#8}{%
\ifnum #2=\tw@ \def\@secnumfont{\bfseries}\fi}{}%
Aqui #2
está o nível da seção (1 para seção, 2 para subseção, 3 para subsubseção, etc.).
Então o que você precisa é verificar se o título ( #8
) está vazio e o número da subseção estará sempre em negrito.
Isso resolve (peguei o código amsart e excluí \@ifempty
o cheque):
\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