使用子文件时的引用问题

使用子文件时的引用问题

我的目标是制作一个多文件 Latex 文档,我正在 Overleaf 中处理它。我希望每一章都有单独的参考书目部分(这显然可以通过软件包实现chapterbib)。但是,我无法成功编译我的文档;我留下了一个“最小”项目,问题已经重现:

项目结构:

[章节](目录)

  • 第一章(包含 Chapter One.bib 和 Chapter One.tex)

主文本

在此处输入图片描述

第一章.bib

@article{PhysRev.97.1387,
  title = {Behavior of Neutral Particles under Charge Conjugation},
  author = {Gell-Mann, M. and Pais, A.},
  journal = {Phys. Rev.},
  volume = {97},
  issue = {5},
  pages = {1387--1389},
  numpages = {0},
  year = {1955},
  month = {Mar},
  publisher = {American Physical Society},
  doi = {10.1103/PhysRev.97.1387},
  url = {https://link.aps.org/doi/10.1103/PhysRev.97.1387}
}

第一章.tex

This is Chapter I, \cite{PhysRev.97.1387}.
\bibliography{Chapters/Chapter One/Chapter 1}

主文本

\documentclass{book}
\usepackage{chapterbib}
\usepackage{subfiles}
\usepackage{cite}

\title{Example}
\author{Author}
\date{February 2023}

\begin{document}

\maketitle

\chapter{Chapter I}
\subfile{Chapters/Chapter One/Chapter 1.tex}
\end{document}

但是,上面的项目编译时出现了非致命错误,但没有显示引用。我怀疑我在引用的命名上犯了错误,因为它是 Overleaf 自动建议的。相应的警告消息是:

Citation `PhysRev.97.1387' on page 3 undefined on input line 1.

这听起来很奇怪,因为我已经定义了它并将其与正确的 bib 文件连接起来。我还留下了该项目的链接: https://www.overleaf.com/5781314855tszqjcvfsrmk

答案1

sub.tex使用加载文件时\subfile,选择其中相对于 的任何路径信息。对于、和sub.tex以外的命令,您可能必须将相对路径另外包装到命令中,例如。\input\includegraphics\bibliography\subfix\subfix{...relpath...}

另一个问题可能是,当将目录和文件名中的空格交给外部程序(如)时,无法正确处理它们bibtex。如果您想保持可移植性,避免使用它们会更安全。

这是编译的代码版本:

% main.tex
\documentclass{book}
\usepackage{chapterbib}
\usepackage{subfiles}
\usepackage{cite}
\title{Example}
\author{Author}
\date{February 2023}
\begin{document}
\maketitle
\chapter{Chapter I}
\subfile{Chapters/ChapterOne/Chapter1.tex}
\end{document}

% Chapters/ChapterOne/Chapter1.tex
This is Chapter I, \cite{PhysRev.97.1387}.
\bibliographystyle{abbrv}
\bibliography{Chapter1}

% Chapters/ChapterOne/Chapter1.bib
% See original posting

使用该包的注意事项subfiles在原始帖子中,Chapter1.tex不包含\documentclass自己的命令。这可能是由于提供了一个简化的最小示例。但是,如果这是原始 TeX 代码的一个功能,那么不要使用该subfiles。此软件包的重点是重用/跳过前言。相反,请用 替换\subfile\input如果您喜欢具有相对于子文件的路径的功能,请使用import软件包并\subfile用替换\import

相关内容