是否可以在子文件内使用带有相对路径的 includegraphics?

是否可以在子文件内使用带有相对路径的 includegraphics?

问题

我有许多文档想要合并到一个文档中。例如,它可以是一种年度回顾,其中包含许多使用相同序言的不同来源,如讲座、实验室、作业、测试等...

我尝试使用该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,并IncludeGraphicsmain.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}

相关内容