latex 中的动态路径

latex 中的动态路径

我试图将序言链接到页眉中使用的一些图片。我的问题是我在多个文档中使用了相同的序言。

假设序言和所需的图片位于顶部文件夹中,并且我有两个不同的主文件用于两个不同的报告,每个文件位于自己的子文件夹中。

当我调用序言时,我收到一个错误,告诉我图片的路径不正确。据我所知,似乎我需要两个序言,其中包含从包含文件夹到序言图片的路径。(这有点剥夺了序言的概念)

文件夹结构:

work
  preamble
    pics
  project1
    main.tex
  project2
    main.tex

我希望在我的序言中我能做到这一点

\includegraphics[scale=0.5]{pics/image.png}

我已经尝试设置这个命令main.tex

\newcommand{\folder}{/path/to/pic}
\includegraphics[scale=0.5]{\folder/pics/image.png}

但那也不起作用。

有人知道如何解决这个问题吗?(我希望我已经把问题说清楚了)

答案1

您可以使用以下方式定义搜索路径\graphicspath

我想你可以在序言中写一些类似的东西:

\graphicspath{{./}{/path/to/pic/}}

\includegraphics将首先在当前目录中搜索 ( ./),然后在/path/to/pic

这样你的图片就可以用作:

\includegraphics[scale=.5]{pics/image}

image.png首先搜索为./pics/image.png,如果没有找到,则搜索为/path/to/pic/pics/image.png

提示:你不应该添加'.png':image而是写image.png


其他可能性:

您必须将您的“序言”转换为 TeX 包,方法是将所有序言文件夹移动到您的个人 TEXMF 树中(或者,如果您在 Linux 上工作,则创建符号链接)或在您的序言文件夹中进行 TeX 分发搜索。


第三种选择:

聪明的操作系统,您可以创建符号链接指向前导文件夹,并使用相对路径访问图片。如果您移动主文件夹,则只需调整此链接即可。

在 Linux 上,名为“文件夹”的符号链接创建如下:

ln -s /path/to/target/folder folder

答案2

如果您添加\RequirePackage{currfile}到每个main.tex文件中,那么如何使用类似于\let\preamblepath\currfiledir序言中的内容,然后您可以这样做\includegraphics{\preamblepath/pics/image.png}

或者,不带currfile,在每个中main.tex,做

\def\preamblepath{../preamble}
\input{\preamblepath/preamble.tex}

\preamblepath然后你仍然可以用同样的方式参考。

答案3

我确实找到了解决方案,Cyber​​Singularity 的答案为我指明了正确的方向。

这实际上非常简单。

如果我在 documentclass 之前定义 newcommand \folder 它就可以工作。:)

相关内容