自定义 \section

自定义 \section

我有一份文档,希望在其中的每个部分都打印典型代码:“问题 # n”。我编写了此代码,它正在运行。我怎样才能摆脱\setcounter{secnumdepth}{1}\addtocounter{secnumdepth}{1}

\documentclass{article}
\setcounter{secnumdepth}{1}
\renewcommand{\section}[1]{\begin{center}\Large{\bf{Problem \# \arabic{secnumdepth}}}\end{center}
\addtocounter{secnumdepth}{1}}
\begin{document}
\section{}
text
\section{}
text
\section{}
text
\end{document}

在此处输入图片描述

答案1

计数器secnumdepth控制分段单元的编号级别,因此使用此计数器对结构进行编号没有多大意义。

一种可能性是使用titlesec包裹:

\documentclass{article}
\usepackage{titlesec}

\titleformat{\section}
  {\normalfont\Large\bfseries\filcenter}{Problem \# \thesection}
  {0em}{}

\begin{document}
\section{}
text
\section{}
text
\section{}
text
\end{document}

也许您可以考虑为此定义一个专用的命令/环境,而不是(滥用)使用\section

这是一个更好的选择,使用在包帮助下定义的类似定理的结构amsthm;这样,计数器就会自动提供和增加(请随意进行最适合您需求的调整):

\documentclass{article}
\usepackage{amsthm}

\newtheoremstyle{mystyle}
  {\topsep}{\topsep}{\normalfont}{}{\Large\bfseries}{\newline}{0em}
  {\hfil\thmname{#1 \#}\thmnumber{ #2}\thmnote{#3}\hfil}
\theoremstyle{mystyle}
\newtheorem{prob}{Problem}

\begin{document}

\begin{prob}
text
\end{prob}

\begin{prob}
text
\end{prob}

\end{document}

附带说明一下,\bf是一个过时的命令(仅为了兼容性而提供);您应改用\bfseries;此外\bf\bfseries是不带参数的声明;它们的使用方式与在 中相同{\bfseries text}(括号仅用于使效果局限于某个组)。

答案2

我摆脱了\setcounter{secnumdepth}{1},但仍然必须每次增加计数器:

\documentclass{article}
\renewcommand{\section}[1]{\addtocounter{section}{1}\begin{center}\Large{\bf{Problem \# \arabic{section}}}\end{center}}
\begin{document}
\section{}
text
\section{}
text
\section{}
text
\end{document}

相关内容