我可以使用完整路径来执行 \usepackage 吗?

我可以使用完整路径来执行 \usepackage 吗?

顾名思义 - 我可以做类似的事情吗:

\usepackage{/home/nebffa/Desktop/maths/questions/fillwithlines.sty}

当我尝试这样做时,LaTeX 会向我抛出错误。

答案1

与其使用完整路径,不如将文件放在 TeX 可以找到的适当位置。看来你是 *NIX 用户,所以你可以尝试

$ less `kpsewhich texmf.cnf`

知道这些是哪些地方。这个文件中有很多注释,它们会对你有所帮助。或者,您可以使用 TEXMFHOME 或 TEXINPUTS 环境变量。它们的用法texmf.cnf也详细说明了。

您可能希望区分软件包的三种使用情况mypackage

  • 全站安装,然后,它会适应将您的 TeX 文件存储在站点范围的可用目录中,这${TEXMFLOCAL}/tex/latex/mypackage可能是一个不错的选择。(使用kpsexpand来了解要使用哪个实际路径,如kpsexpand '${TEXMFLOCAL}/tex/latex/mypackge')。

  • 用户特定安装,则目录${TEXMFHOME}/tex/latex/mypackage看起来合适。

  • 发展,在开发软件包时,您可能希望避免重复安装 TeX 相关文件,而希望将适当的位置添加到TEXINPUTS环境变量中。

该文件texmf.cnf包含有关这些变量的有用信息。

答案2

\usepackage{<file>}可以采用完整路径,但要求您删除文件扩展名。也就是说,它假定\usepackage{<path>/file}将包含file.sty位于 中的文件<path>,并自行附加扩展名(称为\@pkgextension)。因此,删除.sty

以下 MWE 重现了该问题:

\documentclass{article}
\usepackage{graphicx.sty}
\begin{document} 
Test
\end{document}

产生错误信息:

!LaTeX 错误:未找到文件“graphicx.sty.sty”。

输入 X 退出或继续,
或输入新名称。(默认扩展名:sty)

相关内容