有时使用绝对路径来包含前言会很方便。为此,我使用以下“技巧”:
\documentclass[a4paper, 12pt]{article}
\newcommand{\folder}{/path/to/folder}
\input{\folder/preamble}
\begin{document}
\end{document}
现在我的问题是,是否有更优雅的方法来做到这一点,特别是与来自的 flatten 脚本之一兼容的方法自动将 \input{fileX} 替换为 fileX 的内容?
答案1
您可以定义内部宏\input@path
来保存基目录列表:
\makeatletter
\def\input@path{{/path/to/folder/}}
%or: \def\input@path{{/path/to/folder/}{/path/to/other/folder/}}
\makeatother
然后你就可以\input{fileinthatfolder}
在任何地方使用了。如果我没记错的话,它也适用\includegraphics
。
但我不认为上述脚本支持这一点。据我所知,它们只是从文件中获取字符串,而不查看任何宏。
答案2
所以我有一个答案(下面为后人保留了下来),但我认为我现在对这个问题有了更好的理解。你想要的是写下\input{foo}
并让 LaTeX 知道在哪里搜索foo
。马丁的答案提供了一种方法。这里还有一些其他的。
一种方法是在本地 texmf 树中创建一个目录,并将要使用的文件放入其中。因此(假设是 uni 系统)这将类似于~/texmf/
创建一个子目录~/texmf/tex/latex/commonstuff/
,然后将文件放入其中。然后它们将可供使用\input
。不过,请注意名称冲突!
如果由于某种原因您无法移动文件存储的位置,则可以向该目录添加TEXINPUTS
一个变量,该变量存储了 tex 搜索使用和类似命令调用的文件的目录\usepackage
\input
。
进一步阅读:
我认为,如果问题仅仅是某些文件位于包含 tex 文件的文件夹“上方”的文件夹中(当../
下面讨论的技巧有效时),那么这可能是小题大做。
我不太明白这个问题。据我所知,绝对路径可以与 一起使用吗\input
?我刚刚尝试过一次,它有效。
有时使用相对路径更容易,但要知道如何使用它们。例如,很多时候我想插入位于不同文件夹中的图形。假设我有以下内容:
Work
Document
main.tex
Graphics
img.pdf
在main.tex
我可以写作中\includegraphics{../Graphics/img}
,这会找到我的形象:..
进入“上一个级别”。
答案3
Ali Mehrizi 在这个帖子。
解决方案基于import
包,使用subimport
命令:
\subimport{PathToFolder/}{File.tex}.
稍后\input{}
进入“文件”将搜索文件放入指定的文件夹中PathToFolder/
。
答案4
我不确定你是否对此感到满意:只需将你想要包含的文件的符号链接到你想要编译的文件的目录中,然后使用 \input{preamble}。(这可能在 Linux 以外的任何地方都不起作用)