我的目标是制作一个多文件 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
。