如何装饰 LaTeX 命令

如何装饰 LaTeX 命令

我一直在尝试更改子部分的编号行为以使用全局计数器。我首先做了:

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

这可以正常工作,但需要我更改文档中的每个\subsectionwith实例\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}

答案3

与 lockstep 的答案类似的是xassoccnt它的\CounterWithout宏,它允许从驱动计数器重置列表中删除以逗号分隔的计数器列表:

\documentclass{article}

\usepackage{xassoccnt}
\CounterWithout{subsection,subsubsection}{section}

\begin{document}

\section{bla}

\section{blubb}

\subsection{foo}

\subsection{bar}

\subsubsection{foobar}

\end{document}

在此处输入图片描述

相关内容