在我的电脑上,在同一个文件夹中,我创建了主文档main.tex
和一个图形disc.tex
- 一个独立的 TikZ/Asymptote 代码。首先运行disc.tex
以获取disc.pdf
,然后运行main.tex
(其中有\includegraphics{disc.pdf}
)。它像往常一样工作。这种方式有助于减少编译时间,尤其是当主文档中有很多图形时。
内容main.tex
:
\documentclass{article}
\usepackage{graphics,lipsum}
\begin{document}
\lipsum[1]
\begin{figure}
\centering
\includegraphics{disc.pdf}
\caption{This is my disc}
\label{fig:mydisc}
\end{figure}
\lipsum[2]
\end{document}
内容disc.tex
:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\fill[cyan!50] circle(1) node[red]{unit disc};
\end{tikzpicture}
\end{document}
我怎样才能在 Overleaf 上做类似的事情?
我的示例项目
Overleaf 无法识别其位置disc.pdf
。
我认为这种情况对于 Overleaf 上的 TeX 用户来说很常见,但我还没有在 texSE 上找到合适的答案。这个答案建议制作 2 个或更多项目,一个用于主文档,其他项目用于每个图,然后导入output.pdf
(必要时更改名称)到主项目。这不太方便:想想每次我们修复一个图的代码时,我们都需要再次导入。我们写一本有 100 个图的书,我们需要一个项目,而不是 101 个项目,对吗?
答案1
您还可以尝试使用standalone
包和\includestandalone
:main.tex
\documentclass{article}
\usepackage{graphicx,lipsum}
\usepackage[mode=buildnew]{standalone}
\begin{document}
\lipsum[1]
\begin{figure}
\centering
\includestandalone{disc}
\caption{This is my disc}
\label{fig:mydisc}
\end{figure}
\lipsum[2]
\end{document}
然后,编译main.tex
将触发编译disc.tex
、生成disc.pdf
并在 中使用它main.tex
。
您还可以disc.pdf
从生成的文件列表。
答案2
overleaf 将主文档复制到/compile
并使用-jobname=output
,因此所有内容都称为 output.pdf,而当您需要时该文件不存在。您可以这样做
添加
\immediate\write18{pdflatex disc}
因此main.tex
它会disc.pdf
在生成的目录中进行编译,main
但请注意,它每次都会这样做,因此您不会节省任何时间。
您可以将其包装在测试中以查看是否disc.pdf
存在
\IfFileExists{disc.pdf}{}{%
\immediate\write18{pdflatex disc}
}
然后,如果您编辑 disc.pdf,则需要暂时注释掉测试以强制重建 disc.pdf