如何通过数字/总分数对每个 tcolorbox 框进行索引?

如何通过数字/总分数对每个 tcolorbox 框进行索引?

为了创建课程摘要,我创建了一个,tcolorbox每个新页面都会调用它。因此每个摘要页面只有 1 个框。

本摘要的索引为1/2(第一页 共 2 页) 2/2(第二页 共 2 页) 等。

  • 我使用通常计算方框数量的方法来对每页进行编号auto counter。但在这里,方框的数量与页面数量相同,因此实际上还是一样。
  • 为了获取总页数,我创建了一个标签label={number-of-pages}

它编译得很完美,但我收到一个警告。

LaTeX 警告:标签‘nombre-de-page’ 已多次定义。

是否可以以相同的方式对每页进行编号而不产生警告?

  • 1/22/2占2页;
  • 1/3然后2/33/33 页;
  • 或者1/4; 2/4;3/4并且4/4为 4 页;
  • ETC

\documentclass{article}
\usepackage{lipsum}
\usepackage{xfrac}
\usepackage[most]{tcolorbox}

%%%%%%%%%%%%%%%%%%%%%%%%%%%
% boite resumé

\def\couleurresume{red}%

% style du titre « résumé du cours »
\tcbset{titreresume/.style={
    boxed title style={
        colframe=\couleurresume!50,%
        colback=\couleurresume!10,%
        coltext=blue,%
    leftrule=1.5mm,rightrule=1.5mm,toprule=1.5pt,bottom=0pt,boxsep=1pt}}
}

% style des soustitres des résumés
\tcbset{soustitre/.style={
    subtitle style={%
    colback=\couleurresume!7,%
    colframe=\couleurresume!50,%
    boxsep=1mm,
    fontupper={\sffamily\bfseries\large\selectfont\color{\couleurresume!63!black}}}}
}

% style du titre-boxed des encadrés
\tcbset{titrecadre/.style={%
    minipage boxed title*=-.5\linewidth,
    boxed title style={
        boxrule=.8pt,boxsep=0pt,toptitle=0pt,
        colframe=\couleurresume!55,colback=white},
    halign title=left}
}

% boite créant la boite résumé
\newtcolorbox[auto counter]{resume}[2][]{%
    label={nombre-de-page},
    minipage boxed title*=-106mm,
    attach boxed title to top center={yshift=-3mm,xshift=-\linewidth/5},
    enhanced,
    nobeforeafter,
    lower separated=false,
    before upper={
        \textcolor{\couleurresume!63!black}{\sfrac{#1}{\the\numexpr#1+1} \hfill{#2}\hfill\thetcbcounter/\pageref{nombre-de-page}}},
    colframe=\couleurresume!50,%
    colback=white,%
    coltitle=\couleurresume!63!black,%
leftrule=3mm,rightrule=3mm,toprule=2pt,bottomrule=2pt,left=3pt,right=0pt,top=3mm,
fonttitle=\sffamily\bfseries\large,
    titreresume,soustitre,title={\normalsize Résumé}
}


\begin{document}

\begin{resume}[2018]{chapitre 1}
\tcbsubtitle{Définition}

\lipsum[1]
\end{resume}

\newpage

\begin{resume}[2018]{chapitre 1}

\tcbsubtitle{Propriétés}
\lipsum[2]
\end{resume}
\end{document}

编号以黄色突出显示。

第一次约会

第二个晚上

答案1

\documentclass{article}
\usepackage{lipsum}
\usepackage{xfrac}
\usepackage[most]{tcolorbox}

%%%%%%%%%%%%%%%%%%%%%%%%%%%
% boite resumé

\def\couleurresume{red}%

% style du titre « résumé du cours »
\tcbset{titreresume/.style={
    boxed title style={
        colframe=\couleurresume!50,%
        colback=\couleurresume!10,%
        coltext=blue,%
    leftrule=1.5mm,rightrule=1.5mm,toprule=1.5pt,bottom=0pt,boxsep=1pt}}
}

% style des soustitres des résumés
\tcbset{soustitre/.style={
    subtitle style={%
    colback=\couleurresume!7,%
    colframe=\couleurresume!50,%
    boxsep=1mm,
    fontupper={\sffamily\bfseries\large\selectfont\color{\couleurresume!63!black}}}}
}

% style du titre-boxed des encadrés
\tcbset{titrecadre/.style={%
    minipage boxed title*=-.5\linewidth,
    boxed title style={
        boxrule=.8pt,boxsep=0pt,toptitle=0pt,
        colframe=\couleurresume!55,colback=white},
    halign title=left}
}

% boite créant la boite résumé
\newtcolorbox[auto counter]{resume}[2][]{%
    minipage boxed title*=-106mm,
    attach boxed title to top center={yshift=-3mm,xshift=-\linewidth/5},
    enhanced,
    nobeforeafter,
    lower separated=false,
    before upper={
        \textcolor{\couleurresume!63!black}{\sfrac{#1}{\the\numexpr#1+1} \hfill{#2}\hfill\thetcbcounter/\pageref{nombre-de-page}}},
    colframe=\couleurresume!50,%
    colback=white,%
    coltitle=\couleurresume!63!black,%
leftrule=3mm,rightrule=3mm,toprule=2pt,bottomrule=2pt,left=3pt,right=0pt,top=3mm,
fonttitle=\sffamily\bfseries\large,
    titreresume,soustitre,title={\normalsize Résumé}
}


\usepackage{atveryend}
\makeatletter
\AfterLastShipout{%
  \immediate\write\@auxout
  {\string\newlabel{nombre-de-page}{{}{\the\numexpr\value{page}-1\relax}}}%
}
\makeatother
\begin{document}

\begin{resume}[2018]{chapitre 1}
\tcbsubtitle{Définition}

\lipsum[1]
\end{resume}

\newpage

\begin{resume}[2018]{chapitre 1}

\tcbsubtitle{Propriétés}
\lipsum[2]
\end{resume}
\end{document}

这里更好一些(这样可以解除“一页=一个盒子”的条件):

\usepackage{atveryend}
\makeatletter
\AfterLastShipout{%
  \immediate\write\@auxout
%  {\string\newlabel{nombre-de-page}{{}{\the\numexpr\value{page}-1\relax}}}%
  {\string\newlabel{nombre-de-page}{{}{\the\value{\tcbcounter}}}}%
}
\makeatother

这是非常违反直觉的,它tcolorbox提供了\thetcbcounter但存储了计数器名称,\tcbcounter因此无法使用,\the\value{tcbcounter}因为没有 LaTeX“tcbcounter”计数器!我尝试了\thetcbcounter上面的方法,但没有成功。


啊,现在我这样做了,感觉更好了\show\tcbcounter

\usepackage{atveryend}

\makeatletter
\AfterLastShipout{%
  \immediate\write\@auxout
%  {\string\newlabel{nombre-de-page}{{}{\the\numexpr\value{page}-1\relax}}}%
%  {\string\newlabel{nombre-de-page}{{}{\the\value{\tcbcounter}}}}%
  {\string\newlabel{nombre-de-page}{{}{\thetcb@cnt@resume}}}%
}
\makeatother

这样,您就知道如何获得独立的一系列盒子,并且每种类型的盒子总数都可以使用a/<total>,甚至可以使用某些格式,而不仅仅是阿拉伯数字。



上述解释的概念证明,但\ref不是\pageref为了清晰起见。

\documentclass{article}
\usepackage{lipsum}
\usepackage{xfrac}
\usepackage[most]{tcolorbox}

%%%%%%%%%%%%%%%%%%%%%%%%%%%
% boite resumé

\def\couleurresume{red}%

% style du titre « résumé du cours »
\tcbset{titreresume/.style={
    boxed title style={
        colframe=\couleurresume!50,%
        colback=\couleurresume!10,%
        coltext=blue,%
    leftrule=1.5mm,rightrule=1.5mm,toprule=1.5pt,bottom=0pt,boxsep=1pt}}
}

% style des soustitres des résumés
\tcbset{soustitre/.style={
    subtitle style={%
    colback=\couleurresume!7,%
    colframe=\couleurresume!50,%
    boxsep=1mm,
    fontupper={\sffamily\bfseries\large\selectfont\color{\couleurresume!63!black}}}}
}

% style du titre-boxed des encadrés
\tcbset{titrecadre/.style={%
    minipage boxed title*=-.5\linewidth,
    boxed title style={
        boxrule=.8pt,boxsep=0pt,toptitle=0pt,
        colframe=\couleurresume!55,colback=white},
    halign title=left}
}

% boite créant la boite résumé
\newtcolorbox[auto counter]{resume}[2][]{%
    minipage boxed title*=-106mm,
    attach boxed title to top center={yshift=-3mm,xshift=-\linewidth/5},
    enhanced,
    nobeforeafter,
    lower separated=false,
    before upper={
        \textcolor{\couleurresume!63!black}{\sfrac{#1}{\the\numexpr#1+1} \hfill{#2}\hfill\thetcbcounter/\ref{nombre-de-resume}}},
    colframe=\couleurresume!50,%
    colback=white,%
    coltitle=\couleurresume!63!black,%
leftrule=3mm,rightrule=3mm,toprule=2pt,bottomrule=2pt,left=3pt,right=0pt,top=3mm,
fonttitle=\sffamily\bfseries\large,
    titreresume,soustitre,title={\normalsize Résumé}
}


\usepackage{atveryend}
\makeatletter
\AfterLastShipout{%
  \immediate\write\@auxout
  {\string\newlabel{nombre-de-resume}{{\thetcb@cnt@resume}{}}}%
}
\makeatother
\begin{document}

\begin{resume}[2018]{chapitre 1}
\tcbsubtitle{Définition}

\lipsum[1]
\end{resume}

\newpage

\begin{resume}[2018]{chapitre 1}

\tcbsubtitle{Propriétés}
\lipsum[2]
\end{resume}

%\show\tcbcounter
\end{document}

因此,您可以定义独立的编号框系列,并访问每个系列的总框数。

答案2

由于每页最多只有一个框,因此您可以简单地重命名{nombre-de-page}{nombre-de-page-\thepage}。这样,您将唯一地标记框。对于您提供的示例,只有行40和会发生更改47。所以我们有

...
    label={nombre-de-page-\thepage},
    minipage boxed title*=-106mm,
...
    \hfill{#2}\hfill\thetcbcounter/\pageref{nombre-de-page-\thepage}}},
    colframe=\couleurresume!50,%
...

这是您提供的示例的日志

-\thepage并添加 日志

理想情况下,您只需按 CTRL + F 并按照我建议的方式全部替换{nombre-de-page}{nombre-de-page-\thepage}以防您在其他地方调用该标签。

相关内容