每章后的参考文献 - CUED 博士论文模板

每章后的参考文献 - CUED 博士论文模板

我知道这不合常规,但除了链接之外,真的没有其他方法可以展示我所做的事情。

我正在使用剑桥大学工程系(CUED)博士论文模板(v2.3.1)在 Overleaf 上找到按照我的导师的要求,我似乎无法将参考文献分开以便它们位于每个章节之后。

我曾尝试过natbib使用chapterbib问题这里建议,我已经尝试使用,biblatexrefsection=chapter没有任何效果。

.cls我对定义我正在使用的文档类别类型的文档或其他文档了解不够。

我将本章中的每个参考文献称为

\bibliographystyle{aipnum4-1.bst}
\setstretch{0.9}
\bibliography{ch1/biblio1.bib} 

我不知道该怎么办,我已经阅读了这里的每个问题,但似乎无法解决。

谢谢!

编辑:忘了提一下,尽管我尝试过不同的方法来获取多个参考文献部分,但目前我正在使用biblatex。第一章的参考文献也显示在其余所有章节中,并且不在第一章中的参考文献会像在论文的其余部分.bib一样显示。??

编辑2:链接到Overleaf 中的最小工作示例在此处。我知道这不是最理想的,但我想不出其他办法。

答案1

如果可能的话,你应该尽量避免使用模板。请参阅为什么应该避免使用(复杂)模板?https://github.com/johannesbottcher/templateConfusion。大多数模板在工作时都很好,并能提供您想要的输出,但修改它们会变得越来越复杂。糟糕的模板可能包含过时或完全错误的代码,并且可能随时让您大吃一惊。

这个特定的模板(链接至Overleaf 版本)也可在https://github.com/kks32/phd-thesis-template旨在作为剑桥大学工程系 (CUED) 的博士论文模板。如果您的论文不是在那里提交的,最好不要使用该模板,因为您必须对其进行修改。

我没有仔细研究这个模板,但我没有发现任何明显的技术错误(除了下面违反直觉的选项处理)。我目前的担忧主要是概念上的(这个模板确实很多并且适用于特定的大学部门)和教学(模板中的代码看起来很吓人,许多选项和设置可能让人不知所措,甚至基本代码也thesis.tex很长并且包含许多额外的\inputs、\includes 和条件)。


该课程有几个与书目相关的选项,custombib书目控制权全部交还给你如果你还没有使用选项numbered。处理这些选项的方式意味着(与直觉相反)较早的选项numbered只是覆盖custombib并加载natbib。请注意,该类并不关心这些书目选项的顺序,结果由类实现中的特定测试嵌套决定。并且使用冲突选项的结果从外部根本看不出来。

Preamble/preamble.tex,具体来说

\ifuseCustomBib
%\usepackage[backend=biber,refsection=section, style=numeric-comp, citestyle=numeric, sorting=nty]{biblatex}

\usepackage[firstinits=true,
bibencoding=inputenc,
hyperref=auto,
pagination=none,
%style=standard,
refsection=chapter]
{biblatex}


\bibliographystyle{aipnum4-1.bst}
\fi

你尝试显式地加载biblatex包,但在下一行代码中你写道

\bibliographystyle{aipnum4-1.bst}

这是与传统 BibTeX 书目不兼容的命令biblatex(并且也稍微不正确:中的样式\bibliographystyle应该不带文件扩展名,\bibliographystyle{aipnum4-1}这样才是正确的)。

无论如何,该numbered选项都会阻止您定义参考书目的尝试。它只会导致natbib加载并忽略您的定义,因为它们受到保护\ifuseCustomBib(这是错误的)。


在章节中(例如Chapter5/chapter5.tex),您可以制作一个参考书目

I know this seems kind of extra, it's so that no extra white page is added in between the text and the references.
\begingroup
\makeatletter
\renewcommand{\chapter}{
    \if@openright\clearpage\else\clearpage\fi
    \thispagestyle{empty}%
    \global\@topnum\z@
    \@afterindentfalse
    \secdef\@chapter\@schapter
}
\makeatother

\bibliographystyle{aipnum4-1.bst}
\setstretch{0.9}
\bibliography{Chapter5/biblio5.bib} 
\endgroup
\thispagestyle{empty}
\clearpage
%\if@openright\cleardoublepage\else\clearpage\fi
\mbox{}
\thispagestyle{empty}

这在很多层面上看起来都是错的。但是我们再次从这段代码中可以看出,你使用的是传统的 BibTeX 方法,而不是biblatex——这次是明确的。


有几种方法可以获得分割书目(见按参考文献类型划分参考书目),并且还有与 BibTeX 兼容的方式来获取每章的参考书目(见每章末尾的参考文献例如如何使用 chapterbib 包:语法每章参考书目)然而,我相信这biblatex提供了最简单、最方便的逐章参考书目方法。

看一下要切换到 biblatex 该怎么做?看看你必须做什么才能切换到biblatex

删除文档正文中的所有\bibliographystyle和说明。\bibliography

以下是一个“最小”示例PhDThesisPSnPDF,展示了如何biblatex在文档中使用。请仔细阅读注释,它们应该解释了这是如何工作的。

% no option numbered
\documentclass[a4paper,12pt,times,preprint,index, custombib]{Classes/PhDThesisPSnPDF}

% in Preamble/preamble.tex you need
\ifuseCustomBib
\usepackage[
  backend=biber,
  style=numeric,
  refsection=chapter]
{biblatex}

% you also need to declare your bib file
\addbibresource{biblatex-examples.bib}
% biblatex-examples.bib is an example file
% that is available everywhere where biblatex is installed
% you'll need something like
% \addbibresource{biblio.bib}
% and maybe
% \addbibresource{Chapter5/biblio5.bib}
% etc. you can have several of these lines
\fi

\begin{document}
% in your chapters you'll have
\chapter{Lorem}
Lorem ipsum~\cite{sigfridsson} dolor~\cite{worman}.
% just use \cite as normal

\printbibliography[heading=subbibliography] % this prints the bibliography

% next chapter
\chapter{Dolor}
Dolor~\cite{nussbaum} sit~\cite{sigfridsson}

\printbibliography[heading=subbibliography]
\end{document}

第 2 章的屏幕截图,其中包含两个引文以及包含这两个条目的子参考书目


在你的情况下,该选项似乎refsection=chapter会产生错误

! Package biblatex Error: Patching \@makechapterhead failed.

See the biblatex package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.21 \begin{document}

This is an internal issue typically caused by a conflict
between biblatex and some other package. Modifying
the package loading order may fix the problem.

在 Overleaf 上。在我本地安装的(今天早上更新的 Win 10 上的 MikTeX 2.9)上,使用最新软件包时不会发生此错误。

问题似乎是,的定义\@makechapterhead是错误的,如下\tracingpatches所示

[debug] tracing \ifpatchable on input line 142
[debug] analyzing '\@makechapterhead'
[debug] ++ control sequence is defined
[debug] ++ control sequence is a macro
[debug] ++ control sequence is a macro with parameters
[debug] -- macro cannot be retokenized cleanly
[debug] -> the macro may have been defined under a category
[debug]    code regime different from the current one
[debug] -> the replacement text may contain special control
[debug]    sequence tokens formed with \csname...\endcsname;
[debug] -> the replacement text may contain carriage return,
[debug]    newline, or similar characters

我没能找到罪魁祸首(在完全过时的biblatex3.7 版 TeX 系统、极其复杂的模板以及我现在无法正确访问的系统之间),但你可以删除该选项refsection=chapter并使用 手动模拟它\begin{refsection}...\end{refsection}

% no option numbered
\documentclass[a4paper,12pt,times,preprint,index, custombib]{Classes/PhDThesisPSnPDF}

% in Preamble/preamble.tex you need
\ifuseCustomBib
\usepackage[
  backend=biber,
  style=numeric,
]
{biblatex}

% you also need to declare your bib file
\addbibresource{biblatex-examples.bib}
% biblatex-examples.bib is an example file
% that is available everywhere where biblatex is installed
% you'll need something like
% \addbibresource{biblio.bib}
% and maybe
% \addbibresource{Chapter5/biblio5.bib}
% etc. you can have several of these lines
\fi

\begin{document}
% in your chapters you'll have
\begin{refsection}
\chapter{Lorem}
Lorem ipsum~\cite{sigfridsson} dolor~\cite{worman}.
% just use \cite as normal

\printbibliography[heading=subbibliography] % this prints the bibliography
\end{refsection}

% next chapter
\begin{refsection}
\chapter{Dolor}
Dolor~\cite{nussbaum} sit~\cite{sigfridsson}

\printbibliography[heading=subbibliography]
\end{refsection}
\end{document}

另一种解决方法是发出

\makeatletter
\def\@makechapterhead#1{%
\vspace *{50\p@ }{\parindent \z@ \raggedright \normalfont \ifnum \c@secnumdepth >\m@ne \if@mainmatter \huge \bfseries \@chapapp \space \thechapter \par \nobreak \vskip 20\p@ \fi \fi \interlinepenalty \@M \Huge \bfseries #1\par \nobreak \vskip 40\p@ }}
\makeatother

在您加载之前biblatex

相关内容