如何在 newtcolorbox 环境中使用 LaTeX 计数器进行计算?

如何在 newtcolorbox 环境中使用 LaTeX 计数器进行计算?

我创建了一个课程摘要框。为了区分按学年分类的摘要,我放置了一个可选参数,在左上角显示后者(在屏幕截图上以黄色突出显示)。

在此处输入图片描述

为了显示这个学年,我在可选参数中写了一个分数,如下所示:

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

\lipsum[1]
\end{resume}

为了简化代码并在 LaTeX 中取得进展,我想修改这个参数以仅传输 2018 年,然后自动计算下一个学年并显示分数 2018/2019。

为此,我创建了一个名为的计数器annee

%\setcounter{annee}{#1}

但是当我尝试在 tcolorbox 中使用它时,出现此错误:

! 缺少插入 \endcsname。

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

\newcounter{annee}

\tcbset{titreresume/.style={boxed title style={colframe=black!15,colbacktitle=gray!75,
leftrule=1.5mm,rightrule=1.5mm,toprule=1.5pt,bottom=0pt,boxsep=1pt}}}

\tcbset{soustitre/.style={subtitle style={colback=black!7,colframe=black!25,
boxsep=1mm,fontupper={\sffamily\bfseries\large\selectfont\color{black!63}}}}}

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

\begin{document}

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

\lipsum[1]
\end{resume}

\newpage

\begin{resume}[$\sfrac{2018}{2019}$]{chapitre 1}

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

如何使用 tcolorbox 中的 LaTeX 计数器进行计算?

使用 www.DeepL.com/Translator 翻译

答案1

你不能在 key-val 列表的中间设置计数器。但除此之外,你不需要计数器:

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


\tcbset{titreresume/.style={boxed title style={colframe=black!15,colbacktitle=gray!75,
leftrule=1.5mm,rightrule=1.5mm,toprule=1.5pt,bottom=0pt,boxsep=1pt}}}

\tcbset{soustitre/.style={subtitle style={colback=black!7,colframe=black!25,
boxsep=1mm,fontupper={\sffamily\bfseries\large\selectfont\color{black!63}}}}}

\newtcolorbox[auto counter]{resume}[2][0]{%
minipage boxed title*=-106mm,
before upper={\textcolor{black!63}{\sfrac{#1}{\the\numexpr#1+1} \hfill   #2\hfill\thetcbcounter/\pageref{nombre-de-page}}},
titreresume,soustitre,colframe=black!25,colback=white,leftrule=3mm,rightrule=3mm,toprule=2pt,bottomrule=2pt,left=3pt,right=0pt,top=3mm,
fonttitle=\sffamily\bfseries\large,label={nombre-de-page},
enhanced,nobeforeafter,lower separated=false,attach boxed title to top center={yshift=-3mm,xshift=-\linewidth/5},
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}

在此处输入图片描述

答案2

\year与 Ulrike 的回答类似,但默认使用 TeX 计数器 或为其他年份添加可选参数。

我也转换了方式\NewTColorBox,提供更好的参数控制,即使用它#1作为选项的通常的第一个参数。

当然,需要注意的是,如果在另一年重新编译该文件(例如,2018/2019 年将在 2020/2021 年重新编译),则该\the\year方法将改变“时间戳”

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

\newcounter{annee}

\tcbset{titreresume/.style={boxed title style={colframe=black!15,colbacktitle=gray!75,
leftrule=1.5mm,rightrule=1.5mm,toprule=1.5pt,bottom=0pt,boxsep=1pt}}}

\tcbset{soustitre/.style={subtitle style={colback=black!7,colframe=black!25,
boxsep=1mm,fontupper={\sffamily\bfseries\large\selectfont\color{black!63}}}}}

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

\begin{document}

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

\lipsum[1]
\end{resume}

\clearpage
\begin{resume}{chapitre 1}

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

在此处输入图片描述

相关内容