我想自动执行从子文件夹输入 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}
输出: