是否可以从子文件内的子文件夹输入 tex 文件?

是否可以从子文件内的子文件夹输入 tex 文件?

我想自动执行从子文件夹输入 tex 文件的过程。以前,我设法自动将“images”子文件夹中的图像包含到每个子文件的子文件夹中。我想对 tex 文件执行同样的操作。请看一下: 是否可以使用带有子文件夹、子文件内的相对路径的 includegraphics ?

现在我想添加一个修饰符,以便

%subfolder1/subfile1.tex
\input{fig1.tex}

subfolder1/fig1.tex在文件中添加,而

%subfolder2/subfile1.tex
\input{fig1.tex}

将添加subfolder2/fig1.tex到我的文件中。

答案1

您可以创建一个新命令\subinput{}来处理此问题。基本上,这是一个包装器,\input{}它为相关路径添加前缀。

文件层次结构示例如下:

<main filename>.tex
sub/
    sub.tex
    sub2.tex
    img/
        tigerx.eps

sub/sub.tex

\documentclass[../<main filename>.tex]{subfiles}

\begin{document}
  Sub file.

  Here's a tiger:

  \includegraphics[width=\linewidth]{tigerx}

  \subinput{sub2}
\end{document}

sub/sub2.tex

% sub/sub2.tex
That is some tiger!
\endinput

<main filename>.tex

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{subfiles}

\makeatletter
\let\org@subfile\subfile
\newcommand*\subinput[1]{\input{#1}}
\renewcommand*{\subfile}[1]{%
  \filename@parse{#1}% LaTeX's file name parser
  \expandafter
  \graphicspath\expandafter{\expandafter{\filename@area img/}}%
  \renewcommand*\subinput[1]{%
    \expandafter
    \input\expandafter{\expandafter\filename@area ##1}%
  }%
  \org@subfile{#1}%
}
\makeatother

\begin{document}
  Main file
  \subfile{sub/sub}
\end{document}

输出:

带有 sub-sub 注释的子老虎

相关内容