如何在文档末尾收集 tcolorboxes

如何在文档末尾收集 tcolorboxes

我想在文档的不同位置添加注释,使用tcolorbox(我发现了一个非常好的包)并在文档末尾获取文档中添加的所有注释的汇编。这是我的 MWE:

\documentclass[french]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb,amsbsy,thmtools} % thmtools pour list of theorem
\usepackage[a4paper,
    vmargin=2cm,
    hmargin=2.5cm]{geometry}
\usepackage{xcolor}
\usepackage[many]{tcolorbox}
\usepackage{lipsum}
\usepackage{babel}

\renewcommand\familydefault{\sfdefault}

\newtcbtheorem[]{rema}{Remarque}%
   {colback=white,colframe=gray!50,fonttitle=\bfseries,
   enhanced,
   coltitle=gray!75!black,
   attach boxed title to top left={xshift=2ex,yshift=-2mm,yshifttext=-1mm},
   boxed title style={colframe=red!50,colback=gray!25},
   code=\bfseries
   }{th}

\title{Comment faire une liste de remarques}
\author{}
\date{}
\begin{document}
\maketitle

\vspace{-1cm}

\noindent
\section*{Bla}
\lipsum[1]
\begin{rema}{}{foo}
\lipsum[2]
\end{rema}

\section*{Bli}
\lipsum[3]
\begin{rema}{}{bar}
\lipsum[4]
\end{rema}

\section*{Liste des remarques}
%\listofremarks% to be defined
%\setcounter{\therema}{0} % not working
\begin{rema}{}{foo}
\lipsum[2]
\end{rema}

\begin{rema}{}{bar}
\lipsum[4]
\end{rema}

\end{document}

我想要得到的是:

1)最好是某种命令,如“\listofremarks”,它可以在文档的最末尾列出所有先前引入的注释,如果可能的话。

2) 如果不可能,我最终可以在文档末尾手动添加备注,但我需要将计数器重置remark为 0,但我不知道如何执行此操作(我没有找到所涉及计数器的名称)。

我浏览了tcolorbox手册的第 15 节定理,但没有找到令人满意的解决方案。

remarks编辑:我想要的不完全是一个列表,而是一份相当广泛的所有文档的汇编

EDIT2:标题已更改(框,而不是框列表),并且问题也略作编辑,以便更好地解释目标

答案1

根据@Troy的评论,我从这个问题开始在单独的文件中重述定理并根据我的需要进行调整。

诀窍在于使用xr包(我发现的)和存储盒子内容的外部文档。唯一的区别是,在本例中,盒子的“保存”和“编译”是在同一个文件中完成的。

这是我的工作MWE:

\documentclass[french]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb,amsbsy}
\usepackage[a4paper,
    vmargin=2cm,
    hmargin=2.5cm]{geometry}
\usepackage{xcolor}
\usepackage[many]{tcolorbox}
\usepackage{lipsum}
\usepackage{xr}
    \externaldocument{test-list-remark}% external file where the boxes are stored
\usepackage{babel}

\renewcommand\familydefault{\sfdefault}

\newtcbtheorem[list inside=rema]{rema}% name      Formatting each individual box
   {Remarque}% display name
   {colback=white,colframe=gray!50,fonttitle=\bfseries,
   enhanced,
   title={Remark~\thetcbcounter:},
   label={rema@\thetcbcounter},
   coltitle=gray!75!black,
   attach boxed title to top left={xshift=2ex,yshift=-2mm,yshifttext=-1mm},
   boxed title style={colframe=red!50,colback=gray!25},
   code=\bfseries,
   saveto=remas/rema-\thetcbcounter.tex,
   record={\string\compilelement{\thetcbcounter}{remas/rema-\thetcbcounter.tex}},
   #1}% options
   {th}% prefix  

\NewTotalTColorBox{\compilelement}{mm}{% The TotalBox where all the boxes are put
     colback=white,colframe=gray!50,fonttitle=\bfseries,
     enhanced,
     coltitle=gray!75!black,
     attach boxed title to top left={xshift=2ex,yshift=-2mm,yshifttext=-1mm},
     boxed title style={colframe=red!50,colback=gray!25},
     code=\bfseries,
     title={Remarque~\ref{rema@#1}},
}{\input{#2}}

\title{Comment faire une liste de remarques}
\author{}
\date{}
\begin{document}
\maketitle

\vspace{-1cm}

\noindent
\tcbstartrecording % pretty obvious
\section*{Bla}
\lipsum[1]
\begin{rema}{}{foo} %
\lipsum[2]
\end{rema}

\section*{Bli}
\lipsum[3]
\begin{rema}{}{bar} %
\lipsum[4]
\end{rema}
\tcbstoprecording % idem

% this line is not necessary, since it is not what I wanted
\tcblistof[\section*]{rema}{Liste des remarques}
% I leave it however, someone may find it useful

\section*{Compilation des remarques}
\tcbinputrecords[test-list-remark.records]% to display the compilation of boxes

\end{document}

我希望这个答案对某些人有用。

相关内容