![是否可以在子文件内使用带有相对路径的 includegraphics?](https://linux22.com/image/288712/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%9C%A8%E5%AD%90%E6%96%87%E4%BB%B6%E5%86%85%E4%BD%BF%E7%94%A8%E5%B8%A6%E6%9C%89%E7%9B%B8%E5%AF%B9%E8%B7%AF%E5%BE%84%E7%9A%84%20includegraphics%EF%BC%9F.png)
问题
我有许多文档想要合并到一个文档中。例如,它可以是一种年度回顾,其中包含许多使用相同序言的不同来源,如讲座、实验室、作业、测试等...
我尝试使用该subfiles
包,但由于子文档内的相对路径,我无法编译主文档:
File `image.png' not found
是否可以使用相对路径将图形包含在子文件内?
最小工作示例
我想要将文件sub.tex
包含在更大的文档中main.tex
:
main.tex
sub/sub.tex
sub/image.png
主文档与子文档不在同一目录中,如下所示:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{subfiles}
\begin{document}
Main file
\subfile{sub/sub.tex}
\end{document}
我的子文件包含具有相对路径的sub.tex
图像:image.png
\documentclass[../main.tex]{subfiles}
\begin{document}
Sub file
\includegraphics{image.png}
\end{document}
我尝试过
按照下面的评论,我定义了两个命令Subfile
,并IncludeGraphics
在main.tex
两个文件中使用它们:
\usepackage{xstring}
\def\SubfilePath{}
\def\Subfile#1{%
\def\SubfilePath{\StrBefore{#1}{/}/}%
\subfile{#1}}
\newcommand\IncludeGraphics[2][]{%
\includegraphics[#1]{\SubfilePath #2}}
不幸的是,我无法编译main.tex
,但一切正常sub.tex
:
Use of \Gin@ii doesn't match its definition
答案1
软件包graphics
提供了\graphicspath
允许指定用于搜索图像文件的更多目录:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{subfiles}
\begin{document}
Main file
\graphicspath{{sub/}}
\subfile{sub/sub.tex}
\end{document}
或者\graphicspath
可以为每个自动调用\subfile
:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{subfiles}
\makeatletter
\let\org@subfile\subfile
\renewcommand*{\subfile}[1]{%
\filename@parse{#1}% LaTeX's file name parser
\expandafter
\graphicspath\expandafter{\expandafter{\filename@area}}%
\org@subfile{#1}%
}
\makeatother
\begin{document}
Main file
\subfile{sub/sub.tex}
\end{document}