![每章后的参考文献 - CUED 博士论文模板](https://linux22.com/image/388915/%E6%AF%8F%E7%AB%A0%E5%90%8E%E7%9A%84%E5%8F%82%E8%80%83%E6%96%87%E7%8C%AE%20-%20CUED%20%E5%8D%9A%E5%A3%AB%E8%AE%BA%E6%96%87%E6%A8%A1%E6%9D%BF.png)
我知道这不合常规,但除了链接之外,真的没有其他方法可以展示我所做的事情。
我正在使用剑桥大学工程系(CUED)博士论文模板(v2.3.1)在 Overleaf 上找到按照我的导师的要求,我似乎无法将参考文献分开以便它们位于每个章节之后。
我曾尝试过natbib
使用chapterbib
问题这里建议,我已经尝试使用,biblatex
但refsection=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
很长并且包含许多额外的\input
s、\include
s 和条件)。
该课程有几个与书目相关的选项,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}
在你的情况下,该选项似乎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
我没能找到罪魁祸首(在完全过时的biblatex
3.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
。