这里有一个有趣的例子。在下面的例子中,如果book
使用了该类,则\cite
第二个包含的文档中的指向为该页面生成的参考书目。
但是当memoir
加载时它指向前一个文件。
是什么赋予了?
更新:
这似乎是\appendix
这是命令memoir
的定义\appendix
\renewcommand{\appendix}{\par
\setcounter{chapter}{0}%
\setcounter{section}{0}%
\gdef\@chapapp{\appendixname}%
\gdef\thechapter{\@Alph\c@chapter}%
\anappendixtrue
}
与之相比,唯一的区别book
是最后一行
以下是更新的 MWE
% \documentclass[a4paper]{book} % works
\documentclass[a4paper]{memoir} % the citation on page 3 points to
% page 1
\begin{filecontents}[overwrite]{\jobname-refs.bib}
@article{test,
author = "Test Testson",
title = "Test",
journal = "Some journal",
year = 2020,
}
\end{filecontents}
\begin{filecontents}[overwrite]{\jobname-a.tex}
\chapter{Test}
\cite{test}
\printbibliography[heading = subbibliography]
\end{filecontents}
\begin{filecontents}[overwrite]{\jobname-b.tex}
\chapter{Test}
\cite{test}
\printbibliography[heading = subbibliography]
\end{filecontents}
\makeatletter
% memoir definition of \appendix note the last line, remove and everything works
\renewcommand{\appendix}{\par
\setcounter{chapter}{0}%
\setcounter{section}{0}%
\gdef\@chapapp{\appendixname}%
\gdef\thechapter{\@Alph\c@chapter}%
\anappendixtrue
}
\makeatother
\usepackage[
backend = biber,
refsection = chapter, % Chapter-wise bibliography
citestyle = numeric,
bibstyle = authoryear,
]{biblatex}
\usepackage[colorlinks]{hyperref}
\addbibresource{\jobname-refs.bib}
\begin{document}
\include{\jobname-a}
\appendix
\include{\jobname-b}
\end{document}
这是 pdf 中的一张图片
从 Ulrikes 的分析来看,这似乎是加载后添加的正确解决方案biblatex
(并报告给biblatex
)
\makeatletter
\def\blx@refpatch@chapter@memoir#1{%
\apptocmd\memchapinfo{#1}
{}{\blx@err@patch{\string\memchapinfo}}%
\apptocmd\memchapstarinfo{#1}
{}{\blx@err@patch{\string\memchapstarinfo}}%
\apptocmd\memappchapinfo{#1}
{}{\blx@err@patch{\string\memchapinfo}}%
\apptocmd\memappchapstarinfo{#1}
{}{\blx@err@patch{\string\memchapstarinfo}}%
}
\makeatother
答案1
\newrefsection
biblatex 挂接到 memoir 代码中,在refsection=chapter
使用时添加命令。它将 is 添加到\memchapinfo
。跟踪代码时可以看到它:
\memchapinfo #1#2#3#4->\newrefsection
#1<-\thechapter
#2<-\f@rtoc
#3<-\f@rhdr
#4<-Test
但是 with\anappendixtrue
\memchapinfo
没有使用,\memappchapinfo
而且因此 the\newrefsection
缺失了。
您可以要求 biblatex 维护者修补此命令。或者,您可以\newrefsection
在启动附录时手动执行。