我正在chapterbib
为一个较长的文档使用,并且为每个章节创建参考书目工作正常。每个章节都在其自己的文件中,该文件获取included
。
是否有任何选项可以按章节等方式拆分章节文件?使用input
似乎不起作用,并且includes
禁止嵌套。
有任何已知的解决方法吗?可以解决这个问题cbunit
吗cbinput
?我不确定他们在这里会如何工作。
谢谢!
编辑-MWE:
./main.txt
\documentclass[a4paper,10pt,twoside,onecolumn,openright,final,titlepage]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tocbibind}
%\usepackage[rootbib]{chapterbib}
\usepackage[sectionbib]{chapterbib}
\bibliographystyle{plain}
\usepackage[english]{babel}
\usepackage[pagebackref=true]{hyperref}
\usepackage{blindtext}
\renewcommand*{\backref}[1]{} % Internally redefine backref in order to display
\renewcommand*{\backrefalt}[4]{[{\small% the pages a reference was cited
\ifcase #1 Not cited.%
\or Cited on page~#2.%
\else Cited on pages #2.%
\fi%
}]}
\begin{document}
\tableofcontents
\include{chapters/chpt_1}
\include{chapters/chpt_2}
\chapter{Bibliography}
%Don't add a section to the toc
\renewcommand{\addcontentsline}[3]{}
%Don't add a title to the bibliography
\renewcommand{\bibname}{}
\bibliography{mybib}
\end{document}
./chapters/chpt_1.tex
:
\chapter{Test}
\section{First}
\blindtext[10]
\cite{mathworld:AssociatedLaguerrePolynomial}
\section{Second}
\blindtext[8]
\cite{mathworld:AssociatedLegendreDifferentialEquation,mathworld:AssociatedLaguerrePolynomial}
\bibliographystyle{plain}
\bibliography{../mybib}
./chapters/chpt_2.tex
\chapter{Test}
\section{First}
\blindtext[10]
\cite{Weisstein}
\section{Second}
\blindtext[8]
\cite{Weissteina}
\section{Third}
\blindtext[6]
\cite{Weissteinb}
\bibliographystyle{plain}
\bibliography{../mybib}
mybib.bib
% Encoding: UTF-8
@Misc{mathworld:AssociatedLaguerrePolynomial,
Title = {{Associated Laguerre Polynomial. From MathWorld---A Wolfram Web Resource \url{http://mathworld.wolfram.com/AssociatedLaguerrePolynomial.html}}},
Author = {Weisstein, Eric W.},
Note = {Last visited on 16/03/2016}
}
@Misc{mathworld:AssociatedLegendreDifferentialEquation,
Title = {{Associated Legendre Differential Equation. From MathWorld---A Wolfram Web Resource \url{http://mathworld.wolfram.com/AssociatedLegendreDifferentialEquation.html}}},
Author = {Weisstein, Eric W.},
Note = {Last visited on 16/03/2016}
}
@Misc{Weisstein,
author = {Weisstein, Eric W.},
note = {Last visited on 16/03/2016},
title = {{Wigner 3j-Symbol. From MathWorld---A Wolfram Web Resource \url{http://mathworld.wolfram.com/Wigner3j-Symbol.html}}},
}
@Misc{Weissteina,
author = {Weisstein, Eric W.},
note = {Last visited on 16/03/2016},
title = {{Wigner 6j-Symbol. From MathWorld---A Wolfram Web Resource \url{http://mathworld.wolfram.com/Wigner6j-Symbol.html}}},
}
@Misc{Weissteinb,
author = {Weisstein, Eric W.},
note = {Last visited on 16/03/2016},
title = {{Wigner 9j-Symbol. From MathWorld---A Wolfram Web Resource \url{http://mathworld.wolfram.com/Wigner9j-Symbol.html}}},
}
编译:
pdflatex main.tex
生成章节aux
文件cd chapters; bibtex chpt_1.aux; bibtex chpt_2.aux; cd -
- 注释掉
sectionbib
;取消注释rootbib
pdflatex main.tex; bibtex main.aux; pdflatex main.tex; pdflatex main.tex
这样我们就得到了第 1 章中的两个条目书目、第 2 章中的三个条目书目以及最后的五个条目书目。为了便于编写和版本控制,我希望将每章的每个部分放在自己的 tex 文件中 - 如果这有意义的话。
答案1
在这种情况下,有两个软件包可能会有所帮助:subfiles
和import
。我更喜欢import
,所以我用那个包来回答你的问题。
为了获得无错误的编译,我必须改变示例中的几件事:
- 该软件包
chapterbib
在 CTAN 上仍然可用,但在我的 MikTeX TeX 发行版中不可用。因此,我用功能更强大的软件包替换了它,该软件包biblatex
使用biber
引擎对引用进行排序。 - 在您的
bib
文件中您使用@Misc. 大写字母米无法识别biblatex
,因此我将其更改为小写米。 - 可以将页面引用作为选项输入到文本中的
\cite
或\parencite
命令中。 - 使用该结构可以获得每章的传记目
\begin{refsection} <chapter content> \end{refsection}
。
该import
包提供了两个命令(和别名)来将长文档分成子文档。它还允许细分子文档。这就是我在下一个 MWE 中所做的。
main.tex 文件的 MWE:
\documentclass[a4paper,10pt,twoside,onecolumn,openright,final,titlepage]{book}
\usepackage{import}
\usepackage[style=alphabetic, backend=biber]{biblatex}
\addbibresource{refer.bib}
%
\usepackage[english]{babel}
\usepackage{hyperref}
\usepackage{blindtext}
\begin{document}
\tableofcontents
\import{chapter1/}{chapter1}
\import{chapter2/}{chapter2}
\printbibliography[heading=bibintoc]
\end{document}
第一章的 MWE(第二章具有相同的结构),存储在./chapter1/chapter1.tex
:
\begin{refsection}
\chapter{Test}
\subimport{sections}{section1}
\subimport{sections}{section1}
\subimport{sections}{section3}
\printbibliography[heading=subbibintoc, title=Chapter bibliography]
\end{refsection}
第一节的 MWE 作为所有节的结构的示例,存储在./chapter1/sections/section1.tex
:
\section{First}
\blindtext[10]
\cite{mathworld:AssociatedLaguerrePolynomial}
正如您在提供的 MWE 示例中看到的,章节和节的组织方式具有结构。该结构反映了存储这些文件的文件夹组织。主文档位于顶级文件夹中。章节文件存储在该顶级文件夹的各自子文件夹中(chapter1、chapter2、...)。节存储在每个章节文件夹的子文件夹部分中。
在主文件中,每个章节都使用以下命令导入:\import{chapterx}{chapterx}
。第一个第x章指的是包含 .tex 文件的文件夹第x章(第二个)。
该命令\subimport{sections}{sectiony}
使用相同的约定:首先是存储文件的文件夹。
笔记regsection=chapter
根据 Sylvain Rigal 给出的评论对答案进行了部分修改。关于未按预期工作的评论,因此保留第 4 点给出的评论。
答案2
为了完整起见炼金术士的伟大答案,这里有一个包含章节参考书目和全局参考书目的解决方案,它只打印文档中引用的参考文献(而不是 bib 文件中包含的所有参考文献)。
它使用包refsegment=chapter
选项biblatex
(不再需要\begin{refsection}...\end{refsection}
环境,取自ebosi 的回答segment=\therefsegment
) 和命令的 选项\printbibliography
,在每一章中你都需要一个 chapbib,以便只打印当前的引用参考文献refsegment
(在本例中对应于一个章节)。
MWE(可耻地受到启发)炼金术士的答案):
\documentclass{book}
\usepackage{import}
\begin{filecontents}{ref.bib}
@Misc{ref1,
Title = {Ref1 title},
Author = {Ref1 text}
}
@Misc{ref2,
Title = {Ref2 title},
Author = {Ref2 text}
}
@Misc{ref3,
Title = {Ref3 title},
Author = {Ref3 text}
}
@Misc{ref4,
Title = {Ref4 title},
Author = {Ref4 text}
}
\end{filecontents}
\usepackage[refsegment=chapter, backend=biber]{biblatex}
\addbibresource{ref.bib}
\begin{filecontents}{chapters/chapter1/chapter1.tex}
\chapter{A chapter}
\cite{ref1}
\subimport{sections}{section1}
\printbibliography[heading=subbibintoc,segment=\therefsegment, title=Chapter bibliography]
\end{filecontents}
\begin{filecontents}{chapters/chapter1/sections/section1.tex}
\section{A section}
\cite{ref2}
\end{filecontents}
\begin{filecontents}{chapters/chapter2/chapter2.tex}
\chapter{A second chapter}
\subimport{sections}{section1}
\printbibliography[heading=subbibintoc,segment=\therefsegment, title=Chapter bibliography]
\end{filecontents}
\begin{filecontents}{chapters/chapter2/sections/section1.tex}
\section{A section}
\cite{ref3}
\end{filecontents}
\begin{document}
\tableofcontents
\import{chapters/chapter1}{chapter1}
\import{chapters/chapter2}{chapter2}
\printbibliography[heading=bibintoc,title={Global bibliography}]
\end{document}
正如指出评论,如果您将各节的 tex 文件存储在章节文件夹中,则使用\subimport{./}{section1}
代替\subimport{sections}{section1}
。
两种情况下的结果(请注意,由于该参考文献ref4
未在文档中引用,因此未打印在全局书目中):