
Para obter o footnotes
na parte inferior da página, em vez de na parte inferior do tcolorbox
, eu uso \footnotemark
dentro tcolorbox
e \footnotetext
abaixo do tcolorbox
. Aqui está um MWE:
\documentclass[11pt]{book}
\usepackage{tcolorbox}
\begin{document}
\begin{tcolorbox}
This is a \textbf{tcolorbox}\footnotemark.
And this is some text.\footnotemark.
\end{tcolorbox}
\footnotetext{This is footnote 1}
\footnotetext{This is footnote 2}
And more text.\footnote{This is footnote 3}
\end{document}
e aqui está o resultado: (tive que fingir um pouco para manter o tamanho da imagem razoável.):
Observe que, na parte inferior da página, a nota de rodapé 2 e a nota de rodapé 3 estão rotuladas corretamente como 2 e 3, enquanto a nota de rodapé 1 está incorretamente rotulada como 2.
Responder1
A causa deste problema não tem nada a ver com tcolorbox
-- \footnotetext
usa \@thefnmark
o qual é sobrescrito cada vez \footnotemark
que é aplicado, portanto, múltiplas chamadas de \footnotemark
aumentarão o footnote
contador, mas não há associação desses valores do contador de notas de rodapé com o \footnotetext
. Múltiplas especificações de \footnotetext
não aumentam o rótulo do contador de notas de rodapé relevante.
É possível usar \footnotetext[value]{...}
, em vez disso, o que define o footnote
contador em um grupo - ele não vazará para fora.
A solução abaixo rastreia o número de \footnotemark
chamadas e atribui um rótulo a ele, \morefootnotetext
recupera o rótulo e extrai o valor do contador, sendo então digitado com \footnotetext[value]{...}
.
Esta abordagem irá falhar se houver mais \footnotetext
chamadas do que \footnotemark
tarefas!
\documentclass[11pt]{book}
\usepackage{xassoccnt}
\usepackage{tcolorbox}
\usepackage{refcount}
\newcounter{totalfootnotes}
\newcounter{totalfootnotetexts}
\DeclareAssociatedCounters{footnote}{totalfootnotes}% Count all footnotes
\usepackage{xpatch}
\usepackage{xparse}
\xpatchcmd{\footnotemark}{\stepcounter}{\refstepcounter}{}{}
\xapptocmd{\footnotemark}{\label{fnmark-\number\value{totalfootnotes}}}{}{}
\xpretocmd{\footnote}{\stepcounter{totalfootnotetexts}}{}{}% Explicitly step!
\NewDocumentCommand{\morefootnotetext}{o+m}{%
\IfValueTF{#1}{%
\footnotetext[#1]{#2}%
}{%
\stepcounter{totalfootnotetexts}%
\footnotetext[\getrefnumber{fnmark-\number\value{totalfootnotetexts}}]{#2}
}%
}
\begin{document}
\begin{tcolorbox}
This is a \textbf{tcolorbox}\footnotemark
And this is some text.\footnotemark
\end{tcolorbox}
\morefootnotetext{This is footnote 1 from inside}
\morefootnotetext{This is footnote 2 from inside}
And more text.\footnote{This is footnote 3 from outside}
Now an example with 4 footnotemark\footnote{A dummy footnote} calls
\begin{tcolorbox}
This is a \textbf{tcolorbox}\footnotemark
And this is some text.\footnotemark
Stuff\footnotemark Otherstuff\footnotemark
\end{tcolorbox}
\morefootnotetext{This is footnote 3 from inside}
\morefootnotetext{This is footnote 4 from inside}
\morefootnotetext{This is footnote 5 from inside}
\morefootnotetext{This is footnote 6 from inside}
\end{document}