¿Cómo poner en negrita solo un número de subsección en amsart?

¿Cómo poner en negrita solo un número de subsección en amsart?

Si uso el código

\makeatletter
\renewcommand{\@secnumfont}{\bfseries}
\makeatother

de¿Cómo poner en negrita el encabezado de una sección? (incluyendo título y número)también pone en negrita el número de secciones. ¿Cómo obtener un número en negrita solo para la subsección? Al examinar amsart.cls, parece que no hay un comando específico para sub(sub)secciones o párrafos.

Respuesta1

Al tocar, \@seccntformatpuede formatear la visualización del contador de secciones para adaptarla a sus necesidades según el tipo de contador que se esté utilizando.

A continuación agregué un condicional que verifica si estás configurando el subsectioncontador. Si es así, utilice \bfseries. Por supuesto, esto también se puede ampliar para cambiar otras configuraciones del contador seccional agregando más condiciones:

ingrese la descripción de la imagen aquí

\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}

Esto requiere e-TeX debido a \pdfstrcmp.

Respuesta2

La idea de Werner de aprovechar \@seccntformates buena, pero hay una forma más ingeniosa de hacerlo: agregar un comando del formulario \format<level>; si el comando no está definido, usarlo con \csname...\endcsnamelo hará 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}

ingrese la descripción de la imagen aquí

Intente, a modo de experimento, descomentar la \formatsubsubsectionlínea.

Respuesta3

Amsart tiene un comportamiento curioso: si el título de una subsección está vacío, su número aparece en negrita. Esto se logra mediante las siguientes líneas dentro de \sectla definición:

\@ifempty{#8}{%
  \ifnum #2=\tw@ \def\@secnumfont{\bfseries}\fi}{}%

Aquí #2está el nivel de sección (1 para sección, 2 para subsección, 3 para subsección, etc.).

Entonces, lo que necesita es verificar si el título ( #8) está vacío y el número de subsección siempre estará en negrita.

Esto funciona (simplemente tomé el código amsart y eliminé \@ifemptyel 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

información relacionada