我已经为这个问题苦思冥想好几天了,尝试了\def
、\edef
、\noexpand
、\expandafter
等多种组合。
/tmp/module/
假设我有一个包含module.tex
和 的模块image.png
。在其中module.tex
我定义了一个宏,它除其他功能外,还用于使用\includegraphics
相对路径提取此子模块内的图像:
% module.tex
\newcommand{\myQuizHeader}[1]{
Quiz #1
\includegraphics[width=1.5in]{image.png}
}
然后从我的主文档中执行\import
或\subimport
,然后尝试使用\myQuizHeader
宏:
% main.tex
\documentclass[11pt,letterpaper]{article}
\usepackage{graphicx}
\usepackage{import}
\begin{document}
\import{/tmp/module/}{module.tex}
\myQuizHeader{27}
\end{document}
虽然 import 正确地添加了模块路径以便在模块内部找到与模块相关的文件和图像module.tex
,但离开模块时这些路径会被删除,因此该模块中定义的宏不再正常工作。当我\myQuizHeader{27}
从主文件调用时,找不到图像。
解决这个问题的正确方法是什么?我尝试将\Ginput@path
变量保存到模块内的局部变量中,但随后我陷入了\edef
困境\noexpand
。
非常感谢!