amsart에서 하위 섹션 번호만 굵게 표시하는 방법은 무엇입니까?

amsart에서 하위 섹션 번호만 굵게 표시하는 방법은 무엇입니까?

코드를 사용하면

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

~에서섹션 헤더를 굵게 표시하는 방법은 무엇입니까? (제목 및 번호 포함)섹션 수도 굵게 표시됩니다. 하위 섹션에 대해서만 굵은 글꼴 번호를 얻는 방법은 무엇입니까? amsart.cls를 살펴보면 하위(하위)섹션이나 단락에 대한 특정 명령이 없는 것 같습니다.

답변1

탭하면 \@seccntformat사용 중인 카운터 유형에 따라 필요에 맞게 섹션 카운터 표시 형식을 지정할 수 있습니다.

아래에는 카운터를 설정하고 있는지 확인하는 조건을 추가했습니다 subsection. 그렇다면 \bfseries. 물론 더 많은 조건을 추가하여 다른 섹션 카운터 설정을 변경하도록 확장할 수도 있습니다.

여기에 이미지 설명을 입력하세요

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

으로 인해 e-TeX가 필요합니다 \pdfstrcmp.

답변2

Werner의 활용 아이디어 \@seccntformat는 좋지만 이를 수행하는 더 매끄러운 방법이 있습니다. 형식의 명령을 추가합니다 \format<level>. 명령이 정의되지 않은 경우 와 함께 사용하면 \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}

여기에 이미지 설명을 입력하세요

실험을 통해 해당 \formatsubsubsection줄의 주석 처리를 제거해 보십시오.

답변3

Amsart는 이상한 행동을 합니다. 하위 섹션 제목이 비어 있으면 해당 번호가 굵게 표시됩니다. 이는 \sect정의 내에서 다음 줄을 통해 달성됩니다 .

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

다음은 #2섹션 수준입니다(섹션은 1, 하위 섹션은 2, 하위 섹션은 3 등).

따라서 필요한 것은 제목( #8)이 비어 있고 하위 섹션 번호가 항상 굵게 표시되는지 확인하는 것입니다.

이것이 트릭입니다(방금 amsart 코드를 가져와서 \@ifempty수표를 삭제했습니다):

\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

관련 정보