![同时使用 subfiles 和 wrapfig 包时出现问题](https://linux22.com/image/371294/%E5%90%8C%E6%97%B6%E4%BD%BF%E7%94%A8%20subfiles%20%E5%92%8C%20wrapfig%20%E5%8C%85%E6%97%B6%E5%87%BA%E7%8E%B0%E9%97%AE%E9%A2%98.png)
采取 2。
我目前正在尝试使用 ShareLaTeX 撰写我的本科论文。因为这是一篇很长的论文,昨晚我花了一段时间设置子文件包,以便论文的每个部分都有自己的文件。然而,今天我尝试添加我的第一个图。这两个文件如下所示(经过测试以确保这次不会出现错误):
主要.tex:
\documentclass[11pt,letterpaper]{report}
\usepackage[utf8]{inputenc}
\usepackage[bottom=1in,top=1in,left=1in,right=1in]{geometry}
\usepackage[english]{babel}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{wrapfig}
\usepackage{subfiles}
\begin{document}
\chapter{Basics of Knot Theory}
\section{History of Knot Theory}
\subfile{1.1_test_section.tex}
\end{document}
1.1_测试部分.tex:
\documentclass[main]{subfiles}
\begin{document}
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
\par
\begin{wrapfigure}{r}{0.3\textwidth}
\centering{
\includegraphics[width=0.28\textwidth]{example-image.jpg}
\caption{example caption}
}
\end{wrapfigure}
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
\end{document}
此错误没有相关的错误消息。渲染单个文件 1.1_test_section.tex 时,一切看起来都很好,图像以正确的宽度显示在右侧,文本从第二段开始环绕图像。然而,在主文档中,第二段最终打印在图像上,根本没有环绕。
以下是一些图片:
请注意,图片中的警告是关于 Bibtex 的,与此问题无关。
这是 ShareLaTeX 的问题吗?如果我切换到离线编译器,这个问题会解决吗(直到下周我的电脑修好后才有这个选项)?有没有其他包可以代替 wrapfig 来做基本相同的事情,但又与 subfiles 兼容?如果可能的话,我想继续使用 subfiles 包,因为我花了很多精力来设置它,我不想为了一个新的包而再回去做一遍。
答案1
您需要确保在 wrapfig 在范围内时段落结束,subfiles
可能应该结束\end{document}
段落,但它没有,所以除非您更改包,否则您需要\end{document}
在包含的文件之前留一个空行
请注意,这个问题与它无关,wrapfig
它是一个错误,subfiles
如果包含的文件是,你会看到同样的事情
\documentclass[main]{subfiles}
\begin{document}
\centering
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
\end{document}
除非在“\end{document}”之前有一个空行,否则包含在主文档中的版本将没有居中行。
解决办法是改变
\newcommand{\skip@preamble}{%
\let\document\relax\let\enddocument\relax%
\newenvironment{document}{}{}%
\renewcommand{\documentclass}[2][subfiles]{}}
到
\newcommand{\skip@preamble}{%
\let\document\par\let\enddocument\par
\renewcommand{\documentclass}[2][subfiles]{}}
因此,除了添加空白行之外,还可以添加
\renewcommand{\skip@preamble}{%
\let\document\par\let\enddocument\par
\renewcommand{\documentclass}[2][subfiles]{}}
后\usepackage{subfiles}