我偶然发现了一个问题,当我使用包时,图表列表中只有引用键biblatex
,siunitx
同时还有参考部分。
如果你编译下面的工作 MWE,你会在图片的标题中看到这一点
最后你会得到正确的数字列表:
但如果你取消注释在该\usepackage{siunitx}
行中,您会在图形标题中获得相同的内容,但在图形列表中,您只能获得引用关键字。
在使用该包时,有什么想法可以让图形列表像第一个示例中那样工作吗siunitx
?
谢谢。
Tex 文件:main.tex
\documentclass[12pt, a4paper]{book}
\usepackage{caption}
\usepackage{lipsum}
\usepackage{siunitx}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\usepackage{hyperref}
\begin{document}
\begin{refsection}
\begin{figure}[htbp]
\centering
\rule{2cm}{2cm}
\caption{The is the first caption \protect{\autocite{bertram}}}
\end{figure}
\printbibliography
\end{refsection}
\begin{refsection}
\newpage
\lipsum[2] \autocite{doody}
\begin{figure}[htbp]
\centering
\rule{2cm}{2cm}
\caption{The is the second caption \protect{\autocite{aristotle:anima, doody}}}
\end{figure}
\printbibliography
\end{refsection}
\clearpage
\listoffigures
\end{document}
- PS:我没有在这个 MWE 中使用 siunitx,但在我的实际项目中,我确实需要它。
- PS2:我正在 Overleaf 上进行编译。
- 编辑:我看到了这个问题biblatex 与 refsection 和表格列表相结合但它没有答案,并且它不包括
siunitx
包装部分。 - 编辑 2:我调整了 MWE,使其不依赖于图像
答案1
更新
biblatex
.lof
在 v3.17 中切换到完全不同的处理等文件的方式.lot
。MWE 现在应该可以正常工作。
如果您遇到类似问题,请彻底更新您的系统,并确保至少拥有biblatex
v3.17。如果问题仍然存在,请在https://github.com/plk/biblatex/issues/。
有关该问题的一些背景信息可以参见https://github.com/plk/biblatex/issues/1116。
下面的答案是出于历史原因而保留的。它可能不会在当前版本中按预期工作,biblatex
而且肯定不需要。
旧答案
作为达莱夫指出在评论中,在一个钩子中biblatex
修补,但随后在一个钩子中重新定义,这也会覆盖的补丁。\addtocontents
\AtEndPreamble
siunitx
\addtocontents
\AtBeginDocument
biblatex
以下修复结合了biblatex
和 的siunitx
更改,\addtocontents
并位于两个定义之后。
\documentclass[12pt, a4paper]{book}
\usepackage{graphicx}
\usepackage{lipsum}
\usepackage{siunitx}
\usepackage{biblatex}
\usepackage{hyperref}
\addbibresource{biblatex-examples.bib}
\makeatletter
\ExplSyntaxOn
\AtBeginDocument
{
\cs_set:Npn \addtocontents #1#2
{
\protected@write \@auxout
{
\cs_set_eq:NN \label \use_none:n
\cs_set_eq:NN \index \use_none:n
\cs_set_eq:NN \glossary \use_none:n
\seq_map_inline:Nn \l_siunitx_unit_symbolic_seq
{ \__siunitx_contents_add:N ##1 }
}
{
\token_to_str:N \@writefile {#1} {\defcounter{refsection}{\the\c@refsection}\relax}
\token_to_str:N \@writefile {#1} {#2}
}
}
}
\ExplSyntaxOff
\makeatother
\begin{document}
\begin{refsection}
\begin{figure}[htbp]
\centering
\includegraphics[width=0.2\textwidth]{example-image}
\caption{The is the first caption \autocite{bertram}}
\end{figure}
\printbibliography
\end{refsection}
\clearpage
\begin{refsection}
\lipsum[2] \autocite{doody}
\begin{figure}[htbp]
\centering
\includegraphics[width=0.2\textwidth]{example-image}
\caption{The is the second caption \autocite{aristotle:anima, doody}}
\end{figure}
\printbibliography
\end{refsection}
\clearpage
\listoffigures
\end{document}