我一直在尝试更改子部分的编号行为以使用全局计数器。我首先做了:
\newcounter{maincount}
\renewcommand{\thesubsection}{\stepcounter{maincount}\arabic{maincount}}
并得到:
! Missing \endcsname inserted.
<to be read again>
\csname\endcsname
l.64 \subsection{Orientation}
然后我通过定义来实现\mysubsection
:
\newcounter{maincount}
\renewcommand{\thesubsection}{\arabic{maincount}
\renewcommand{\mysubsection}[1]{\stepcounter{maincount}\subsection{#1}}
这可以正常工作,但需要我更改文档中的每个\subsection
with实例\mysubsection
。有没有办法修饰 LaTeX 命令?就像以\subsection
能够调用其先前实现的方式重新定义一样。这会产生一个无限循环:
\renewcommand{\subsection}[1]{\stepcounter{maincount}\subsection{#1}}
答案1
您可以使用以下方法将一个宏(又名命令序列)的含义复制到另一个宏\let\newmacro=\oldmacro
(=
可选):
\let\origsubsection\subsection
\renewcommand{\subsection}[1]{\stepcounter{maincount}\origsubsection{#1}}
您不应该将其放入宏\stepcounter
中\the...
。这会使它变得脆弱,并且可能会破坏某些\label
或类似的代码。
答案2
我建议简单地使用更改中心包裹。
\documentclass{article}
\usepackage{chngcntr}
\counterwithout{subsection}{section}
\begin{document}
\section{bla}
\section{blubb}
\subsection{foo}
\subsection{bar}
\end{document}