\input 和绝对路径

\input 和绝对路径

有时使用绝对路径来包含前言会很方便。为此,我使用以下“技巧”:

\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 以外的任何地方都不起作用)

相关内容