使用 titlesec 自动重置自定义切片块的计数器

使用 titlesec 自动重置自定义切片块的计数器

我按照在这个问题上找到的说明在我的文档中添加了一个自定义分段块:定义自定义切片命令.下面是一个mvce:

\documentclass[12pt]{article}
\usepackage{titlesec}
    % Define a new \question sectioning element
    \titleclass{\question}{straight}[\section]
        \newcounter{question}
    \titleformat{\question}[runin]{\normalfont\bfseries}{QUESTION \thesection .\thequestion:}{0.5em}{}
    \titlespacing*{\question}{0pt}{1ex plus 1ex minus .2ex}{2ex plus .2ex}
    \newcommand{\questionautorefname}{question}

\begin{document}

\section{The First Section}
\question{} Who am I?
\question{} Who are you?

\section{The Second Section}
\question{} Who are we?
\question{} Who are they?

\end{document}

其结果为:

反切片mvce

Question 2.1现在,我想知道是否有一种方法可以在我声明要显示的部分而不是之后自动重置计数器Question 2.3,而不必\resetcounter{}每次都手动调用?

答案1

有一些方法可以实现这一点:

\newcounter{question}[section] 很可能会解决所有问题。(太简单了?)

如果这不可能,您可以使用该包chngcntr并将question计数器挂入section计数器重置列表

\counterwithin*{question}{section}

因为您已经在使用输出\thesection .\thequestion,所以您需要\counterwithin*{...}{...}而不是\counterwithin{...}{...}

或者使用 LaTeX 核心命令\@addtoreset

\makeatletter
\@addtoreset{question}{section}
\makeatother

在序言中。那么您不需要该chngcntr包。

\documentclass[12pt]{article}

\usepackage{chngcntr}


\usepackage{titlesec}
    % Define a new \question sectioning element
    \titleclass{\question}{straight}[\section]
        \newcounter{question}
    \titleformat{\question}[runin]{\normalfont\bfseries}{QUESTION \thesection .\thequestion:}{0.5em}{}
    \titlespacing*{\question}{0pt}{1ex plus 1ex minus .2ex}{2ex plus .2ex}
    \newcommand{\questionautorefname}{question}

\counterwithin*{question}{section}

\begin{document}

\section{The First Section}
\question{} Who am I?
\question{} Who are you?

\section{The Second Section}
\question{} Who are we?
\question{} Who are they?

\end{document}

在此处输入图片描述

相关内容