我有一份文档,希望在其中的每个部分都打印典型代码:“问题 # 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}