使用标准切片命令增加自定义计数器?

使用标准切片命令增加自定义计数器?

我的文档是一本(scr)书,我在这里谈论的是部分和章节,但我认为潜在的问题非常普遍。

  • 我希望书中的表格以 chapter.table 的方式连续枚举。

  • chapter使用定制的命令重置了书中每个部分的计数器MyPart,这对于这里未提及的其他几个原因是必要的。

  • 然而,我愿意不是想要重置表格编号. (即,表格编号中的“章节”部分应保持跨部分边界的章节总数。)

tabchapter我通过定义一个计数器,并在声明 new 时手动触发该计数器来使其工作\chapter。我想避免必须声明类似的东西 \MyChapter仅为此目的而声明类似的东西,但我不是对我的解决方案感到满意:

\documentclass[open=any]{scrbook}

\usepackage{titlesec}

\newcounter{tabchapter}
\renewcommand*{\thetable}{\arabic{tabchapter}.\arabic{table}}
\renewcommand*{\tableformat}{Tab. \thetable}

%% Ugly hijacking of a formatting command to follow...
\titleformat{\chapter}
    {\addtocounter{tabchapter}{1}\Huge\bfseries}   %% <<----  *COUGH*...
    {}
    {0pt}
    {}

\newcommand{\MyPart}[1]{
    \setcounter{chapter}{0}
    \refstepcounter{part}
}

\newcommand{\exampletable}[1]{
    \begin{table}
        \caption{#1}
        \begin{tabular}{c}
            Nothing much.
        \end{tabular}
    \end{table}
}

\begin{document}
\MyPart{Book One}
\chapter{The First}
\exampletable{Some Table}
\chapter{The Second}
\exampletable{Other Table}
\MyPart{Book Two}
\chapter{The First of the Second}
\exampletable{Yet Another Table}
\end{document}

有没有其他方法可以让某个计数器在标准分段命令被调用(即以某种方式将其“链接”到标准计数器)?其他而不是用自定义命令来包装凸起\MyChapter

答案1

不需要标题安全

\usepackage{etoolbox}
\preto{\chapter}{\stepcounter{tabchapter}}
\newcounter{tabchapter}
\renewcommand*{\thetable}{\arabic{tabchapter}.\arabic{table}}
\renewcommand*{\tableformat}{Tab. \thetable}

答案2

chngcntr包裹提供\counterwithin并可\counterwithout用于添加/删除强制计数器重置的元素。你可能想要

\usepackage{chngcntr}% http://ctan.org/pkg/chngcntr
...
\counterwithout{table}{chapter}%
\counterwithout{table}{part}%

相关内容