为了创建课程摘要,我创建了一个,tcolorbox
每个新页面都会调用它。因此每个摘要页面只有 1 个框。
本摘要的索引为1/2
(第一页 共 2 页) 2/2
(第二页 共 2 页) 等。
- 我使用通常计算方框数量的方法来对每页进行编号
auto counter
。但在这里,方框的数量与页面数量相同,因此实际上还是一样。 - 为了获取总页数,我创建了一个标签
label={number-of-pages}
。
它编译得很完美,但我收到一个警告。
LaTeX 警告:标签‘nombre-de-page’ 已多次定义。
是否可以以相同的方式对每页进行编号而不产生警告?
1/2
并2/2
占2页;1/3
然后2/3
和3/3
3 页;- 或者
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}
以防您在其他地方调用该标签。