我正在与他人合作撰写一本书,我们使用 DropBox。我需要处理一些使用与主项目相同的宏文件的小型测试项目。理想情况下,我希望使用别名链接到它们,这样就不必复制宏文件,这显然是一种痛苦且有限的解决方案。我尝试过使用绝对路径而不是别名,但即使这样也行不通。
我已经创建了一个小项目来演示。
项目.tex
\documentclass[10pt,a5paper]{book}
\input{macros.tex}
\begin{document}
$\srf$
\end{document}
宏指令
% special relativity factor
\def\srf{\gamma\hskip1pt}
我将 macros.tex 放在 project.tex 上方的文件夹中,以模拟不同位置的包含文件并创建别名。这是我尝试排版时的控制台输出。
这是我使用 macros.text 的完整绝对路径时的控制台输出。
我做错了什么吗?有没有更好的方法?有人可以帮忙吗?
答案1
问题
我发现这个问题确实以各种形式出现过,答案各有不同,但并不总是详尽无遗。我认为我提出的问题(唯一的限制是它只适用于 Mac 用户)如果能提供关于创建符号链接(symbolic links)以及别名和符号链接之间的区别的完整答案,将会非常有价值。
别名与符号链接不同。别名是为一般 OSX 用户提供的一种工具。它们的处理方式与符号链接不同,符号链接是 unix 级别的工具,因此需要使用终端来创建它们。任何在底层使用 unix 的软件,例如间接使用 TeXShop,因为它在这种情况下使用底层 TeX 发行版,后者使用特定的 unix 方法,因此当别名不起作用时,符号链接将起作用。
如果您不熟悉符号链接,您需要知道它们是硬编码的,这意味着您可以随意更改原始文件,但您不能重命名或移动它,否则会破坏符号链接。您需要使用新名称和/或新位置创建另一个符号链接。
别名是在 GUI 级别提供的,用于在文件移动和/或重命名时自动进行调整。这很神奇,对吧,那么为什么符号链接这么受关注呢?因为如上所述,无论您使用哪个应用程序来管理 TeX 或 LaTeX 项目(例如 TeXShop),底层 TeX 发行版都使用 unix 设施,必须提供符号链接。
创建符号链接
打开终端并使用以下命令:
ln -s path/to/original/file path/to/symlink/directory
如果任何路径元素的名称中包含空格,则必须使用反斜杠将其转义\
,或者用引号将每个元素(包括空格)括起来,或者只是用引号将整个路径括起来,我认为这是最简单的。
ln -s "the path/to/the original/file" "the path/to/the symlink/directory"
如果您省略目标路径,它将使用当前目录。请注意,通过键入 Command-I 获取文件的信息窗口,可以轻松从 Finder 中的文件获取路径,然后您可以从那里复制其路径。目标文件夹的信息窗口也是如此。
最后,我将提到我正在尝试的解决方案,以防你不喜欢摆弄终端,它是由 Nick Zitzmann 创建的系统服务,可以在以下位置找到
https://github.com/nickzman/symboliclinker/releases
它安装起来非常简单,你可以像使用其他系统服务一样使用它。用两根手指单击(触控板)或按住 Control 键单击或右键单击(鼠标)要链接到的文件,在服务菜单中选择“创建符号链接”选项,它会创建一个看起来像别名的东西,你可以将其拖到需要的地方。就像使用别名一样简单。
附录
在原贴中我提到我尝试使用绝对路径,但也失败了。好吧,我现在意识到这是由于路径中的空格造成的。我刚刚回到那个实验,在路径两边加上双引号,结果一切正常。所以,如果出于某种原因你不想使用符号链接,那么绝对路径总是有用的。