chapterbib 包含各节的子文件

chapterbib 包含各节的子文件

我正在chapterbib为一个较长的文档使用,并且为每个章节创建参考书目工作正常。每个章节都在其自己的文件中,该文件获取included

是否有任何选项可以按章节等方式拆分章节文件?使用input似乎不起作用,并且includes禁止嵌套。

有任何已知的解决方法吗?可以解决这个问题cbunitcbinput?我不确定他们在这里会如何工作。

谢谢!

编辑-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}}},
}

编译:

  1. pdflatex main.tex生成章节aux文件
  2. cd chapters; bibtex chpt_1.aux; bibtex chpt_2.aux; cd -
  3. 注释掉sectionbib;取消注释rootbib
  4. pdflatex main.tex; bibtex main.aux; pdflatex main.tex; pdflatex main.tex

这样我们就得到了第 1 章中的两个条目书目、第 2 章中的三个条目书目以及最后的五个条目书目。为了便于编写和版本控制,我希望将每章的每个部分放在自己的 tex 文件中 - 如果这有意义的话。

答案1

在这种情况下,有两个软件包可能会有所帮助:subfilesimport。我更喜欢import,所以我用那个包来回答你的问题。

为了获得无错误的编译,我必须改变示例中的几件事:

  1. 该软件包chapterbib在 CTAN 上仍然可用,但在我的 MikTeX TeX 发行版中不可用。因此,我用功能更强大的软件包替换了它,该软件包biblatex使用biber引擎对引用进行排序。
  2. 在您的bib文件中您使用@Misc. 大写字母无法识别biblatex,因此我将其更改为小写
  3. 可以将页面引用作为选项输入到文本中的\cite\parencite命令中。
  4. 使用该结构可以获得每章的传记目\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未在文档中引用,因此未打印在全局书目中):

在此处输入图片描述

相关内容