如何在LaTeX中启用绝对路径

Mat*_*her 5 latex

我在〜/ my_files/test.tex下有一个文档,想要在test.tex中包含一些样式信息,可以在〜/ latex/styles/info_hypersetup.tex下找到.

当我在test.tex中包含以下语句时:

%% setting the infos for the pdf
\include{home/helex/latex/styles/info_hypersetup.tex}
Run Code Online (Sandbox Code Playgroud)

运行pdflatex test.test时出现以下错误:

! I can't write on file `~/latex/styles/info_hypersetup.tex.aux'.
Run Code Online (Sandbox Code Playgroud)

我将权限设置为777但这并没有改变任何东西.如果我将info_hypersetup.tex放在test.tex所在的目录结构中,它就可以工作.但我希望将此样式信息用作我所有文档的全局设置,并且不希望将其复制到每个项目中.

谢谢你的帮助.

Cha*_*art 5

~ 不是Unix中的路径,而是Unix shell扩展到$ HOME的路径.

您有几种可能的方法来解决您的问题:

  1. 定义一个宏,\homedir其值在Latex文件中编码为您家的绝对路径(即$ HOME的内容).Nonportable:如果您将文件移动到另一台机器,它可能无法正常工作.
  2. 使用相对路径:这是您的解决方案所做的.如果您移动文件的子层次结构,并且小心它们是自包含的,这很有效.
  3. 例如thisfilesystem.sty,使用各种目录的硬编码值创建自己的样式文件.然后,您可以只在机器之间更改此值.这也可以从Makefile自动创建.
  4. 使用\write18运行echo $HOME并绑定这个给你\homedir宏.它是可移植的,但我不建议:你应该养成避免的习惯\write18,因为它是一个可怕的安全漏洞.

我推荐#2.


Mat*_*her 1

这是我的肮脏的解决方案(因为很多人说不要使用输入,但我想继续:)):

\newcommand{\home}{../..}
\input{\home/latex/styles/info_hypersetup}
Run Code Online (Sandbox Code Playgroud)

如果您发现更好的东西,请告诉我。设置 output_any = a int texmf.conf 的提示不起作用。我用的是ubuntu。