从子文件夹访问模板会引发相对路径问题

从子文件夹访问模板会引发相对路径问题

我想要在我的项目中使用以下文件夹结构:

/template
  template.tex
  template.sty
/doc1
  doc1.tex
/doc2
  doc2.tex

这些doc文档应该访问定义序言部分的模板。因此,doc看起来像

\input{../template/template.tex}
\usepackage{...} %additional packages to load
\begin{document}
...
\end{document}

template.tex 如下所示:

\documentclass[12pt]{scrartcl}
\usepackage{template}
\usepackage{...}

但是,这不起作用,因为template.sty没有找到,这似乎是相对/绝对路径的问题。 有没有什么好办法可以解决这个问题?

答案1

TeX 宏级别的搜索路径

\input@path可以包含额外的搜索路径:

\makeatletter
\providecommand*{\input@path}{}
\g@addto@macro\input@path{{../template/}}
\makeatother
\input{template.tex}
% ...
\begin{document}
...
\end{document}

环境变量

另一种方法是设置环境变量TEXINPUTS以将路径添加../template到 TeX 输入文件的搜索路径,例如 TeX Live/Linux/bash:

export TEXINPUTS=:../template

也可以使用绝对路径代替相对路径。开头的冒号(在 Windows 中可能是分号)表示首先TEXINPUTS搜索配置的路径,然后 TeX 查看../template

泰克家居

模板文件也可以安装在主 TEXMF 树中,例如 TeX Live/Linux:

~/texmf/tex/latex/template/template.tex
~/texmf/tex/latex/template/template.sty

相关内容