为了将 放在footnotes
页面底部而不是 的底部tcolorbox
,我使用了 的\footnotemark
内部tcolorbox
和\footnotetext
的下方tcolorbox
。这是一个 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}
以下是输出:(我不得不稍微伪造一下,以保持图片大小合理。):
请注意,在页面底部,脚注 2 和脚注 3 都正确标记为 2 和 3,而脚注 1 被错误标记为 2。
答案1
导致此问题的原因与 无关tcolorbox
--每次应用时都会覆盖其\footnotetext
用途,因此多次调用会增加计数器,但这些脚注计数器值与相应的 没有任何关联。多次指定不会增加相关的脚注计数器标签。\@thefnmark
\footnotemark
\footnotemark
footnote
\footnotetext
\footnotetext
也可以使用\footnotetext[value]{...}
另一种方法,将footnote
计数器设置在一个组中——它不会泄漏到外面。
下面的解决方案跟踪呼叫次数\footnotemark
并为其分配标签,\morefootnotetext
检索标签并提取计数器值,然后使用进行排版\footnotetext[value]{...}
。
如果\footnotetext
调用的次数多于\footnotemark
分配的次数,这种方法将会失败!
\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}